エージェントを構造化データに接続する
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スペースを作成し、そのスペースにアクセスする必要があるユーザーまたはサービスプリンシパルと共有します。Genieスペースの作成と管理を参照してください。
- エージェントを作成し、スペース
https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}用に事前に構成された管理対象 MCP URL に接続します。
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スペースへのアクセス権を付与します:
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スペースへのアクセス権を付与します:
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 の使用 (モデルサービング)」を参照してください。UI を優先するアプローチについては、 「Supervisor Agent を使用して協調的なマルチエージェント システムを作成する」を参照してください。
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機能ツールの作成を参照してください。