2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PR: データブリックス・ジャパン株式会社
MLflowで実践するLLMOps

Databricksでエージェントを構築する2つのパターン

2
Posted at

前提:DatabricksでAIエージェントを作れることご存じ?

Databricksと聞くと"データ基盤"とイメージされる方が多いかもしれませんが、AIエージェントを構築できること もご存じでしょうか。
データについて質問に答えるエージェントや、ツールを使って複数の処理を実行するエージェントを作ることもできます。

image.png

構築方法は作りたいエージェントや実装したい内容によって異なりますが、現在は主に

  • コードを書かずにデータ分析向けのエージェントを構成するなら Genieエージェント
  • 独自のロジックやツールをコードで実装するなら Agent Bricks CLI

を利用できます。

この記事では、Genie エージェントをデータ分析用のツールとして構成し、それを呼び出すカスタムエージェントを Agent Bricks CLI で作成します。さらに、作成したエージェントを Databricks Apps 上の Agent Runtime にデプロイする流れを紹介します。

2つの構築方法の使い分け

まずこの2通りのエージェント構築方法は以下使い分けができます。

Genieエージェント Agent Bricks CLI
誰が作るか 主に分析担当者が UI で構成する。SQLの知識があると調整しやすい 主に開発者がコードで構築・デプロイする
向いていること 対象データや指示を整え、データに関する質問に答える 独自の処理フローやツールをコードで組み合わせ、アプリや API としてデプロイする
動かし方 ワークスペース上の Genie エージェントとして共有する Databricks Apps 上の Agent Runtime で動かす(Model Serving へのデプロイではない)
相手側 その Genie エージェントの画面。Genie One からも開ける Apps のチャット URL と API。Genie を道具として足せる

使い分けの目安は、データに関する質問に答えるところまででよいか、それとも独自の処理やアプリ連携まで必要かです。

テーブルについての質問に答えるエージェントであれば、Genie エージェントだけで構成できます。一方、自社アプリへの組み込みや、入力検証・ツールの実行条件などをコードで制御したい場合は、Agent Bricks CLI でカスタムエージェントを構築します。必要に応じてほかのツールを組み合わせたり、エージェントの動作をトレースしたりすることもできます。

今回作ったもの(2層)

土台はGenieエージェントの Bakehouse 売上分析アシスタント です。日本語の質問を SQL に変換し、サンプルカタログ samples の bakehouse スキーマにあるテーブルに対して実行します。
その上の Web アプリは Databricks Apps です。Agent Bricks CLI のデプロイが、Apps 上の Agent Runtime に載せます。

Appsは3ペインです。左がセッション・ツール・メモリ、中央が会話、右がイベントです。
チャットに「国別の売上を多い順に教えて」と入れると、先に bakehouse_sales_ask が動き、店舗の国で集計する SQL が流れます。モデルはDatabricksのUnity Gatewayから system.ai.claude-sonnet-5-5 を選んでいます。

image.png

画面: Databricks Apps のエージェントチャット(実行中 URL)。3ペイン全体。

結果は2段です。bakehouse_sales_query_result が行を取り、エージェントが表にしています。

画面: 同上、中央ペインの回答(国別売上の表)。

左の 機能 がランタイムの接続状態です。セッションストアは接続済み(永続化できる)、ツールは接続済み 1件+コード内 2件、メモリもマネージド、トレースは DatabricksのMLflowに飛ばしています。

画面: 同上、左ペイン「機能」。

右の イベント は、その瞬間のログです。例えば、session.items.list を開くと、ペイロードに「国別の売上を多い順に教えて」が残っています。質問はセッションストアにも載ります。会話内容がセッションストアに保存されるため、保持期間やアクセス権も確認が必要です。

画面: 同上、右ペイン「イベント」(session.items.list)。

今回の構成では、エージェントの実行環境に加え、セッション・メモリ・ツール・トレースなどをまとめて扱えました。どこまでをマネージド機能に任せるかを選びやすい点が、Agent Bricks CLI の利点だと感じました。

使用した機能とアプリの構成

今回構築したアプリは、データの参照からエージェントの実行・監視まで、次の要素で構成しています。

