Skip to main content
Databricks Lakehouse 平台将数据、分析和 AI 统一在一个平台上。
本指南提供了使用 Databricks 聊天模型 的快速入门概述。

概述

ChatDatabricks 类封装了托管在 Databricks 模型服务 上的聊天模型端点。此示例笔记本展示了如何封装您的服务端点,并在 LangChain 应用程序中将其用作聊天模型。

集成详情

模型特性

支持的方法

ChatDatabricks 支持 ChatModel 的所有方法,包括异步 API。

端点要求

ChatDatabricks 封装的服务端点必须具有 OpenAI 兼容的聊天输入/输出格式(参考)。只要输入格式兼容,ChatDatabricks 就可以用于托管在 Databricks 模型服务 上的任何端点类型:
  1. 基础模型 - 精心挑选的最先进基础模型列表,例如 DRBX、Llama3、Mixtral-8x7B 等。这些端点无需任何设置即可在您的 Databricks 工作区中直接使用。
  2. 自定义模型 - 您还可以通过 MLflow 将自定义模型部署到服务端点,可以选择 LangChain、Pytorch、Transformers 等框架。
  3. 外部模型 - Databricks 端点可以作为代理服务托管在 Databricks 外部的模型,例如 OpenAI GPT4 等专有模型服务。

设置

要访问 Databricks 模型,您需要创建一个 Databricks 账户、设置凭据(仅当您在 Databricks 工作区外部时)并安装所需的包。

凭据(仅当您在 Databricks 外部时)

如果您在 Databricks 内部运行 LangChain 应用程序,可以跳过此步骤。 否则,您需要手动将 Databricks 工作区主机名和个人访问令牌分别设置为 DATABRICKS_HOSTDATABRICKS_TOKEN 环境变量。有关如何获取访问令牌,请参阅 身份验证文档

安装

LangChain Databricks 集成位于 databricks-langchain 包中。
我们首先演示如何使用 ChatDatabricks 查询作为基础模型端点托管的 DBRX-instruct 模型。 对于其他类型的端点,端点本身的设置方式有所不同,但是,一旦端点准备就绪,使用 ChatDatabricks 查询它的方式没有区别。有关其他类型端点的示例,请参阅本笔记本底部。

实例化

调用

链式调用

与其他聊天模型类似,ChatDatabricks 可以作为复杂链的一部分使用。

调用(流式传输)

异步调用

工具调用

ChatDatabricks 支持 OpenAI 兼容的工具调用 API,允许您描述工具及其参数,并让模型返回一个 JSON 对象,其中包含要调用的工具和该工具的输入。工具调用对于构建使用工具的链和代理,以及更普遍地从模型获取结构化输出非常有用。 通过 ChatDatabricks.bind_tools,我们可以轻松地将 Pydantic 类、字典模式、LangChain 工具甚至函数作为工具传递给模型。在底层,这些被转换为 OpenAI 兼容的工具模式,如下所示:
并在每次模型调用中传递。

封装自定义模型端点

先决条件: 端点准备就绪后,使用模式与基础模型完全相同。

封装外部模型

先决条件:创建代理端点 首先,创建一个新的 Databricks 服务端点,将请求代理到目标外部模型。对于代理外部模型,端点创建应该相当快速。 这需要在 Databricks 密钥管理器中注册您的 OpenAI API 密钥,如下所示:
有关如何设置 Databricks CLI 和管理密钥,请参阅 docs.databricks.com/en/security/secrets/secrets.html
一旦端点状态变为 “Ready”,您就可以以与其他类型端点相同的方式查询该端点。

Databricks 上的函数调用

Databricks 函数调用是 OpenAI 兼容的,仅在模型服务期间作为基础模型 API 的一部分可用。 有关支持的模型,请参阅 Databricks 函数调用介绍
有关如何在链中使用 UC 函数,请参阅 Databricks Unity Catalog

API 参考

有关所有 ChatDatabricks 特性和配置的详细文档,请访问 API 参考:api-docs.databricks.com/python/databricks-ai-bridge/latest/databricks_langchain.html#databricks_langchain.ChatDatabricks