AIエージェント強化週間の一環として、新たな機能を導入し、企業が高品質なAIエージェントを構築・管理できるよう支援します。
その取り組みの一環として、Genie Conversation APIs のパブリックプレビューを発表 できることを嬉しく思います。AWS、Azure、GCP で利用可能 となり、より柔軟なデータ活用が可能になります。
このAPIスイートを活用することで、Databricks Apps、Slack、Teams、SharePoint、カスタムアプリなど、さまざまな環境で AI/BI Genie を利用し、自然言語でデータインサイトを取得 できるようになります。さらに、Conversation APIs を使用すれば、Agent Framework の有無にかかわらず、あらゆるAIエージェントに AI/BI Genie を組み込むことが可能 です。
Genie Conversation API スイート を使うと、自然言語のプロンプトをプログラムで送信し、Genie のユーザーインターフェースと同じようにデータインサイトを取得 できます。また、このAPIは ステートフル(状態を保持) なため、会話の流れを理解し、フォローアップの質問にも対応できます。
本ブログでは、パブリックプレビューで利用可能な主要エンドポイント、Mosaic AI Agent Framework との統合、Microsoft Teams チャネルへの組み込み例 について詳しく解説します。
ここでは、Genie Conversation APIs の実際の動作を理解するための具体的な例 を紹介します。
まず重要なのは、Conversation APIs は 既に作成された Genie Space と連携する必要がある という点です。最適な設定を行うために、まずは製品ドキュメントを参照し、Genie Space のセットアップを完了 してから、以下のベストプラクティスに従って構成を進めることをおすすめします。
たとえば、マーケティングデータに関する質問に対応する Genie Space をすでに作成・設定し、チームと共有しているとします。そして、マーケティングチームがこのスペースを活用して質問し、インサイトを得られるようにしたいと考えています。しかし、Genie の UI からアクセスするのではなく、外部アプリケーション内で直接質問できるようにしたい という場合を想定します。
まず、マーケティングチームが 「昨日、どの顧客にメールで連絡を取ったか?」 という質問をするケースを考えましょう。この質問を Genie Conversation APIs を使用して送信するには、以下のエンドポイントに POST リクエスト を送る必要があります。
/api/2.0/genie/spaces/{space_id}/start-conversation
このエンドポイントは、新しい会話スレッドを開始し、指定した質問を 初回のプロンプトとして送信 します。これは、Genie Space UI で直接質問する場合と同じ動作です。
リクエストを送信する際は、以下の情報を含める必要があります。
Genie Space ID は、以下のような Genie Space の URL から取得できます。
https://example.databricks.com/genie/rooms/12ab345cd6789000ef6a2fb844ba2d31
以下は、正しい POST リクエストの例 です:
POST /api/2.0/genie/spaces/{space_id}/start-conversation |
リクエストが正しく送信されると、API は 作成された会話スレッドとメッセージ を含むレスポンスを返します。
以下はその例です:
{ “conversation_id": "6a64adad2e664ee58de08488f986af3e", "conversation": { "created_timestamp": 1719769718, "conversation_id": "6a64adad2e664ee58de08488f986af3e", "last_updated_timestamp": 1719769718, "space_id": "3c409c00b54a44c79f79da06b82460e2", "title": "Which customers did we reach out to via email yesterday?", "user_id": 12345 }, “message_id": "e1ef34712a29169db030324fd0e1df5f", "message": { "attachments": null, "content": "Which customers did we reach out to via email yesterday?", "conversation_id": "6a64adad2e664ee58de08488f986af3e", "created_timestamp": 1719769718, "error": null, "message_id": "e1ef34712a29169db030324fd0e1df5f", "last_updated_timestamp": 1719769718, "query_result": null, "space_id": "3c409c00b54a44c79f79da06b82460e2", "status": "IN_PROGRESS", "user_id": 12345 } } |
conversation_id と message_id を使用して、メッセージの生成ステータスをポーリングし、生成されたSQL文およびクエリの説明を取得できます。
方法は以下のとおりです:
GET /api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id} HOST= <WORKSPACE_INSTANCE_NAME> Authorization: Bearer <your_authentication_token> |
以下は、レスポンスの例です:
{ "attachments": [{ "query": { "description": "Query description in a human readable format", "last_updated_timestamp": 1719769718, "query": "SELECT * FROM customers WHERE date >= CURRENT_DATE() - INTERVAL 1 DAY", "title": "Query title", "statement_id": "9d8836fc1bdb4729a27fcc07614b52c4", "query_result_metadata": { "row_count": 10 }, } 'attachment_id': '01efddddeb2510b6a4c125d77ce176be' }], "content": "Which customers did we reach out to via email yesterday?", "conversation_id": "6a64adad2e664ee58de08488f986af3e", "created_timestamp": 1719769718, "error": null, "message_id": "e1ef34712a29169db030324fd0e1df5f", "last_updated_timestamp": 1719769718, "space_id": "3c409c00b54a44c79f79da06b82460e2", "status": "EXECUTING_QUERY", "user_id": 12345 } |
メッセージのステータスフィールドが "COMPLETED"
になったら、生成されたSQL文の実行が完了し、クエリ結果を取得できる状態 になっています。
以下の方法でレスポンスを取得できます:
GET /api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/attachments/{attachment_id}/query-result HOST= <WORKSPACE_INSTANCE_NAME> Authorization: Bearer <your_authentication_token> |
もちろん、会話スレッド内でフォローアップの質問を送信する ことも可能です。
例えば、マーケティングチームが次に 「これらの顧客のうち、メールを開封し転送したのは誰か?」 という質問をしたい場合を考えます。
この場合、既存の会話スレッドに対して、新しいプロンプトを含む POST リクエストを送信 します。
リクエストの形式は以下のとおりです:
|
以前のプロンプトのデータを更新したい場合、API を使用して、過去に生成された SQL クエリを再実行することも可能 です。
詳しい API エンドポイントの情報については、製品ドキュメンテーションをご参照ください。
最適なパフォーマンスを確保するために、以下の API ベストプラクティスを推奨します:
Conversation APIs は、databricks_langchain.genie ラッパーを使用して、Mosaic AI Agent Framework にシームレスに統合されます。
例えば、マーケティングマネージャーが以下の3つのトピックについて質問に答える必要がある とします:
このような構造化データと非構造化データの両方に関する質問に答えるための マルチエージェントフレームワーク を構築できます。例えば、次のような Langgraph エージェントフレームワーク を定義することができます。
エージェントフレームワークのグラフは次のようになります:
あなたのエージェントフレームワークは、質問を関連するエージェントに適切に送信できるようになります。例えば、マーケティングマネージャーが「2月1日のイベントの参加者を見せて」と質問した場合、GenieEvents エージェント が起動されます。MLFlow のトレースは、フレームワークの処理ステップを次のように示します:
エージェントフレームワークは、エージェント同士が 回答をコンテキストとして共有 できる機能も提供します。これにより、ユーザーは 複数のソースからデータをシームレスに取得 することができます。例えば、マーケティングマネージャーが「これらの参加者のうち、誰がメール通知にサインアップしたか?」 と掘り下げて質問した場合、フレームワークは 以前の回答(GenieEvents のデータ)をコンテキストとして利用し、GenieEmails エージェント を起動します。
このアプローチにより、ビジネスユーザーは複数のトピックやデータタイプにまたがるデータ質問に回答 でき、その回答を基に次の質問を進める ことができるようになります。
Conversation API のプライベートプレビュー期間中、Microsoft Teams は顧客が Genie と統合した最も人気のある生産性ツールの一つでした。この統合により、ユーザーは Teams UI を離れることなく、質問をしてインサイトを瞬時に得る ことができます。
これを実現するためには、以下のステップを踏む必要があります:
Microsoft Teams 用の Conversation API の設定方法についての詳細な例は、以下の記事をご参照ください:
以下の例は、プライベートプレビュー期間中に Conversation API を使用した実際のアプリケーション です。ブラジルの大手小売業者 Casas Bahia は、オンラインと広範な物理店舗ネットワークを通じて何百万もの顧客にサービスを提供しています。Genie Conversation APIs を統合することで、Casas Bahia は全社のユーザー(Cクラスの経営者を含む)が Microsoft Teams 環境内で直接 Genie とやり取りできるようにしました。
このユースケースについてさらに詳しく知りたい方は、Casas Bahia のカスタマーストーリー をご覧ください。
「Teams に Genie を統合することは、データの民主化にとって大きな前進でした。これにより、技術的なバックグラウンドに関係なく、誰でもデータインサイトにアクセスできるようになりました。」— Cezar Steinz, データオペレーションマネージャー, Grupo Casas Bahia
Genie Conversation APIs がパブリックプレビューとして利用可能 になった今、ビジネスユーザーはあらゆるプラットフォームからデータにアクセスできるようになります。始めるには、製品ドキュメンテーションを参照してください。
Genie Conversation APIs の活用方法を見るのが楽しみです。今すぐ Genie スペースを作成 してみてください。多くのコンテンツが用意されています。AI/BI と Genie のウェブページを訪問したり、豊富な製品デモのライブラリをチェックしたり、ぜひ AI/BI Genieのドキュメンテーション をご覧ください。
Databricks チームは、AI/BI Genie の体験を常に改善しようとしています。皆様のフィードバックをお待ちしています!