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

お世話になっております。
AIエージェント機能におけるデータセットの可視化方法についてご相談させていただきたく存じます。
AIエージェントを活用して一連のデータ分析作業を実行したいと考えておりますが、その中で可視化を行う場合、Agent Toolsのような形で可視化機能は提供されているのでしょうか。
あるいは、可視化用のコードを生成するエージェントを用意し、その結果を表示する形になるのでしょうか。
ご教示いただけますと幸いです。何卒よろしくお願いいたします。
Answers
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 269 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: 269 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: 269 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: 269 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のイメージが少しずつつかめてまいりました。
いただいた内容を参考にエージェントの作成を試してみたいと思います。
今後また不明点が出てくるかと思いますが、その際はご相談させていただければ幸いです。
引き続きよろしくお願いいたします。