Подключение агентов к структурированным данным

Агенты ИИ часто должны запрашивать структурированные данные или управлять ими, чтобы отвечать на вопросы, обновлять записи или создавать конвейеры данных.

Databricks предоставляет несколько подходов для подключения агентов к структурированным данным в таблицах каталога Unity и внешних хранилищах данных. Используйте предварительно настроенные серверы MCP для немедленного доступа к хранилищам Genie Spaces и SQL или создавайте пользовательские средства для специализированных рабочих процессов.

На этой странице показано, как:

Запрос данных в таблицах каталога Unity

Если агенту нужно запрашивать данные в таблицах каталога Unity, Databricks рекомендует использовать пространства Genie. Пространство Genie — это коллекция до 25 таблиц каталога Unity, которые Genie может хранить в контексте и запрашивать с помощью естественного языка. Агенты могут получить доступ к пространству Genie с помощью предварительно настроенного URL-адреса MCP.

Чтобы подключиться к пространству Genie, выполните приведенные действия.

  1. Создайте пространство Genie с таблицами, к которым вы хотите делать запросы, и поделитесь пространством с пользователями или сервисными учетными записями, которым необходим доступ. См. статью "Настройка и управление пространством Genie".
  2. Создайте агент и подключите его к предварительно настроенном URL-адресу MCP для пространства: https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}

Замечание

Управляемый сервер MCP для Genie вызывает Genie в качестве средства MCP, что означает, что журнал не передается при вызове API Genie.

Добавьте инструмент пространства Genie к агенту.

В следующих примерах показано, как подключить агент к серверу MCP компании Genie. Замените <genie-space-id> идентификатором пространства Genie.

Пакет SDK для агентов OpenAI (приложения)

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)

Предоставьте приложению доступ к пространству Genie в databricks.yml:

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

LangGraph (приложения)

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)

Предоставьте приложению доступ к пространству Genie в 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 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(),
)

Сведения о развертывании агента см. в статье "Развертывание агента для создания приложений ИИ (обслуживание моделей)". Дополнительные сведения об агентах ведения журнала с ресурсами MCP см. в разделе "Использование управляемых серверов MCP Databricks".

Система с несколькими агентами Genie

Это важно

Эта функция доступна в общедоступной предварительной версии.

Для расширенных многоагентных систем можно также использовать Genie в качестве агента, а не интегрировать его с помощью MCP. При вызове Genie в качестве агента вы можете детерминированно передать существующий контекст беседы в Genie.

Для подхода с написанием кода в первую очередь, см. Использование Genie в системах с несколькими агентами (Обслуживание моделей). Для подхода с ориентацией на пользовательский интерфейс, см. Использование агента руководителя для создания координированной системы с несколькими агентами.

Запрос данных с помощью средства функции SQL каталога Unity

Создайте структурированное средство извлечения с помощью функций SQL каталога Unity, когда запрос известен заранее, а агент предоставляет параметры.

В следующем примере создается функция каталога Unity, которая позволяет lookup_customer_info агенту ИИ извлекать структурированные данные из гипотетической таблицы customer_data.

Выполните следующий код в редакторе 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;

После того как вы создадите инструмент Unity Catalog, добавьте его в програмный агент. См. статью "Создание средства функции каталога Unity".