AI 代理工具

重要

此功能目前以公共预览版提供。

本文概述了如何使用马赛克 AI 代理框架生成 AI 代理工具。

AI 代理工具使代理能够执行语言生成以外的任务,例如检索结构化或非结构化数据和执行自定义代码。

有关 AI 代理的简介,请参阅 什么是复合 AI 系统和 AI 代理?

Unity 目录函数工具与代理代码工具

若要使用马赛克 AI 代理框架创建工具,可以使用以下方法的任意组合:

方法 说明
Unity Catalog 函数 - 在 Unity Catalog 中定义和管理,并具有内置的安全性和合规功能
- 提供更便捷的可发现性、治理和再利用
- 非常适合对大型数据集应用转换和聚合
代理代码工具 - 在 AI 代理的代码中定义
- 可用于调用 REST API、使用任意代码或执行低延迟工具
- 缺少函数的内置治理和可发现性

这两种方法都与自定义 Python 代理或代理创作库(如 LangGraph)兼容。

创建 AI 代理工具

了解如何创建 AI 代理工具,让代理执行自定义 Python 代码。 请参阅 使用 Unity 目录函数创建自定义 AI 代理工具。

代理工具示例

有关代理工具的示例,请参阅以下文章:

向代理添加 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;