レイヤー 機能 役割
データ samples.bakehouse 売上・店舗・顧客データを格納するスキーマ。エージェントからは読み取り専用で利用します。
質問のSQL化 Genie エージェント 日本語の質問をSQLに変換し、対象データをクエリします。
エージェント開発 Agent Bricks CLI エージェント開発のひな形を作成し、実装やデプロイを支援します。
エージェントの制御 LangGraph 処理の流れを制御し、必要に応じてツールを呼び出して、その結果を回答にまとめます。
モデル呼び出し Unity Gateway(system.ai.*) Databricks のモデルエンドポイントを経由してモデルを呼び出します。この構成では、アプリに外部モデルのAPIキーを直接持たせずに利用できます。
実行環境 Databricks Apps(Agent Runtime) チャットアプリを実行し、/api/invocations からのAPI呼び出しを受け付けます。
状態管理 Session Store / Memory Store Session Store は会話中の状態を、Memory Store は会話をまたいで参照する記憶を保持します。
監視 MLflow Tracing(必要に応じて Unity Catalog テーブル) モデルやツールの呼び出し内容、処理時間などをトレースで確認します。必要に応じて、記録先にUnity Catalogテーブルを利用します。
権限管理 Unity Catalog、auth="user" データへのアクセス権限は質問者に基づいて評価します。SQLウェアハウスの接続には、Genie側で設定した資格情報を利用します。

まず、Genie エージェントを作成する

今回の構成では、まず Genie エージェントで、データ分析用のエージェントを作成します。分析対象のテーブルやその説明を登録し、自然言語で売上について質問できるようにします。

たとえば、「売上上位の店舗は?」「支払方法ごとの売上を教えて」「日本で最も売れた商品は?」といった質問を想定しています。

データに関する質問への回答や、簡単な分析・レポートの作成が目的であれば、Genie エージェントだけで対応できる場合もあります。今回はさらに、この Genie エージェントを、後述するカスタムエージェントからツールとして呼び出します。

Genie エージェントの画面

画面:左ナビの「Genie エージェント」から作成したエージェントを開いたところ。Databricks Apps のチャット画面とは別の画面です。

次に、Agent Bricks CLI でカスタムエージェントを実装する

次に、Genie エージェントをツールとして呼び出すカスタムエージェントを、Agent Bricks CLI で実装します。

Genie エージェントがデータに関する質問への回答を担うのに対し、カスタムエージェントでは、いつ Genie を呼び出すか、結果をどう扱うか、ほかのツールとどう連携するかをコードで定義できます。

Agent Bricks は、エンタープライズデータを活用するエージェントの開発・管理・実行を支援する Databricks の仕組みです。今回はその CLI を使ってカスタムエージェントを構築し、Databricks Apps 上にデプロイします。Databricks Apps を使うことで、チャット UI や Web アプリとして利用できます。

Agent Bricks と Databricks Apps の概要

出典:Agent Bricks and Databricks Apps に関する Databricks Blog

Agent Bricks CLIを使うメリット

Genieエージェントだけでも、データに関する質問に答えるエージェントは構成できます。今回のように、独自の処理フローやツール連携、アプリとしての提供が必要な場合は、Agent Bricks CLIでカスタムエージェントを作る方法があります。

できること 今回の構成での使いどころ
独自の処理フローを実装する 売上に関する質問はGenieに渡すなど、どの場面でツールを使うかをコードで組み立てる
ツールを組み合わせる 売上分析にはGenie、マスタ照会には別のツール、社内検索にはUC関数など、役割に応じて連携する
ユーザー認証でツールを呼び出す auth = "user" を設定したツールは、リクエストしたユーザーの認証情報で実行する。データへのアクセスは、そのユーザーに付与された権限に従う
実行内容を確認する MLflowのトレースで、モデルやツールの呼び出しを調査する。コードやプロンプトの変更はGitでレビューできる
チャットやAPIとして提供する Databricks Apps上のAgent Runtimeにデプロイし、チャットUIやAPIから利用する
マネージド機能を利用する セッション、メモリ、トレースなどをDatabricksの機能と連携する。独自にすべての実行基盤を用意する必要はない

