Łączenie agentów z danymi ustrukturyzowanymi

Agenci często muszą wykonywać zapytania o dane ustrukturyzowane lub manipulować nimi, aby odpowiedzieć na pytania, zaktualizować rekordy lub utworzyć potoki danych.

Usługa Databricks oferuje wiele podejść do łączenia agentów z danymi ustrukturyzowanymi w tabelach katalogu Unity Catalog i zewnętrznych magazynach danych. Użyj wstępnie skonfigurowanych serwerów MCP, aby uzyskać natychmiastowy dostęp do agentów genie i magazynów SQL, lub utworzyć niestandardowe narzędzia dla wyspecjalizowanych przepływów pracy.

Na tej stronie pokazano, jak:

Zapytania danych w tabelach Unity Catalog

Jeśli agent musi wysyłać zapytania do danych w tabelach Unity Catalog, Databricks zaleca korzystanie z Genie Agents. Genie Agent to kolekcja do 25 tabel Unity Catalog, które Genie może utrzymywać w kontekście i zadawać pytania dotyczące tych tabel w języku naturalnym. Agenci mogą uzyskać dostęp do agenta Genie przy użyciu wstępnie skonfigurowanego adresu URL MCP.

Aby nawiązać połączenie z agentem Genie:

  1. Utwórz agenta Genie z tabelami, które chcesz odpytywać, i udostępnij go użytkownikom lub jednostkom głównym usługi, które muszą mieć do niego dostęp. Zobacz Tworzenie agenta genie i zarządzanie nim.
  2. Utwórz agenta i połącz go ze wstępnie skonfigurowanym adresem URL zarządzanego protokołu MCP dla przestrzeni: https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}.

Note

Zarządzany serwer MCP dla Genie wywołuje Genie jako narzędzie MCP, co oznacza, że historia nie jest przekazywana podczas wywoływania interfejsów API Genie.

Dodaj narzędzie Genie Agent do swojego agenta

Poniższe przykłady pokazują, jak połączyć swojego agenta z serwerem MCP Genie Agent. Zastąp <genie-space-id> element identyfikatorem agenta Genie.

Zestaw SDK agentów OpenAI (aplikacje)

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)

Przyznaj aplikacji dostęp do Agent Genie w databricks.yml:

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

LangGraph (aplikacje)

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)

Przyznaj aplikacji dostęp do Agent Genie w databricks.yml:

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

Modelowa obsługa

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

Aby wdrożyć agenta, zobacz Wdrażanie agenta dla aplikacji sztucznej inteligencji (obsługa modelu). Aby uzyskać szczegółowe informacje na temat rejestrowaniu agentów przy użyciu zasobów MCP, zobacz zarządzane serwery MCP usługi Azure Databricks.

Genie system wieloagentowy

Ważna

Ta funkcja jest dostępna w publicznej wersji testowej.

W przypadku zaawansowanych systemów wieloagentowych można również użyć Genie jako agenta zamiast integrować go z usługą MCP. Wywołując Genie jako agenta, można deterministycznie przekazać obecny kontekst rozmowy do Genie.

Aby zapoznać się z podejściem opartym na kodzie, zobacz Use Genie in multi-agent systems (Model Serving) (Używanie usługi Genie w systemach wieloa agentowych (obsługa modelu). Aby uzyskać podejście oparte na interfejsie użytkownika, zobacz Używanie agenta nadzorcy do tworzenia skoordynowanego systemu wielu agentów.

Uruchom SQL na tabelach Unity Catalog za pomocą serwera SQL MCP Databricks

Gdy agent musi uruchamiać kod SQL generowany przez AI na tabelach Unity Catalog za pośrednictwem magazynu SQL, połącz go z zarządzanym serwerem Databricks SQL MCP w usłudze Azure Databricks, zamiast tworzyć własne narzędzie. Serwer udostępnia wykonywanie SQL jako narzędzie, a dostęp jest regulowany przez uprawnienia Unity Catalog. Połącz swojego agenta z wcześniej skonfigurowanym zarządzanym adresem URL MCP: https://<workspace-hostname>/api/2.0/mcp/sql.

Informacje o wzorcu adresu URL, zakresie OAuth, parametrach _meta (takich jak przypinanie konkretnego warehouse_id) oraz przykładach połączeń można znaleźć w dokumencie Databricks SQL MCP server.

Zapytanie danych z wykorzystaniem funkcji SQL Katalogu Unity

Utwórz narzędzie do strukturalnego pobierania przy użyciu funkcji SQL Katalogu Unity, gdy zapytanie jest znane z wyprzedzeniem, a agent przekazuje parametry.

Poniższy przykład tworzy funkcję Unity Catalog o nazwie lookup_customer_info, która umożliwia agentowi pobieranie danych strukturalnych z hipotetycznej tabeli customer_data.

Uruchom następujący kod w edytorze 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;

Po utworzeniu narzędzia Unity Catalog dodaj je do agenta. Zobacz Utwórz funkcję dla Katalogu Unity.