使用 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)
""")