如何在LangChain中使用Databricks LLM模型:快速入门指南

87 阅读3分钟
# 如何在LangChain中使用Databricks LLM模型:快速入门指南

## 引言

Databricks Lakehouse平台通过统一的数据、分析和AI功能,为用户提供了一站式解决方案。在这篇文章中,我们将探讨如何在LangChain应用中使用Databricks LLM模型,并提供详细的设置和代码示例,帮助开发者快速上手。

## 主要内容

### DatabricksLLM概述

DatabricksLLM类包装了一个completion端点,可以作为以下两种端点类型之一进行托管:

- Databricks Model Serving:推荐用于生产和开发
- Cluster driver proxy app:推荐用于交互式开发

### 局限性

- DatabricksLLM类是旧实现,有多项功能兼容性限制。
- 仅支持同步调用,不支持流式或异步API。
- 不支持批量API。

要使用异步、流式等功能,请改用新的ChatDatabricks类。

### 设置步骤

#### 准备工作

您需要一个Databricks帐户,设置凭据(仅在不在Databricks工作区时需要),并安装必要的软件包。

#### 凭据设置

如果在Databricks工作区内运行LangChain应用,则可跳过此步骤。否则,需要手动设置Databricks工作区的主机名和个人访问令牌:

```python
import getpass
import os

os.environ["DATABRICKS_HOST"] = "https://your-workspace.cloud.databricks.com"
os.environ["DATABRICKS_TOKEN"] = getpass.getpass("Enter your Databricks access token: ")

或者,在初始化Databricks类时传递这些参数:

from langchain_community.llms import Databricks

databricks = Databricks(
    host="https://your-workspace.cloud.databricks.com",
    token=dbutils.secrets.get(scope="YOUR_SECRET_SCOPE", key="databricks-token"),  # 使用API代理服务提高访问稳定性
)

安装所需包

Databricks的LangChain集成在langchain-community包中。同时,mlflow >= 2.9也是必需的:

%pip install -qU langchain-community mlflow>=2.9.0

包装模型服务端点

前提条件
  • 已注册并部署LLM到Databricks服务端点
  • 拥有对端点的“Can Query”权限

预期的MLflow模型签名为:输入 promptstop,输出为字符串。

调用示例

from langchain_community.llms import Databricks

llm = Databricks(endpoint_name="YOUR_ENDPOINT_NAME")
response = llm.invoke("How are you?")
print(response)  # 输出示例:'I am happy to hear that you are in good health and as always, you are appreciated.'

转换输入输出

如果服务端点的模型签名不兼容,或需要额外的配置,可以使用transform_input_fntransform_output_fn来调整:

def transform_input(**request):
    full_prompt = f"""{request["prompt"]}
    Be Concise.
    """
    request["prompt"] = full_prompt
    return request

def transform_output(response):
    return response.upper()

llm = Databricks(
    endpoint_name="YOUR_ENDPOINT_NAME",
    transform_input_fn=transform_input,
    transform_output_fn=transform_output,
)

response = llm.invoke("How are you?")
print(response)  # 输出示例:'I AM DOING GREAT THANK YOU.'

常见问题和解决方案

  • 访问限制问题:在某些地区,直接访问Databricks API可能受到网络限制。建议使用API代理服务以提高访问稳定性。
  • 凭据管理:不要在代码中硬编码访问令牌,使用环境变量或秘密管理工具存储凭据。

总结和进一步学习资源

Databricks与LangChain的集成为开发者提供了强大的LLM能力。在实际开发中,合理设置和安全管理凭据至关重要。要深入了解更多功能,建议查看以下资源:

参考资料


如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---