AIエージェントによるデータの可視化について

お世話になっております。
AIエージェント機能におけるデータセットの可視化方法についてご相談させていただきたく存じます。
AIエージェントを活用して一連のデータ分析作業を実行したいと考えておりますが、その中で可視化を行う場合、Agent Toolsのような形で可視化機能は提供されているのでしょうか。
あるいは、可視化用のコードを生成するエージェントを用意し、その結果を表示する形になるのでしょうか。
ご教示いただけますと幸いです。何卒よろしくお願いいたします。
Answers
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 297 Dataiker
ご質問に記載の「可視化機能」は「チャートなどを利用して、データの内容をビジュアル表示する機能」を指していると理解いたしました。その前提ですと、現時点でDataikuが提供するAgent Toolには、データをチャート表示する機能はまだ存在しない状況です。(もし、データをテーブル形式で可視化できれば良い場合には、標準のToolで対応可能です。)
独自Toolの開発は可能ですが、チャットUI(Answer / Agent Connect)側で、まだUI内のチャート表示に対応していない状況となります。今後、Answers / Agent Connectから自然言語で問い合わせて、結果をチャート表示する機能の提供は予定されていますので、状況によっては、そちらをお待ちいただく案も考えられます(具体的な提供時期はまだ未公開となります)。
現時点で対応する場合には、独自のToolを開発して、matplotlib, seaborn, plotlyなどのPythonコードをLLMに生成させ、Tool内でチャート画像とHTMLを生成し、その内容を独自開発したWebapp上で表示するような対応になると思います(開発作業がそれなりに発生することにはなります)。
また、別の機能とはなりますが、データからインサイトとスライドを生成・共有する機能として「Dataiku Stories」という機能は存在します。
https://knowledge.dataiku.com/latest/collaboration/stories/concept-stories.html
(この「Dataiku Stories」は、アドホックな分析というよりも、組織内で共有する動的なスライドを作成する機能という位置付けとなります。また、上位パッケージでのみ利用可能、ベータ版という位置付けであるため、今回のご質問にはフィットしないと考えられますが、参考までに上記リンクを記載いたします。) -
ありがとうございます!
現時点で可視化を行う場合は、コード生成+WebAppでの実装が必要であること承知いたしました。あわせて「SQL Question Answering Tool」についてもお伺いさせてください。
①「Dataset Lookup Tool」との使い分けについて、以下のような理解でよろしいでしょうか。
フィルタリング+上位x件までの表示 → Dataset Lookup Tool
それ以外のケース → SQL Question Answering Tool②「SQL Question Answering Tool」に関するチュートリアルや、設定・挙動の参考となるドキュメントはございますでしょうか。
③複数のデータソースに対してクエリを実行できると理解していますが、以下についても確認させてください。
・異なるコネクション(Excel、Snowflake、BigQuery など)に対しても実行可能でしょうか。
・AIエージェントが複数データソースの中から適切なものを選択して検索を実行させる場合、どのような設計がベストプラクティスでしょうか。
・マルチエージェント構成(例:データソース選択エージェントとSQL実行エージェントを分ける)とするべきか
・データセットのメタデータ管理が必要かなど具体性に欠ける部分もあり恐縮ですが、ご存知の範囲でご教示いただけますと幸いです。
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 297 Dataiker
以下、回答いたします。
①「Dataset Lookup Tool」との使い分けについて、以下のような理解でよろしいでしょうか。
フィルタリング+上位x件までの表示 → Dataset Lookup Tool
それ以外のケース → SQL Question Answering Toolはい。基本的な使い分け方の基準としては、ご記載の考え方で合っていると思います。
②「SQL Question Answering Tool」に関するチュートリアルや、設定・挙動の参考となるドキュメントはございますでしょうか。
現状では、ご記載いただいたURLの文書以外にはドキュメントが存在しない状況です。
ただ、この「SQL Question Answering Tool」は、Dataiku Answersが提供する「Dataset Retrieval」とほとんど同様な機能ですので、以下のドキュメントをある程度は参考にしていただくことが可能と思います。
https://doc.dataiku.com/dss/latest/generative-ai/chat-ui/answers.html#dataset-retrieval-parameters
(Joinのキーマッピング設定は、現時点のToolには存在せず暗黙的に行われますが、今後設定が追加される可能性はあります。)③複数のデータソースに対してクエリを実行できると理解していますが、以下についても確認させてください。
・異なるコネクション(Excel、Snowflake、BigQuery など)に対しても実行可能でしょうか。「SQL Question Answering Tool」は、SQLデータベースが対象のため、Excelには対応しておりません。
もし、Excelのデータを対象にしたい場合は、事前にDataikuのデータセットを作成して、データをDBに格納しておく必要があります。もし仮に「その場でExcelファイルをアップロードして動的に利用したい」という要件の場合は、別途Webappを開発して、Webapp側で処理を実装する必要があります。また、現時点で「正式」にサポートしているDBを確認しましたところ、SnowflakeとPostgreSQLでした。
(ただ、今後以下リンクに記載のDBはサポートされる可能性があります。)
https://doc.dataiku.com/dss/latest/generative-ai/chat-ui/answers.html#infrastructure・AIエージェントが複数データソースの中から適切なものを選択して検索を実行させる場合、どのような設計がベストプラクティスでしょうか。
アプリの特性、想定用途によって、最適な構成は異なりますが、基本的には一つのエージェントから複数のツールを使い分ける対応で良いと考えられます。(=データソース毎に異なる「SQL Question Answering Tool」を定義して、エージェントがどのツールを呼び出すかを判断。)
別の方法として、異なるデータソース毎に別々のDataiku Answersインスタンスを作成し、前述の「Dataset Retrieval」でデータを取得、それぞれのAnswersをAgent Connectで統合する方法も存在します。しかし、異なる用途毎に別々のチャットUI(Answers)を提供する必要がない場合は、上記の「一つのエージェントで複数のツールを制御」する方が、構成がシンプルになってメンテナンスしやすいと思います。
・マルチエージェント構成(例:データソース選択エージェントとSQL実行エージェントを分ける)とするべきか
いえ。複数のデータソースを使い分けることだけが目的の場合、一つのエージェント内で、データソースの選択ロジックを記述して、複数のツール(SQL実行ツールなど)を使い分ける対応で良いと考えられます。
・データセットのメタデータ管理が必要かなど
はい。前述の「Dataset Retrieval」のドキュメントに記載のように、データセットとカラムのDescriptionが定義されている場合、ツール側でより正確な判断が行えるため、Descriptionの値を入れておくことを推奨します。(メタデータの追加には、Version 14.0で導入された「Generate Metadata」機能も便利ですので、こちらもご活用ください!)
-
お世話になっております。
詳しくご教示いただきありがとうございます。
SQL Question Answering Tool および複数データソース検索に関するエージェント構成について、大変勉強になりました。追加で確認させていただきたいのですが、SQL Question Answering Tool で対応可能なケースと、Python でコード生成が必要なケースの分岐についても教えていただけますでしょうか。
私の理解では、SQL のSELECT
による集約、結合、集計は SQL Question Answering Tool で実行可能だと認識しております。
一方で、データの可視化以外で SQL Question Answering Tool では対応できず、Python コード生成が必要となるケース があれば、具体例をご教示いただけますと幸いです。達成したいこととしては、データ分析業務をエージェントで実行すること です。
大まかな流れとしては以下を想定しており、③可視化以外は dataiku のエージェント機能で対応可能と考えております。- データソースの探索
- データの集計(複数データの結合、集約を含む)
- 集計結果の可視化
- 集計結果の説明/示唆出し
ご確認のほどよろしくお願いいたします。
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 297 Dataiker
「データの可視化以外で SQL Question Answering Tool では対応できず、Python コード生成が必要となるケース」という観点で、以下コメントいたします。
ーーーーー
SQL Question Answering Toolを利用する場合、事前に分析対象のデータセットを指定しておく必要があります。データソースの用途別に「SQL Question Answering Tool」を複数定義し、その中から最適なデータソースをエージェントに選択させることは可能ですが、質問内容に合わせて対象データセットを動的に探索する処理は、現状のツールでは提供しておりません。このため、例えば「質問内容に合わせてDataikuのカタログコレクションに登録された全てのデータセットから最適なデータセットを動的に抽出し、それらのデータセットに対してデータ集計を行う」ような要件の場合、現状では独自のカスタムツールを作成し、コードで処理を実装する対応が必要となります。
また、コメントに記載していただいた通り、SQL Question Answering Toolが対応可能な処理は「SQL の SELECT による集約、結合、集計」になりますので、そのような探索・集計の範囲を超える処理を実現したい場合には、独自カスタムツールの開発が必要になると考えられます。
-
お世話になっております。
ご返信ありがとうございます!
質問内容に合わせて対象データセットを動的に探索する処理は、現状のツールでは提供しておりません。
「動的に探索する」とは具体的にどのような処理を指しているのでしょうか。
例えば、中間マートを作成してデータとして保持するような処理は、現状のSQL Question Answering Toolでは対応できないという理解で合っておりますでしょうか。イメージとしては、2つのデータソースを参照して結合し、その結果に対して「要素の置換 → カラム名の変更 → 集計」といった一連の処理を1つのToolで実行するようなケースを想定しています。
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 297 Dataiker
ご確認をいただきまして、ありがとうございます。ご質問内容について、以下回答いたします。
「動的に探索する」とは具体的にどのような処理を指しているのでしょうか。
例えば、中間マートを作成してデータとして保持するような処理は、現状のSQL Question Answering Toolでは対応できないという理解で合っておりますでしょうか。「SQL Question Answering Tool」は、「定義画面で事前に指定した一連のデータセット(テーブル)の中から該当するテーブルを特定し、そのテーブルに対してクエリを実行する機能」となります。「動的に探索する」は、このような事前指定無しにデータセット全体から該当するデータセット(テーブル)を特定することを意図していました。
その名前の通り、ツールが行う処理は「SQLの取得結果をエージェントに返す」ところまでのため、「中間マートを作成してデータとして保持」には「SQL Question Answering Tool」単体では対応しておりません。(「中間マートを作成」するカスタムツールを別途開発して、そのツールと連携させる対応は可能です。)
イメージとしては、2つのデータソースを参照して結合し、その結果に対して「要素の置換 → カラム名の変更 → 集計」といった一連の処理を1つのToolで実行するようなケースを想定しています。
以前の回答に記載のように、「SQL の SELECT による集約、結合、集計」で対応可能な範囲については、「SQL Question Answering Tool」で対応可能です。
しかし、その範囲を超える場合、かつ「1つのToolで実行」したい場合は、やはりカスタムツールの開発が必要です。上記回答のように、「SQL Question Answering Tool」で「2つのデータソースを参照して結合」まで行い、「要素の置換 → カラム名の変更 → 集計」は別途カスタムツールを開発して、そのツールと連携させる対応は可能ということになります。
-
お世話になっております。
ありがとうございます!SQL Question Answering Toolのイメージが少しずつつかめてまいりました。
いただいた内容を参考にエージェントの作成を試してみたいと思います。
今後また不明点が出てくるかと思いますが、その際はご相談させていただければ幸いです。
引き続きよろしくお願いいたします。 -
お世話になっております。
こちらのスレッドではじめに質問させていただいたエージェントでの可視化について改めてお伺いさせてください。
エージェントでのデータ可視化について現時点で対応する場合には、
「独自のToolを開発して、matplotlib, seaborn, plotlyなどのPythonコードをLLMに生成させ、Tool内でチャート画像とHTMLを生成し、その内容を独自開発したWebapp上で表示するような対応になる
」とご回答いただきました。
その際の実装の参考となるドキュメントなどはございますでしょうか。エージェント側でのコード生成については、以下チュートリアルの The Web Writer Agent のようなイメージを持っておりますが、生成したHTMLをWebApp上で表示する具体的な実装方法がイメージできておらず、ご質問させていただきました。
https://developer.dataiku.com/latest/tutorials/genai/agents-and-tools/multi-agent/index.htmlよろしくお願いいたします。
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 297 Dataiker
チャット用の独自Webアプリを作成する方法に関しましては、Dataikuに特化した内容というよりは、一般的なWebアプリの開発方法に関する内容となりますため、具体的な方法を説明したDataikuドキュメントは少ないのですが、例えば以下のドキュメントでは、シンプルな問い合わせ用のWebアプリをDashで実装した場合の例を記載しています。
ツールがHTMLを出力する場合、ツールのアウトプット(HTMLタグを含むテキスト)をそのままWebアプリのテキスト表示部分(上記ドキュメントの例では、dbc.Textarea(id="text_output" ... のID部分)に渡すことで、内容が表示されるはずです。ツール側でチャートを画像として生成する場合は、画像を一時的にマネージドフォルダに格納する必要がありますが、そのような方法は、以下のドキュメントを参考にしていただけます。
一方、マネージドフォルダに格納した画像をDashのWebアプリ内で取得・表示する方法は、以下のドキュメントを参考にしていただけます。(このドキュメントの例のように、画像表示部分はツール側でHTMLを生成するのではなく、Webアプリ側でHTMLに変換する形でよいかもしれません。)
https://developer.dataiku.com/latest/tutorials/webapps/common/resources/index.html#displaying-an-imageまた、ツール側でチャート用のPythonコード生成や実行を行う方法につきましては、ClaudeやGPT5等を利用して、「ユーザーからのデータ可視化依頼に応じて、動的にチャート生成と表示を行うエージェント、ツール、Dashを利用したWebチャットアプリのサンプルコード」を生成して参考にすることもできるかと思います。
参考:標準のチャットUIに関する「チャート表示機能」の対応可能性について
上記のように、独自のWebアプリ開発には、一定の作業が発生しますが、Dataikuの標準チャットUIでも、一番初めの回答に記載の「UI内のチャート可視化機能」の提供は予定されています。明確な情報はまだ未確定なのですが、早ければ来月リリース予定の次期バージョンで、当該機能の初期版が提供される可能性も存在します。状況によっては、そちらをお待ちいただく案も考えられるかなとは思いますが、まだ未定な部分もございますので、もしご不明な点がございましたら、別途内部のチャネル等でご相談をいただけますと幸いです。
-
お世話になっております。
ご返信が遅くなり申し訳ございません。ご丁寧に回答いただきありがとうございます。
また、標準のチャットUIに関する「チャート表示機能」への対応についてもご共有いただきありがとうございます。
こちらの機能があるとdataikuのエージェント機能が一層便利になりますね…!追加で一点ご質問させてください。
マルチエージェントでワークフローを設定する方法について、組織的な階層構造を持たせたいと考えています。
具体的には以下のようなイメージです。エージェント1(マネージャー役)
├ エージェント2
├ エージェント3ユーザーからの要求をまずエージェント1が受け取り、内容に応じてエージェント2またはエージェント3を呼び出すような構成を実現したいと考えております。
このような設定は、各エージェントを作成した上で Agent Connect から可能でしょうか?
(GUIで階層構造を定義できるのか気になっています。チュートリアルを拝見した限りでは、フラット型の構成になると理解しております。)度重なる質問で恐れ入りますが、ご教示いただけますと幸いです。
よろしくお願いいたします。 -
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 297 Dataiker
追加のご質問に関しまして、以下回答させていただきます。
このような設定は、各エージェントを作成した上で Agent Connect から可能でしょうか?
(GUIで階層構造を定義できるのか気になっています。チュートリアルを拝見した限りでは、フラット型の構成になると理解しております。)以下のような方法であれば、ご質問に記載の「階層構造をもったマルチエージェント」をAgent Connectから利用することが可能です。
- 質問に記載の「エージェント2」「エージェント3」をそれぞれVisual Agentとして作成する。
- 手順1で作成した「エージェント2」「エージェント3」をManaged Toolの「LLM Mesh Query」ツールとしてそれぞれ登録する。
- 質問に記載の「エージェント1」をVisual Agentとして作成する。
- 手順3で作成した「エージェント1」に手順2で登録した各ツールを登録する。
- 「エージェント1」のプロンプト設定に制御ロジックを記載する。
- Agent Connectの設定画面にて、「エージェント1」だけを登録する。
ーーーーー
ご認識をいただいております通り、Agent Connect内に複数のエージェントを登録した場合、質問内容に応じて、その中のいずれかのエージェントのみが利用される挙動となります。
このため、階層構造を持たせたエージェントを(Code Agentを利用せずにVisual Agentで)実行したい場合、上記の手段でエージェントを作成・実行していただくことになります。
-
お世話になっております。
早速ご教示いただきありがとうございます。
LLM Mech Queryで実現できそうです!(ドキュメントを見落としており、失礼いたしました。)
引き続きどうぞよろしくお願いいたします。