Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Utiliza funciones del Catálogo de Unity cuando tu agente necesite ejecutar lógica predefinida, como una consulta SQL cuyos parámetros suministra el agente. Para otras herramientas, empieza con MCP.
Esta guía utiliza Unity Catalog AI para crear una pequeña función en Python, probarla y añadirla a un agente usando el framework que elijas. Si ya tienes una función, instala las librerías en el paso 1 y luego pasa al paso 3.
Requirements
- Un cuaderno de Azure Databricks con Python 3.10 o superior. En cómputo clásico, utiliza Databricks Runtime 15.0 o superior.
- Computación serverless habilitada en tu espacio de trabajo. El Function Client utiliza computación general sin servidor para ejecutar herramientas; un almacén SQL por sí solo no es suficiente.
-
USE CATALOGyUSE SCHEMAen el catálogo y esquema padre de la función. Crear una función también requiereCREATE FUNCTIONen el esquema; llamar a una función existente requiereEXECUTEen ella. Consulte privilegios de función. - Un modelo que admite la invocación de herramientas. El ejemplo de LangGraph utiliza un punto final de modelo de Azure Databricks. Los ejemplos de OpenAI, Anthropic y LlamaIndex utilizan credenciales de API de proveedores, tal como se describe en sus pestañas.
Paso 1: Instala las bibliotecas
Ejecuta el comando de instalación de tu framework en una celda de notebook:
| Framework | Comando de instalación |
|---|---|
| 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 |
Para el código fuente del paquete, consulta el repositorio Unity Catalog AI.
Luego reinicia Python en una celda separada:
dbutils.library.restartPython()
Paso 2: Crear y probar una función
Usa DatabricksFunctionClient para crear y probar la función. Sustituye my_catalog y my_schema por un catálogo y esquema existentes donde puedas crear funciones. Este ejemplo crea add_numbers; elige un nombre diferente si ya existe.
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
Paso 3: Utiliza la función en tu agente
Establezca function_name con el nombre completo de su función y, a continuación, ejecute el ejemplo para su marco. Cada uno usa UCFunctionToolkit para llamar directamente a la función.
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."
LangGraph
Este ejemplo utiliza el databricks-claude-sonnet-4-5 endpoint. Sustituyelo por un modelo de llamada de herramientas disponible en tu espacio de trabajo.
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)
Consulta la referencia de integración de LangChain.
OpenAI
Establezca las variables de entorno OPENAI_API_KEY y OPENAI_MODEL para el proceso del cuaderno. Utiliza un modelo que soporte la llamada a herramientas y almacena la clave API en un secreto de Azure Databricks.
import os
from openai import OpenAI
from unitycatalog.ai.openai.toolkit import UCFunctionToolkit
from unitycatalog.ai.openai.utils import generate_tool_call_messages
toolkit = UCFunctionToolkit(function_names=[function_name], client=client)
model_client = OpenAI()
messages = [{"role": "user", "content": question}]
for _ in range(10):
response = model_client.chat.completions.create(
model=os.environ["OPENAI_MODEL"],
messages=messages,
tools=toolkit.tools,
)
if not response.choices[0].message.tool_calls:
print(response.choices[0].message.content)
break
messages.extend(generate_tool_call_messages(response=response, client=client))
else:
raise RuntimeError("The agent reached the tool-calling limit.")
El ayudante ejecuta las funciones solicitadas y formatea sus resultados para la siguiente llamada al modelo. Consulta la referencia de integración de OpenAI.
Anthropic
Establece las variables de entorno ANTHROPIC_API_KEY y ANTHROPIC_MODEL para el proceso de tu notebook. Utiliza un modelo que soporte la llamada a herramientas y almacena la clave API en un secreto de Azure Databricks.
import os
from anthropic import Anthropic
from unitycatalog.ai.anthropic.toolkit import UCFunctionToolkit
from unitycatalog.ai.anthropic.utils import generate_tool_call_messages
toolkit = UCFunctionToolkit(function_names=[function_name], client=client)
model_client = Anthropic()
messages = [{"role": "user", "content": question}]
for _ in range(10):
response = model_client.messages.create(
model=os.environ["ANTHROPIC_MODEL"],
max_tokens=1024,
tools=toolkit.tools,
messages=messages,
)
if response.stop_reason != "tool_use":
print("\n".join(block.text for block in response.content if block.type == "text"))
break
messages.extend(
generate_tool_call_messages(
response=response, client=client, conversation_history=[],
)
)
else:
raise RuntimeError("The agent reached the tool-calling limit.")
El ayudante ejecuta las funciones solicitadas. Añade sus mensajes a la conversación antes de la siguiente llamada de modelo. Véase la referencia de integración Anthropic.
LlamaIndex
Este ejemplo utiliza un modelo OpenAI. Establezca las variables de entorno OPENAI_API_KEY y OPENAI_MODEL para el proceso del cuaderno. Utiliza un modelo que soporte la llamada a herramientas y almacena la clave API en un secreto de Azure Databricks.
import os
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI
from unitycatalog.ai.llama_index.toolkit import UCFunctionToolkit
toolkit = UCFunctionToolkit(function_names=[function_name], client=client)
agent = FunctionAgent(
tools=toolkit.tools,
llm=OpenAI(model=os.environ["OPENAI_MODEL"]),
)
result = await agent.run(user_msg=question)
print(result)
Ejecuta las dos últimas líneas en una celda de notebook que soporte await. Consulta la referencia de integración de LlamaIndex.
El agente llama add_numbers y devuelve una respuesta que contiene 5. Si usas una función existente, cambia question a una tarea que la función soporte.
Para la implementación y la autenticación, consulte Crear un agente personalizado y Autenticación del agente.
Desarrollo local
Para probar funciones Python confiables, inicializa el cliente con execution_mode="local" y pásalo al toolkit de tu framework:
client = DatabricksFunctionClient(execution_mode="local")
toolkit = UCFunctionToolkit(function_names=[function_name], client=client)
El modo local recupera la función del Catálogo de Unity y la ejecuta en un subproceso local. No soporta funciones SQL. Usa el modo serverless predeterminado para producción y ejecuta solo código confiable. Véase Modos de ejecución.
Para tiempos de espera, límites de memoria y configuraciones serverless, consulta los límites de ejecución local y las variables de entorno del Cliente de Función.
Usa el endpoint MCP del espacio de trabajo (heredado)
Para integraciones MCP existentes, este ejemplo de LangGraph se conecta a la misma función a través del endpoint del espacio de trabajo heredado. Activa la vista previa de los Servidores MCP gestionados y utiliza una identidad con acceso a la función.
Ejecuta %pip install --upgrade databricks-langchain langgraph "mcp>=1.24,<2" en una celda de notebook y luego reinicia Python. Sustituye my_catalog/my_schema/add_numbers por la ruta de tu función.
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)
Para la implementación, consulta Autenticación de agentes. Para una función que llama a una API externa con http_request, véase Herramientas heredadas de la API REST.