Menyambungkan agen ke data terstruktur

Agen AI sering kali perlu mengkueri atau memanipulasi data terstruktur untuk menjawab pertanyaan, memperbarui rekaman, atau membuat alur data.

Databricks menyediakan beberapa pendekatan untuk menghubungkan agen ke data terstruktur dalam tabel Unity Catalog dan penyimpanan data eksternal. Gunakan server MCP yang telah dikonfigurasi sebelumnya untuk akses langsung ke Ruang Genie dan gudang SQL, atau buat alat kustom untuk alur kerja khusus.

Halaman ini memperlihatkan cara:

Mengkueri data pada tabel-tabel di Katalog Unity

Jika agen Anda perlu mengkueri data dalam tabel Unity Catalog, Databricks merekomendasikan penggunaan spasi Genie. Ruang Genie adalah kumpulan hingga 25 tabel Unity Catalog yang dapat disimpan Genie dalam konteks dan kueri menggunakan bahasa alami. Agen dapat mengakses ruang Genie menggunakan URL MCP yang telah dikonfigurasi sebelumnya.

Untuk menyambungkan ke ruang Genie:

  1. Buat ruang Genie dengan tabel yang ingin Anda kueri dan bagikan ruang dengan pengguna, atau perwakilan layanan, yang harus mengaksesnya. Lihat Menyiapkan dan mengelola Genie Space.
  2. Buat agen dan sambungkan ke URL MCP terkelola yang telah dikonfigurasi sebelumnya untuk ruang: https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}.

Nota

Server MCP terkelola untuk Genie memanggil Genie sebagai alat MCP, yang berarti riwayat tidak diteruskan saat memanggil API Genie.

Tambahkan alat ruang Genie ke agen Anda

Contoh berikut menunjukkan cara menghubungkan agen Anda ke server MCP ruang Genie. Ganti <genie-space-id> dengan ID ruang Genie Anda.

OpenAI Agents SDK (Aplikasi)

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)

Berikan akses aplikasi ke ruang Genie di databricks.yml:

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

LangGraph (Aplikasi)

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)

Berikan akses aplikasi ke ruang Genie di databricks.yml:

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

Model Serving

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

Untuk menyebarkan agen, lihat Menyebarkan agen untuk aplikasi AI generatif (Model Melayani). Untuk detail tentang agen pengelogan dengan sumber daya MCP, lihat Menggunakan server MCP terkelola Databricks.

Sistem multi-agen Genie

Penting

Fitur ini ada di Pratinjau Publik.

Untuk sistem multi-agen tingkat lanjut, Anda juga dapat menggunakan Genie sebagai agen daripada mengintegrasikannya menggunakan MCP. Ketika Anda memanggil Genie sebagai agen, Anda dapat secara deterministik meneruskan konteks percakapan yang ada ke Genie.

Untuk pendekatan code-first, lihat Menggunakan Genie dalam sistem multi-agen (Model Serving). Untuk pendekatan UI-first, lihat Menggunakan Agen Supervisor untuk membuat sistem multi-agen terkoordinasi.

Mengkueri data menggunakan alat fungsi SQL Unity Catalog

Buat alat pengambilan terstruktur menggunakan fungsi Unity Catalog SQL saat kueri diketahui sebelumnya dan agen menyediakan parameter.

Contoh berikut membuat fungsi Unity Catalog yang disebut lookup_customer_info, yang memungkinkan agen AI untuk mengambil data terstruktur dari tabel hipotetis customer_data .

Jalankan kode berikut di editor 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;

Setelah Anda membuat alat Unity Catalog, tambahkan ke agen Anda. Lihat Membuat alat fungsi Unity Catalog.