查询已部署的 Mosaic AI 代理

了解如何将请求发送到部署到模型服务终结点的代理。 Databricks 提供了多个查询方法,以满足不同的用例和集成需求。

若要了解如何部署代理,请参阅 为生成式 AI 应用程序部署代理

选择最适合用例的查询方法:

方法 主要优点
Databricks OpenAI 客户端 (建议) 原生集成、全面功能支持、流媒体处理功能
MLflow 部署客户端 现有 MLflow 模式和已建立的机器学习管道
REST API 与 OpenAI 兼容、与语言无关、适用于现有工具

Databricks 建议为新应用程序使用 Databricks OpenAI 客户端 。 与需要 OpenAI 兼容终结点的平台集成时,请选择 REST API

Databricks 建议使用 Databricks OpenAI 客户端查询已部署的代理。 根据您已部署代理的 API,您将使用响应客户端或聊天完成功能客户端:

ResponsesAgent 端点

对使用 ResponsesAgent 接口创建的代理使用以下示例,这是生成代理的建议方法。

from databricks.sdk import WorkspaceClient

input_msgs = [{"role": "user", "content": "What does Databricks do?"}]
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

w = WorkspaceClient()
client = w.serving_endpoints.get_open_ai_client()

## Run for non-streaming responses. Invokes `predict`
response = client.responses.create(model=endpoint, input=input_msgs)
print(response)

## Include stream=True for streaming responses. Invokes `predict_stream`
streaming_response = client.responses.create(model=endpoint, input=input_msgs, stream=True)
for chunk in streaming_response:
  print(chunk)

如果想传入 custom_inputsdatabricks_options,可以通过 extra_body 参数来添加它们:

streaming_response = client.responses.create(
    model=endpoint,
    input=input_msgs,
    stream=True,
    extra_body={
        "custom_inputs": {"id": 5},
        "databricks_options": {"return_trace": True},
    },
)
for chunk in streaming_response:
    print(chunk)

ChatAgent 或 ChatModel 端点

对使用 旧 ChatAgent 或 ChatModel 接口创建的代理使用以下示例,这些接口仍受支持,但不建议用于新代理。

from databricks.sdk import WorkspaceClient

messages = [{"role": "user", "content": "What does Databricks do?"}]
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

w = WorkspaceClient()
client = w.serving_endpoints.get_open_ai_client()

## Run for non-streaming responses. Invokes `predict`
response = client.chat.completions.create(model=endpoint, messages=messages)
print(response)

## Include stream=True for streaming responses. Invokes `predict_stream`
streaming_response = client.chat.completions.create(model=endpoint, messages=messages, stream=True)
for chunk in streaming_response:
  print(chunk)

如果想传入 custom_inputsdatabricks_options,可以通过 extra_body 参数来添加它们:

streaming_response = client.chat.completions.create(
    model=endpoint,
    messages=messages,
    stream=True,
    extra_body={
        "custom_inputs": {"id": 5},
        "databricks_options": {"return_trace": True},
    },
)
for chunk in streaming_response:
    print(chunk)

MLflow 部署客户端

在现有 MLflow 工作流和管道中工作时,请使用 MLflow 部署客户端。 此方法自然与 MLflow 跟踪和试验管理集成。

以下示例演示如何使用 MLflow 部署客户端查询代理。 对于新应用程序,Databricks 建议使用 Databricks OpenAI 客户端,以便利用其增强功能和本机集成。

根据你已部署代理的 API,你将使用 ResponsesAgent 或 ChatAgent 格式。

ResponsesAgent 端点

对使用 ResponsesAgent 接口创建的代理使用以下示例,这是生成代理的建议方法。

from mlflow.deployments import get_deploy_client

client = get_deploy_client()
input_example = {
    "input": [{"role": "user", "content": "What does Databricks do?"}],
    ## Optional: Include any custom inputs
    ## "custom_inputs": {"id": 5},
    "databricks_options": {"return_trace": True},
}
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

## Call predict for non-streaming responses
response = client.predict(endpoint=endpoint, inputs=input_example)

## Call predict_stream for streaming responses
streaming_response = client.predict_stream(endpoint=endpoint, inputs=input_example)

ChatAgent 或 ChatModel 端点

对于使用 旧 ChatAgent 或 ChatModel 接口创建的代理,这些接口仍受支持,但不建议用于新代理。

from mlflow.deployments import get_deploy_client

client = get_deploy_client()
input_example = {
    "messages": [{"role": "user", "content": "What does Databricks do?"}],
    ## Optional: Include any custom inputs
    ## "custom_inputs": {"id": 5},
    "databricks_options": {"return_trace": True},
}
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

## Call predict for non-streaming responses
response = client.predict(endpoint=endpoint, inputs=input_example)

## Call predict_stream for streaming responses
streaming_response = client.predict_stream(endpoint=endpoint, inputs=input_example)

client.predict()client.predict_stream() 调用您在撰写代理时定义的代理函数。 请参阅 流式处理响应

REST API

Databricks REST API 为与 OpenAI 兼容的模型提供终结点。 这样,就可以使用 Databricks 代理为需要 OpenAI 接口的应用程序提供服务。

此方法非常适合:

  • 与语言无关的使用 HTTP 请求的应用程序
  • 与需要 OpenAI 兼容的 API 的第三方平台集成
  • 使用最少的代码更改从 OpenAI 迁移到 Databricks

使用 Databricks OAuth 令牌或个人访问令牌(PAT)通过 REST API 进行身份验证。 以下示例使用 Databricks OAuth 令牌,有关更多选项和信息,请参阅 Databricks 身份验证文档

ResponsesAgent 端点

对使用 ResponsesAgent 接口创建的代理使用以下示例,这是生成代理的建议方法。 REST API 调用等效于:

  • 使用 Databricks OpenAI 客户端与 responses.create
  • 将 POST 请求发送到特定终结点的 URL(例如: https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations)。 在终结点的模型服务页和 模型服务文档中查找更多详细信息。
curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "input": [{ "role": "user", "content": "hi" }],
    "stream": true
  }'

如果想传入 custom_inputsdatabricks_options,可以通过 extra_body 参数来添加它们:

curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "input": [{ "role": "user", "content": "hi" }],
    "stream": true,
    "extra_body": {
      "custom_inputs": { "id": 5 },
      "databricks_options": { "return_trace": true }
    }
  }'

ChatAgent 或 ChatModel 端点

对于使用 旧 ChatAgent 或 ChatModel 接口创建的代理,这些接口仍受支持,但不建议用于新代理。 这等效于:

  • 使用 Databricks OpenAI 客户端与 chat.completions.create
  • 将 POST 请求发送到特定终结点的 URL(例如: https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations)。 在终结点的模型服务页和 模型服务文档中查找更多详细信息。
curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/chat/completions \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "messages": [{ "role": "user", "content": "hi" }],
    "stream": true
  }'

如果想传入 custom_inputsdatabricks_options,可以通过 extra_body 参数来添加它们:

curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/chat/completions \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "messages": [{ "role": "user", "content": "hi" }],
    "stream": true,
    "extra_body": {
      "custom_inputs": { "id": 5 },
      "databricks_options": { "return_trace": true }
    }
  }'

后续步骤

GenAI 的生产监控