Connectez les agents aux données structurées
Les agents ont souvent besoin de query ou de manipuler des données structurées pour répondre à des questions, mettre à jour des enregistrements ou créer des pipelines de données.
Databricks propose plusieurs approches pour connecter les agents aux données structurées dans les tables Unity Catalog et les stockages de données externes. Utilisez des serveurs MCP préconfigurés pour un accès immédiat aux Genie Agents et aux SQL Warehouse, ou créez des outils personnalisés pour des workflows spécialisés.
Cette page montre comment :
-
Exécutez SQL sur les tables Unity Catalog avec le serveur Databricks SQL MCP
-
Utilisez les fonctions UC pour exécuter des queries déterministes et reproductibles.
Interroger les données dans les tables Unity Catalog
Si votre agent a besoin de query des données dans les tables Unity Catalog, Databricks vous recommande d'utiliser les Genie Agents. Un Genie Agent est une collection de jusqu'à 25 tables Unity Catalog que Genie peut garder en contexte et query en utilisant le langage naturel. Les agents peuvent accéder au Genie Agent en utilisant une URL MCP préconfigurée.
Pour se connecter à un Genie Agent :
- Créez un Genie Agent avec les tables que vous souhaitez interroger et partagez l'agent avec les utilisateurs, ou les Service Principal, qui doivent y accéder. Voir Créer et gérer un Genie Agent.
- Créez un agent et connectez-le à l'URL MCP gérée et préconfigurée pour l'espace :
https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}.
Le serveur MCP géré pour Genie invoque Genie comme un outil MCP, ce qui signifie que l'historique n'est pas transmis lors de l'invocation des APIs Genie.
Ajouter un outil Genie Agent à votre agent
Les exemples suivants montrent comment connecter votre agent à un serveur MCP Genie Agent. Remplacez <genie-space-id> par l'ID de votre Genie Agent.
- OpenAI Agents SDK (Apps)
- LangGraph (Apps)
- Model Serving
from agents import Agent, Runner
from databricks.sdk import WorkspaceClient
from databricks_openai.agents import McpServer
workspace_client = WorkspaceClient()
host = workspace_client.config.host
async with McpServer(
url=f"{host}/api/2.0/mcp/genie/<genie-space-id>",
name="genie-space",
workspace_client=workspace_client,
) as genie_server:
agent = Agent(
name="Data analyst agent",
instructions="You are a data analyst. Use the Genie tool to query structured data and answer questions.",
model="databricks-claude-sonnet-4-5",
mcp_servers=[genie_server],
)
result = await Runner.run(agent, "What were the top 10 customers by revenue last quarter?")
print(result.final_output)
Accorder l'accès à l'application au Genie Agent dans databricks.yml:
resources:
apps:
my_agent_app:
resources:
- name: 'my_genie_space'
genie_space:
space_id: '<genie-space-id>'
permission: 'CAN_RUN'
from databricks.sdk import WorkspaceClient
from databricks_langchain import ChatDatabricks, DatabricksMCPServer, DatabricksMultiServerMCPClient
from langgraph.prebuilt import create_react_agent
workspace_client = WorkspaceClient()
host = workspace_client.config.host
mcp_client = DatabricksMultiServerMCPClient([
DatabricksMCPServer(
name="genie-space",
url=f"{host}/api/2.0/mcp/genie/<genie-space-id>",
workspace_client=workspace_client,
),
])
async with mcp_client:
tools = await mcp_client.get_tools()
agent = create_react_agent(
ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
tools=tools,
)
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": "What were the top 10 customers by revenue last quarter?"}]}
)
print(result["messages"][-1].content)
Accorder l'accès à l'application au Genie Agent dans databricks.yml:
resources:
apps:
my_agent_app:
resources:
- name: 'my_genie_space'
genie_space:
space_id: '<genie-space-id>'
permission: 'CAN_RUN'
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
import mlflow
workspace_client = WorkspaceClient()
host = workspace_client.config.host
# Connect to the Genie Agent MCP server
mcp_client = DatabricksMCPClient(
server_url=f"{host}/api/2.0/mcp/genie/<genie-space-id>",
workspace_client=workspace_client,
)
# List available tools from the Genie Agent
tools = mcp_client.list_tools()
# Log the agent with the required resources for deployment
mlflow.pyfunc.log_model(
"agent",
python_model=my_agent,
resources=mcp_client.get_databricks_resources(),
)
Pour déployer l'agent, consultez Déployer un agent pour les applications d'IA (Model Serving). Pour plus de détails sur l'enregistrement des agents avec les ressources MCP, consultez serveurs MCP gérés par Databricks.
Exécuter SQL sur des tables Unity Catalog avec le serveur Databricks SQL MCP
Lorsque votre agent doit exécuter du SQL généré par IA sur des tables Unity Catalog via un SQL warehouse, connectez-le au serveur MCP Databricks SQL géré par Databricks au lieu de créer un outil personnalisé. Le serveur expose l’exécution SQL en tant qu’outil, et l’accès est régi par les autorisations Unity Catalog. Connectez votre agent à l’URL MCP gérée préconfigurée : https://<workspace-hostname>/api/2.0/mcp/sql.
Pour le modèle d'URL, la portée OAuth, les paramètres _meta (tels que l'épinglage d'un warehouse_id spécifique) et des exemples de connexion, consultez Databricks SQL.
Interrogez les données à l'aide de l'outil de fonction SQL de Unity Catalog
Créez un outil de récupération structuré en utilisant les fonctions SQL de Unity Catalog lorsque la query est connue à l'avance et que l'agent fournit les parameters.
L'exemple suivant crée une fonction Unity Catalog appelée lookup_customer_info, qui permet à un agent de récupérer des données structurées à partir d'une table hypothétique customer_data.
Exécutez le code suivant dans un éditeur SQL.
CREATE OR REPLACE FUNCTION main.default.lookup_customer_info(
customer_name_input STRING COMMENT 'Name of the customer whose info to look up'
)
RETURNS STRING
COMMENT 'Returns metadata about a particular customer, given the customer''s name, including the customer''s email and ID. The
customer ID can be used for other queries.'
RETURN SELECT CONCAT(
'Customer ID: ', customer_id, ', ',
'Customer Email: ', customer_email
)
FROM main.default.customer_data
WHERE customer_name = customer_name_input
LIMIT 1;
Après avoir créé un outil Unity Catalog, ajoutez-le à votre agent. Consultez Créer un outil de fonction Unity Catalog.