Aller au contenu principal

Créer des outils d'agent à l'aide des fonctions Unity Catalog

Use Unity Catalog functions when your agent needs to run predefined logic, such as a SQL query whose parameters the agent supplies. For other tools, start with MCPs.

Ce guide utilise Unity Catalog AI pour créer une petite fonction Python, la tester et l’ajouter à un agent à l’aide du framework de votre choix. Si vous disposez déjà d’une fonction, installez les bibliothèques à l’étape 1 et accédez à l’étape 3.

Exigences​

  • Un notebook Databricks avec Python 3.10 ou version ultérieure. Sur le compute classique, utilisez Databricks Runtime 15.0 ou une version ultérieure.
  • Serverless compute activé dans votre workspace. Le Function Client utilise le compute général serverless pour exécuter des outils ; un SQL Warehouse seul ne suffit pas.
  • USE CATALOG et USE SCHEMA sur le catalogue parent et le schéma de la fonction. La création d'une fonction nécessite également CREATE FUNCTION sur le schéma ; l'appel d'une fonction existante nécessite EXECUTE sur celle-ci. Voir Privilèges des fonctions.
  • Un modèle qui prend en charge l’appel d’outils. L’exemple LangGraph utilise un endpoint de modèle Databricks. Les exemples OpenAI, Anthropic et LlamaIndex utilisent des identifiants d’API de fournisseur, comme indiqué dans leurs tab.

Étape 1 : installez les bibliothèques​

Exécutez la commande d'installation de votre framework dans une cellule de notebook :

Framework

Commande d'installation

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

Framework

Commande d'installation

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

Pour le code source des packages, consultez le repository d’IA Unity Catalog.

Redémarrez ensuite Python dans une cellule distincte :

Python
dbutils.library.restartPython()

Étape 2 : Créez et testez une fonction​

Utilisez DatabricksFunctionClient pour créer et tester la fonction. Remplacez my_catalog et my_schema par un catalogue et un schéma existants dans lesquels vous pouvez créer des fonctions. Cet exemple crée add_numbers; choisissez un autre nom s'il existe déjà.

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

Étape 3 : Utilisez la fonction dans votre agent​

Définissez function_name sur le nom complet de votre fonction, puis exécutez l'exemple correspondant à votre framework. Chacun utilise UCFunctionToolkit pour appeler la fonction directement.

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."

Cet exemple utilise l'endpoint databricks-claude-sonnet-4-5. Remplacez-le par un modèle d'appel d'outils disponible dans votre workspace.

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)

Consultez la référence d’intégration LangChain.

L’agent appelle add_numbers et renvoie une réponse contenant 5. Si vous utilisez une fonction existante, remplacez question par une tâche prise en charge par cette fonction.

Pour le déploiement et l'authentification, consultez les rubriques Créer un agent personnalisé et Authentification des agents.

Développement local​

Pour tester des fonctions Python approuvées, initialisez le client avec execution_mode="local" et transmettez-le à la boîte à outils de votre framework :

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

Le mode local récupère la fonction depuis Unity Catalog et l’exécute dans un sous-processus local. Il ne prend pas en charge les fonctions SQL. Utilisez le mode Serverless par default pour la production et n’exécutez que du code de confiance. Voir Modes d’exécution.

Pour en savoir plus sur les délais d’attente, les limites de mémoire et les paramètres serverless, consultez les pages limites d’exécution locales et variables d’environnement Function Client.

Utilisez l'endpoint MCP du workspace (hérité)​

Pour les intégrations MCP existantes, cet exemple LangGraph se connecte à la même fonction via le legacy workspace endpoint. Activez l’ aperçu des serveurs MCP gérés et utilisez une identité disposant d’un accès à la fonction.

Exécutez %pip install --upgrade databricks-langchain langgraph "mcp>=1.24,<2" dans une cellule de notebook, puis redémarrez Python. Remplacez my_catalog/my_schema/add_numbers par le chemin de votre fonction.

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)

Pour le déploiement, consultez l’authentification des agents. Pour une fonction qui appelle une API externe avec http_request, consultez les outils de l’API REST hérités.