本页演示如何使用 Agent Framework Python API 中的deploy()函数将 AI 代理部署到马赛克 AI 模型服务。
在马赛克 AI 模型服务上部署代理具有以下优势:
- 模型服务管理自动缩放、日志记录、版本控制和访问控制,使你能够专注于开发质量代理。
- 主题专家可以使用评审应用与部署的代理交互,并提供反馈,你可以将其纳入监视和评估。
- 可以通过评估实时流量来监视代理。 尽管用户流量不包括基本情况,但 LLM 评委(和你创建的自定义指标)执行无监督评估。
Requirements
使用来自
deploy()的databricks.agentsAPI 部署代理时,需使用 MLflow 2.13.1 或更高版本。将 AI 代理注册到 Unity Catalog。 请参阅将代理注册到 Unity Catalog。
从 Databricks 笔记本外部部署代理需要
databricks-agentsSDK 版本 0.12.0 或更高版本。终结点创建者(部署代理的用户)必须在选中的 Unity Catalog 架构上拥有权限,以便在部署时存储推理表。 这可确保可以在架构中创建相关的评估和日志记录表。 请参阅 “启用和禁用推理表”。
安装
databricks-agentsSDK。%pip install databricks-agents dbutils.library.restartPython()
使用 deploy() 部署代理
使用 deploy() 将代理部署到模型服务终结点。
from databricks import agents
deployment = agents.deploy(uc_model_name, uc_model_info.version)
# Retrieve the query endpoint URL for making API requests
deployment.query_endpoint
警告
如果要从存储在 Databricks Git 文件夹中的笔记本部署代理,则默认情况下,MLflow 3 实时跟踪将不起作用。
若要启用实时跟踪,请先将试验设置为非 Git 关联的试验 mlflow.set_experiment() ,然后再运行 agents.deploy()。
默认情况下,deploy() 函数执行以下作:
deploy() 操作 |
Description |
|---|---|
| 创建 CPU 模型服务终结点 | 通过模型服务终结点为应用程序提供服务,使面向用户的应用程序可以访问代理。 |
| 预配生存期较短的服务主体凭据 | Databricks 自动提供具有最低权限的短期凭据,以访问记录模型时定义的 Databricks 管理的资源。 Databricks 检查终结点所有者在颁发凭据之前是否具有必要的权限,以防止特权升级和未经授权的访问。 请参阅 AI 代理的身份验证。 如果您的代理依赖于非 Databricks 管理的资源,则可以将包含机密的环境变量传递给 deploy()。 请参阅配置从模型服务终结点对资源的访问权限。 |
| 启用审阅应用 | 允许利益干系人与代理交互并提供反馈。 请参阅 “使用评审应用程序进行生成式 AI 应用的人工评审 (MLflow 2)”。 |
| 启用推理表 | 通过记录请求输入和响应来监视和调试代理。
|
| 记录 REST API 请求并查看应用反馈 | 将 API 请求和反馈记录到推理表。
|
| 使用 MLflow 3 启用实时跟踪 | 需要使用 MLflow 3.0 或更高版本。 除了记录从部署的代理到推理表的跟踪以进行长期存储外,Databricks 还记录从部署代理到 MLflow 试验的跟踪以实现实时可见性。 这可以减少监视和调试延迟。
|
| 为 Gen AI 启用生产监视(beta 版) | 需要注册 GenAI 生产监控 Beta版。
|
Note
部署可能需要长达 15 分钟才能完成。 原始 JSON 有效负载需要 10 到 30 分钟才能到达,大约每隔一小时从原始有效负载处理带格式的日志。
自定义部署
若要自定义部署,可以将其他参数传递给 deploy()。 例如,可以通过传递 scale_to_zero_enabled=True,为空闲终结点启用缩放到零功能。 这降低了成本,但增加了为初始查询提供服务的时间。
有关更多参数,请参阅 Databricks Agents Python API。
检索和删除代理部署
检索或管理现有代理部署:
from databricks.agents import list_deployments, get_deployments, delete_deployment
# Print all current deployments
deployments = list_deployments()
print(deployments)
# Get the deployment for a specific agent model name and version
agent_model_name = "" # Set to your Unity Catalog model name
agent_model_version = 1 # Set to your agent model version
deployment = get_deployments(model_name=agent_model_name, model_version=agent_model_version)
# Delete an agent deployment
delete_deployment(model_name=agent_model_name, model_version=agent_model_version)
依赖资源的身份验证
AI 代理通常需要向其他资源进行身份验证才能完成任务。 例如,代理可能需要访问矢量搜索索引来查询非结构化数据。
有关所有身份验证方法以及何时使用它们的综合信息,请参阅 AI 代理的身份验证。
监视已部署的代理
将代理部署到 Databricks 模型服务后,可以使用 AI 网关推理表监视已部署的代理。 推理表包含来自评审应用的请求、响应、代理跟踪和代理反馈的详细日志。 利用此信息,可以调试问题、监视性能,并创建黄金数据集进行脱机评估。
Important
如果在调用 agents.deploy()时在开发环境中安装了 MLflow 3,终结点会将 MLflow 跟踪 实时记录到调用 agents.deploy()时激活的 MLflow 实验。 可以在部署之前调用 mlflow.set_experiment() 更改活动试验。
有关更多详细信息 ,请参阅 MLflow 文档 。
请参阅使用跟踪调试和观察应用。
获取已部署的应用程序
下面介绍如何获取已部署的代理。
from databricks.agents import list_deployments, get_deployments
# Get the deployment for specific model_fqn and version
deployment = get_deployments(model_name=model_fqn, model_version=model_version.version)
deployments = list_deployments()
# Print all the current deployments
deployments
提供有关已部署代理人的反馈(实验性)
部署代理时,代理框架还会在同一端点中创建并部署一个“反馈”模型版本,你可以查询该版本以提供有关代理应用程序的反馈。 反馈条目显示为与代理服务终结点关联的推理表中的请求行。
请注意,此行为是 实验性的:Databricks 可能会提供一流的 API,以便将来提供有关已部署代理的反馈,将来的功能可能需要迁移到此 API。
此 API 的限制包括:
- 反馈 API 缺少输入验证 - 即使传递了无效的输入,它始终会成功响应。
- 反馈 API 要求传入由 Databricks 生成的用于您要提供反馈的代理终结点请求的
request_id。 若要获取databricks_request_id,请在对代理服务终结点的原始请求中包含{"databricks_options": {"return_trace": True}}。 然后,代理终结点响应包含与databricks_request_id请求关联的请求,以便在提供有关代理响应的反馈时将请求 ID 传递回反馈 API。 - 使用推理表收集反馈。 请参阅 推理表限制。
以下示例请求提供有关名为“your-agent-endpoint-name”的代理终结点的反馈,并假定 DATABRICKS_TOKEN 环境变量设置为 Databricks REST API 令牌。
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '
{
"dataframe_records": [
{
"source": {
"id": "user@company.com",
"type": "human"
},
"request_id": "573d4a61-4adb-41bd-96db-0ec8cebc3744",
"text_assessments": [
{
"ratings": {
"answer_correct": {
"value": "positive"
},
"accurate": {
"value": "positive"
}
},
"free_text_comment": "The answer used the provided context to talk about Lakeflow Declarative Pipelines"
}
],
"retrieval_assessments": [
{
"ratings": {
"groundedness": {
"value": "positive"
}
}
}
]
}
]
}' \
https://<workspace-host>.databricks.com/serving-endpoints/<your-agent-endpoint-name>/served-models/feedback/invocations
可以在text_assessments.ratings和retrieval_assessments.ratings字段中传递附加或不同的键值对,以提供不同类型的反馈。 在此示例中,反馈有效负载指示代理对 ID 为 573d4a61-4adb-41bd-96db-0ec8cebc3744 的请求的响应正确无误,且位于检索器工具提取的上下文中。