今回特に便利だと感じたのは、「処理の流れやツールの使い分けをコードで調整できること」と「ツールごとに認証方式を選べること」 です。業務で使うエージェントでは回答の便利さだけでなく、どのユーザーの権限でデータにアクセスするか、回答の根拠をどのように確認するかも重要になります。

ただし、コードを書けば禁止事項や誤回答を自動的に防げるわけではありません。入力やツールの結果をどう検証するか、どの認証方式を使うかなどは、要件に応じて設計する必要があります。また、Genie エージェントとAgent Bricks CLIのどちらが適切かは、必要な制御範囲や運用要件によって変わります。

Agent Bricks CLIはカスタマイズできる範囲が広い一方、最初からすべての機能を使う必要はありません。今回変更したコードも主にモデルの指定と日本語のシステムプロンプトです。検証では、CLIを使ってプロジェクトを作成し、Genieエージェントをツールとして追加してデプロイしました。

agentbricks init --framework langgraph --name bakehouse-ja src
agentbricks tools add genie-agent <space-id> --name bakehouse_sales --auth user
agentbricks deploy bakehouse-ja --source src

上記は今回の検証で使ったコマンドです。Agent Bricks CLIは本記事執筆時点でBetaのため、コマンドや利用条件は公式ドキュメントで確認ください。

デプロイ先のイメージ

今回のカスタムエージェント自体は、Databricks Apps 上の Agent Runtime にデプロイしています。これはエージェントをホストする実行環境の話です。モデル推論は別途 Unity Gateway 経由で呼び出しています。

image.png
右上のアプリ選択画面から「Databricks Apps」を選ぶとこの画面になります

デプロイしたAppsを選択すると、以下のように概要、許可、デプロイメント、ログ、、、などが確認できます。

image.png

画面: Databricks Apps → agent-bricks-bakehouse-ja の「概要」。

許可(Permission)

左ナビ 許可 が、いわゆる認可です。上が アプリの認証(サービスプリンシパル)、下が ユーザー認証 で、スコープに genie と、既定の iam.access-control:read / iam.current-user:read が付いています。

Genie ツールは auth = "user" に設定しているため、ツール呼び出しはリクエストしたユーザーの認証情報で行われます。データへのアクセス可否は、そのユーザーに付与された権限に従います。アプリ認証(サービスプリンシパル)で実行する場合とは必要な権限が異なるため、Genieエージェント、データ、ウェアハウスそれぞれの権限を確認ください。

image.png
画面: 同上、左ナビ「許可」(アプリの認証とユーザー認証)

モデルサービング・インサイト

モデルはUnity Gateway経由で system.ai.claude-sonnet-5-5 を使っています。
メトリクスとしてモデルのクエリ数やトークン数、エラー数やレイテンシーなどを確認することができます。

image.png

image.png

image.png

画面: AI/ML → AIゲートウェイ → claude-sonnet-5-5 の「メトリクス」(一部抜粋)

アプリからも確認可能です。
image.png

レガシーになったもの

2026年10月の製品リリースノートでは、10月12日付で Knowledge Assistant と Supervisor Agent がレガシーになったと案内されています。新しいエージェントをコードで作成する場合は Agent Bricks CLI、コードを書かずに作成する場合は Genie エージェントが推奨されています。

現在エージェント作成画面にあるカード名にも「(レガシー)」と付きました。

画面: 「新しいエージェントを作成」ダイアログ。Genie / コーディングが現行、KA・Supervisor はレガシー。

まとめ

Databricks でエージェントを作る方法の一つとして、コードなしでデータ向けエージェントを構成する Genieエージェント と、コードでカスタムエージェントを構築・デプロイする Agent Bricks CLI があります。データに関する質問応答を中心にするなら Genieエージェント、独自の処理フローやツール連携、アプリとしての提供が必要なら Agent Bricks CLI が選択肢になります。今回の検証では、Genie エージェントをツールとして組み込んだカスタムエージェントを Databricks Apps 上の Agent Runtime にデプロイしました。コードで書く実利は、サーバーを自分で立てずに、振る舞いと公開のしかたを決められることです。
皆さんもぜひ試されてみてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?