AI 代理工具
重要
此功能目前以公共预览版提供。
本文概述了如何使用马赛克 AI 代理框架生成 AI 代理工具。
AI 代理工具使代理能够执行语言生成以外的任务,例如检索结构化或非结构化数据和执行自定义代码。
有关 AI 代理的简介,请参阅 什么是复合 AI 系统和 AI 代理?。
Unity 目录函数工具与代理代码工具
若要使用马赛克 AI 代理框架创建工具,可以使用以下方法的任意组合:
方法 | 说明 |
---|---|
Unity Catalog 函数 | - 在 Unity Catalog 中定义和管理,并具有内置的安全性和合规功能 - 提供更便捷的可发现性、治理和再利用 - 非常适合对大型数据集应用转换和聚合 |
代理代码工具 | - 在 AI 代理的代码中定义 - 可用于调用 REST API、使用任意代码或执行低延迟工具 - 缺少函数的内置治理和可发现性 |
这两种方法都与自定义 Python 代理或代理创作库(如 LangGraph)兼容。
创建 AI 代理工具
了解如何创建 AI 代理工具,让代理执行自定义 Python 代码。 请参阅 使用 Unity 目录函数创建自定义 AI 代理工具。
代理工具示例
有关代理工具的示例,请参阅以下文章:
- 结构化数据检索工具 允许代理查询结构化数据源(如 SQL 表)。
- 非结构化数据检索工具 允许代理查询非结构化数据源(如文本文库)以执行检索扩充生成。
- 外部连接工具 将代理工具连接到外部服务和 API。
向代理添加 Unity 目录工具
与代理代码中定义的代理代码工具不同,必须将 Unity 目录工具显式添加到代理中,使其可供使用。
Databricks 建议使用 UCFunctionToolkit
将 Unity 目录工具与代理创作框架和 SDK 集成。 请参阅 使用 Unity 目录函数创建自定义 AI 代理工具。
还可以使用 AI Playground 快速将 Unity Catalog 工具添加到代理中以模拟行为。 请参阅 AI Playground 中的原型工具调用代理。
通过提供清晰的文档来改进工具调用
记录良好的工具可帮助 AI 代理了解何时以及如何有效地使用工具。 记录工具参数并返回值时,请遵循以下最佳做法:
- 对于 Unity 目录函数,请使用
COMMENT
来描述工具功能和参数。 - 明确定义预期的输入和输出。
- 提供有意义的说明以提高可用性。
示例:有效的工具文档
以下示例显示了查询结构化表的 Unity 目录函数工具的有效 COMMENT
字符串。
CREATE OR REPLACE FUNCTION main.default.lookup_customer_info(
customer_name STRING COMMENT 'Name of the customer whose info to look up.'
)
RETURNS STRING
COMMENT 'Returns metadata about a specific customer including their email and ID.'
RETURN SELECT CONCAT(
'Customer ID: ', customer_id, ', ',
'Customer Email: ', customer_email
)
FROM main.default.customer_data
WHERE customer_name = customer_name
LIMIT 1;
示例:无效的工具文档
以下示例缺少重要详细信息,这使得 AI 代理难以有效地使用该工具:
CREATE OR REPLACE FUNCTION main.default.lookup_customer_info(
customer_name STRING COMMENT 'Name of the customer.'
)
RETURNS STRING
COMMENT 'Returns info about a customer.'
RETURN SELECT CONCAT(
'Customer ID: ', customer_id, ', ',
'Customer Email: ', customer_email
)
FROM main.default.customer_data
WHERE customer_name = customer_name
LIMIT 1;