Connecter des agents à des données structurées

Les agents IA doivent souvent interroger ou manipuler des données structurées pour répondre aux questions, mettre à jour des enregistrements ou créer des pipelines de données.

Databricks fournit plusieurs approches pour connecter des agents à des données structurées dans des tables de catalogue Unity et des magasins de données externes. Utilisez des serveurs MCP préconfigurés pour accéder immédiatement aux entrepôts Genie Spaces et SQL, ou créez des outils personnalisés pour les flux de travail spécialisés.

Cette page montre comment :

Interroger des données dans des tables de catalogue Unity

Si votre agent doit interroger des données dans des tables du catalogue Unity, Databricks recommande d’utiliser des espaces Genie. Un espace Genie est une collection de tables du catalogue Unity, jusqu'à 25, que Genie peut conserver dans son contexte et interroger à l'aide du langage naturel. Les agents peuvent accéder à l’espace Genie à l’aide d’une URL MCP préconfigurée.

Pour vous connecter à un espace Génie :

  1. Créez un espace Genie avec les tables que vous souhaitez interroger et partager l’espace avec les utilisateurs, ou les principaux de service, qui doivent y accéder. Consultez Configurer et gérer un espace Génie.
  2. Créez un agent et connectez-le à l’URL MCP managée préconfigurée pour l’espace : https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}.

Note

Le serveur MCP géré pour Genie invoque Genie en tant qu'application MCP, ce qui signifie que l'historique n'est pas transmis lors de l'invocation des API de Genie.

Ajouter un outil Genie Space à votre agent

Les exemples suivants montrent comment connecter votre agent à un serveur MCP d’espace Genie. Remplacez <genie-space-id> par l’ID de votre espace Génie.

SDK des Agents OpenAI (Applications)

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)

Accordez à l’application l’accès à l’espace Génie dans databricks.yml:

resources:
  apps:
    my_agent_app:
      resources:
        - name: 'my_genie_space'
          genie_space:
            space_id: '<genie-space-id>'
            permission: 'CAN_RUN'

LangGraph (Applications)

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)

Accordez à l’application l’accès à l’espace Génie dans databricks.yml:

resources:
  apps:
    my_agent_app:
      resources:
        - name: 'my_genie_space'
          genie_space:
            space_id: '<genie-space-id>'
            permission: 'CAN_RUN'

Utilisation de modèles

from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
import mlflow

workspace_client = WorkspaceClient()
host = workspace_client.config.host

# Connect to the Genie Space 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 Space
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 IA génératives (Model Serving). Pour plus d’informations sur la journalisation des agents avec des ressources MCP, consultez Utiliser des serveurs MCP gérés par Databricks.

Système multi-agent Genie

Important

Cette fonctionnalité est disponible en préversion publique.

Pour les systèmes multi-agents avancés, vous pouvez également utiliser Genie comme agent plutôt que de l’intégrer à l’aide de MCP. Lorsque vous appelez Genie en tant qu’agent, vous pouvez transmettre de façon déterministe le contexte de conversation existant à Genie.

Pour une approche code-first, consultez Utiliser Genie dans les systèmes multi-agents (Service de modèle) . Pour une approche de première interface utilisateur, consultez Utiliser l’agent de superviseur pour créer un système multi-agent coordonné.

Interroger des données à l’aide de l’outil de fonction SQL du catalogue Unity

Créez un outil de récupération structurée à l’aide des fonctions SQL du catalogue Unity lorsque la requête est connue à l’avance et que l’agent fournit les paramètres.

L’exemple suivant crée une fonction De catalogue Unity appelée lookup_customer_info, qui permet à un agent IA 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 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
  LIMIT 1;

Après avoir créé un outil de catalogue Unity, ajoutez-le à votre agent. Voir Créer un outil de fonctionnalité Unity Catalog.