メインコンテンツまでスキップ

Unity Catalog 関数を使用したエージェントツールの作成

エージェントが定義済みのロジック(エージェントがパラメーターを提供する SQL クエリーなど)を実行する必要がある場合は、Unity Catalog 関数を使用します。その他のツールについては、MCP を起動してください。

このガイドでは、Unity Catalog AI を使用して小さな Python 関数を作成し、それをテストして、任意のフレームワークを使用してエージェントに追加します。すでに機能がある場合は、ステップ1のライブラリをインストールし、ステップ3に進みます。

要件​

  • Python 3.10 以降が搭載された Databricks ノートブック。クラシックコンピュートでは、Databricks Runtime 15.0 以降を使用します。
  • Serverless コンピュートがワークスペースで有効になっています。Function Client はツールの実行に Serverless 汎用コンピュートを使用します。SQL Warehouse 単体では不十分です。
  • USE CATALOG and USE SCHEMA on the function's parent catalog and schema.Creating a function also requires CREATE FUNCTION on the schema; calling an existing function requires EXECUTE on it.See Function privileges.
  • ツール呼び出しをサポートするモデル。LangGraph の例では、Databricks モデル Endpointを使用します。OpenAI、Anthropic、および LlamaIndex の例では、それぞれの tab で説明されているように、プロバイダーの API 認証情報を使用します。

ステップ1:ライブラリをインストールする​

ノートブックセルで、フレームワークのインストールコマンドをランします。

フレームワーク

インストールコマンド

LangGraph

%pip install --upgrade unitycatalog-langchain[databricks] databricks-langchain langgraph

OpenAI

%pip install --upgrade unitycatalog-openai[databricks]

Anthropic

%pip install --upgrade unitycatalog-anthropic[databricks]

LlamaIndex

%pip install --upgrade unitycatalog-llamaindex[databricks] llama-index-llms-openai

フレームワーク

インストールコマンド

LangGraph

%pip install --upgrade unitycatalog-langchain[databricks] databricks-langchain langgraph

OpenAI

%pip install --upgrade unitycatalog-openai[databricks]

Anthropic

%pip install --upgrade unitycatalog-anthropic[databricks]

LlamaIndex

%pip install --upgrade unitycatalog-llamaindex[databricks] llama-index-llms-openai

パッケージのソースコードについては、Unity Catalog AIリポジトリを参照してください。

次に、別のセルで Python を再起動します。

Python
dbutils.library.restartPython()

ステップ 2: 関数を作成してテストする​

DatabricksFunctionClient を使用して関数を作成し、テストします。関数を作成できる既存のカタログおよびスキーマに my_catalog と my_schema を置き換えます。この例では add_numbers が作成されます。既に存在する場合は、別の名前を選択してください。

Python
from unitycatalog.ai.core.databricks import DatabricksFunctionClient

client = DatabricksFunctionClient()
CATALOG = "my_catalog"
SCHEMA = "my_schema"


def add_numbers(number_1: float, number_2: float) -> float:
"""Add two numbers.

Args:
number_1: The first number to add.
number_2: The second number to add.

Returns:
The sum of the two numbers.
"""
return number_1 + number_2


client.create_python_function(func=add_numbers, catalog=CATALOG, schema=SCHEMA)

result = client.execute_function(
function_name=f"{CATALOG}.{SCHEMA}.add_numbers",
parameters={"number_1": 2.0, "number_2": 3.0},
)
if result.error:
raise RuntimeError(result.error)
print(result.value) # 5.0

ステップ 3: エージェントで関数を使用する​

function_nameを関数のフルネームに設定し、フレームワークのサンプルをランします。それぞれがUCFunctionToolkitを使用して関数を直接呼び出します。

Python
from unitycatalog.ai.core.databricks import DatabricksFunctionClient

function_name = "my_catalog.my_schema.add_numbers"
client = DatabricksFunctionClient()
question = "Use the tool to add 2.0 and 3.0."

この例では、databricks-claude-sonnet-4-5 Endpoint を使用します。ワークスペースで使用可能なツール呼び出しモデルに置き換えます。

Python
from databricks_langchain import ChatDatabricks, UCFunctionToolkit
from langgraph.prebuilt import create_react_agent

toolkit = UCFunctionToolkit(function_names=[function_name], client=client)
agent = create_react_agent(
ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
tools=toolkit.tools,
)
result = agent.invoke({"messages": [{"role": "user", "content": question}]})
print(result["messages"][-1].content)

LangChain統合リファレンスを参照してください。

エージェントは add_numbers を呼び出し、5 を含む回答を返します。既存の関数を使用する場合は、question をその関数がサポートするタスクに変更します。

デプロイと認証については、カスタムエージェントの構築およびエージェントの認証を参照してください。

ローカルでの開発​

信頼できるPython関数をテストするには、クライアントをexecution_mode="local"で初期化し、フレームワークのツールキットに渡します。

Python
client = DatabricksFunctionClient(execution_mode="local")
toolkit = UCFunctionToolkit(function_names=[function_name], client=client)

ローカルモードでは、Unity Catalogから関数を取得し、ローカルのサブプロセスでランします。SQL関数はサポートされていません。本番運用ではdefaultのServerlessモードを使用し、信頼できるコードのみをランしてください。「実行モード」を参照してください。

タイムアウト、メモリ制限、Serverless 設定については、ローカル実行の制限とFunction Client の環境変数を参照してください。

ワークスペース Endpoint(レガシー)を使用する​

既存のMCP統合の場合、このLangGraphのサンプルは、レガシーワークスペース Endpointを通じて同じ関数に接続します。マネージド MCP サーバーのプレビューを有効にして、その関数へのアクセス権を持つアイデンティティを使用してください。

ノートブックセルで %pip install --upgrade databricks-langchain langgraph "mcp>=1.24,<2" のランを実行し、Python を再起動します。my_catalog/my_schema/add_numbers を関数へのパスに置き換えます。

Python
from databricks.sdk import WorkspaceClient
from databricks_langchain import (
ChatDatabricks,
DatabricksMCPServer,
DatabricksMultiServerMCPClient,
)
from langchain_core.messages import convert_to_openai_messages
from langgraph.prebuilt import create_react_agent

workspace_client = WorkspaceClient()
function_path = "my_catalog/my_schema/add_numbers"
mcp_client = DatabricksMultiServerMCPClient([
DatabricksMCPServer(
name="uc-functions",
url=f"{workspace_client.config.host}/api/2.0/mcp/functions/{function_path}",
workspace_client=workspace_client,
),
])
agent = create_react_agent(
ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
tools=await mcp_client.get_tools(),
prompt=lambda state: convert_to_openai_messages(state["messages"]),
)
result = await agent.ainvoke({
"messages": [{"role": "user", "content": "Use the tool to add 2.0 and 3.0."}],
})
print(result["messages"][-1].content)

デプロイについては、エージェントの認証を参照してください。http_requestを使用して外部APIを呼び出す関数については、レガシーREST APIツールを参照してください。