エージェントを構造化データに接続する
AI エージェントは、質問に答えたり、レコードを更新したり、データパイプラインを作成したりするために、構造化データをクエリまたは操作する必要があることがよくあります。
Databricks では、Unity Catalog テーブルと外部データストア内の構造化データにエージェントを接続するための複数のアプローチを提供しています。事前構成済みの MCP サーバーを使用すると、Genie Spaces と SQLウェアハウスにすぐにアクセスできます。 また、特定のワークフロー向けにカスタムツールを構築することもできます。
このページでは、次の方法を示します。
Unity Catalog テーブル内のデータをクエリする
エージェントがUnity Catalogテーブル内のデータをクエリする必要がある場合、DatabricksはGenie Spacesの使用をお勧めします。Genie Spaceは、Genieがコンテキストを保持し、自然言語を使用してクエリできる最大25個のUnity Catalogテーブルのコレクションです。エージェントは、事前設定されたMCP URLを使用してGenie Spaceにアクセスできます。
Genieスペースへ接続するには:
- クエリするテーブルを含むGenie Spaceを作成し、それにアクセスする必要があるユーザー、またはサービスプリンシパルとスペースを共有します。Genieスペースを作成および管理するを参照してください。
- エージェントを作成し、スペースの事前設定されたマネージドMCP URL (
https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}) に接続します。
GenieのマネージドMCPサーバーは、GenieをMCPツールとして呼び出します。これは、Genie APIsを呼び出す際に履歴が渡されないことを意味します。
Genie Spaceツールをエージェントに追加します
次の例は、エージェントをGenie Space MCPサーバーに接続する方法を示しています。<genie-space-id>をGenie SpaceのIDに置き換えてください。
- OpenAI Agents SDK (Apps)
- LangGraph (Apps)
- Model Serving
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)
アプリにdatabricks.ymlのGenie Spaceへのアクセスを許可します:
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_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)
アプリにdatabricks.ymlのGenie Spaceへのアクセスを許可します:
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(),
)
エージェントをデプロイするには、「生成AIアプリケーション(Model Serving)向けエージェントをデプロイする」を参照してください。MCPリソースを使用したエージェントのログ記録の詳細については、Databricksで管理される MCP サーバーを参照してください。
Genie マルチエージェント システム
プレビュー
この機能は パブリック プレビュー段階です。
高度なマルチエージェント システムの場合、MCPを使用して統合するのではなく、Genieをエージェントとして使用することもできます。Genieをエージェントとして呼び出す場合、既存の会話コンテキストをGenieに決定的に渡すことができます。
コードファーストのアプローチについては、マルチエージェントシステムでのGenieの使用(Model Serving)を参照してください。UIファーストのアプローチについては、スーパーバイザーエージェントを使用して協調的なマルチエージェントシステムを作成するを参照してください。
Unity Catalog SQL 関数ツールを使用してデータをクエリする
クエリが事前にわかっていて、エージェントがパラメーターを提供する場合に、Unity CatalogのSQL関数を使用して構造化された検索ツールを作成します。
次の例では、lookup_customer_info という Unity Catalog 関数を作成します。これは、AI エージェントが架空の customer_data テーブルから構造化データを取得することを可能にします。
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;
Unity Catalogツールを作成したら、エージェントに追加します。Unity Catalog関数ツールを作成するを参照してください。