Agents verbinden met gestructureerde gegevens

AI-agents moeten vaak gestructureerde gegevens opvragen of bewerken om vragen te beantwoorden, records bij te werken of gegevenspijplijnen te maken.

Databricks biedt meerdere methoden voor het verbinden van agents met gestructureerde gegevens in Unity Catalog-tabellen en externe gegevensarchieven. Gebruik vooraf geconfigureerde MCP-servers voor directe toegang tot Genie-ruimten en SQL-magazijnen of bouw aangepaste hulpprogramma's voor gespecialiseerde werkstromen.

Op deze pagina ziet u hoe u het volgende kunt doen:

Query's uitvoeren op gegevens in Unity Catalog-tabellen

Als uw agent query's moet uitvoeren op gegevens in Unity Catalog-tabellen, raadt Databricks het gebruik van Genie-ruimten aan. Een Genie-ruimte is een verzameling van maximaal 25 Unity Catalog-tabellen die Genie in context kan houden en query's kan uitvoeren met natuurlijke taal. Agents hebben toegang tot de Genie-ruimte met behulp van een vooraf geconfigureerde MCP-URL.

Verbinding maken met een Genie-ruimte:

  1. Maak een Genie-ruimte met de tabellen waarop u een query wilt uitvoeren en deel de ruimte met de gebruikers, of service-principals, die toegang moeten hebben tot de ruimte. Zie Een Genie-ruimte instellen en beheren.
  2. Maak een agent en verbind deze met de vooraf geconfigureerde beheerde MCP-URL voor de ruimte: https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}.

Opmerking

De beheerde MCP-server voor Genie roept Genie aan als een MCP-hulpprogramma, wat betekent dat geschiedenis niet wordt doorgegeven bij het aanroepen van Genie-API's.

Een Genie-ruimtehulpmiddel toevoegen aan uw agent

In de volgende voorbeelden ziet u hoe u uw agent verbindt met een Genie space MCP-server. Vervang <genie-space-id> door de ID van uw Genie-ruimte.

OpenAI Agents SDK (Apps)

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)

Geef de app toegang tot de Genie-ruimte in databricks.yml.

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

LangGraph (Apps)

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)

Geef de app toegang tot de Genie-ruimte in databricks.yml.

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

Model serveren

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(),
)

Zie Een agent implementeren voor generatieve AI-toepassingen (Model Serving) om de agent te implementeren. Zie Databricks managed MCP-servers gebruiken voor meer informatie over het registreren van agents met MCP-resources.

Genie multi-agent systeem

Belangrijk

Deze functie bevindt zich in openbare preview-versie.

Voor geavanceerde systemen met meerdere agents kunt u Genie ook gebruiken als agent in plaats van deze te integreren met MCP. Wanneer u Genie als agent aanroept, kunt u deterministisch de bestaande gesprekscontext binnen Genie doorgeven.

Zie Genie gebruiken in systemen met meerdere agents (Model Serving) voor een code-first benadering. Voor een gebruikersinterface-eerst benadering, zie Supervisor Agent gebruiken om een gecoƶrdineerd systeem met meerdere agents te maken.

query's uitvoeren op gegevens met behulp van het sql-functiehulpprogramma Unity Catalog

Maak een gestructureerd ophaalprogramma met behulp van Unity Catalog SQL-functies wanneer de query van tevoren bekend is en de agent de parameters levert.

In het volgende voorbeeld wordt een Unity Catalog-functie gemaakt lookup_customer_infodie een AI-agent toestaat gestructureerde gegevens op te halen uit een hypothetische customer_data tabel.

Voer de volgende code uit in een SQL-editor.

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;

Nadat u een Unity Catalog-hulpprogramma hebt gemaakt, voegt u dit toe aan uw agent. Zie Een Unity Catalog-functiehulpprogramma maken.