使用 Unity 目录函数创建自定义 AI 代理工具
重要
此功能目前以公共预览版提供。
了解如何使用 Unity 目录函数创建 AI 代理工具,以执行特定于任务的自定义 Python 代码。
什么是 UCFunctionToolkit
Databricks 建议使用 UCFunctionToolkit
来创建和使用使用 Unity 目录函数定义的代理工具。
UCFunctionToolkit
是 Unity 目录 AI 核心库的关键组成部分,它简化了创建和使用 Unity 目录函数作为 LangChain 等 AI 框架中的工具的过程。 它充当 Unity 目录函数和 AI 代理之间的桥梁。
设置后,可以创建 Unity 目录函数,使用 UCFunctionToolkit
包装它们,并将其用作 AI 代理中的工具。 此抽象允许跨创作库创建一致的工具,并允许自动跟踪检索器函数等功能,从而更轻松地查看检索的文档和相关数据。
有关详细信息和示例,请参阅 Unity 目录的 AI 核心库快速入门。
定义 Unity 目录函数
若要使用 UCFunctionToolkit
,必须安装 Unity 目录 AI 核心库和任何必要的集成包。
## Install UCToolkit for LangChain with the Databricks extra
# Install the core package for databricks
%pip install unitycatalog-ai[databricks]
# Install the LangChain integration
%pip install unitycatalog-langchain[databricks]
注意
此示例使用 LangChain,必须为代理库安装正确的包。 例如,OpenAI 代理应使用 %pip install unitycatalog-openai[databricks]
。 请参阅 Unity Catalog AI 集成。
创建包含工具逻辑的 Unity 目录函数。
from unitycatalog.ai.core.databricks import DatabricksFunctionClient
CATALOG = "my_catalog"
SCHEMA = "my_schema"
def add_numbers(number_1: float, number_2: float) -> float:
"""
A function that accepts two floating point numbers adds them,
and returns the resulting sum as a float.
Args:
number_1 (float): The first of the two numbers to add.
number_2 (float): The second of the two numbers to add.
Returns:
float: The sum of the two input numbers.
"""
return number_1 + number_2
function_info = client.create_python_function(
func=add_numbers,
catalog=CATALOG,
schema=SCHEMA,
)
将函数用作工具
创建函数后,可以通过将其包装到工具包中,使 AI 创作库可以访问它。 以下示例使用 LangChain,但类似的方法可以应用于其他框架:
from unitycatalog.ai.langchain.toolkit import UCFunctionToolkit
# Define the UC function to be used as a tool
func_name = f"{CATALOG}.{SCHEMA}.add_numbers"
# Create a toolkit with the UC function
toolkit = UCFunctionToolkit(function_names=[func_name], client=client)
tools = toolkit.tools
有关 UCFunctionToolKit
的详细信息,请参阅 Unity 目录文档。
内置 Python 执行程序工具
Azure Databricks 还提供内置的 Unity 目录函数,允许 AI 代理在查询中动态执行 Python 代码。
默认情况下,system.ai.python_exec
可用,可与任何其他基于 Unity 目录函数的工具一样使用。
以下示例演示如何在 SQL 查询中使用 python_exec
函数:
SELECT python_exec("""
import random
numbers = [random.random() for _ in range(10)]
print(numbers)
""")