【生成AI】DataRobotと生成AIでデータと会話するエージェントを作成してみる

# はじめに
こんにちは。社内でデータサイエンティストを務めております@nttd-tamurayucです。
本記事では、DataRobot社が提供するコンテンツであるアプリケーションテンプレートの中から「データと会話するエージェント（Talk to My Data Agent）」の構築手順と使い方の一部をご紹介をいたします。

## 関連記事
[DataRobotと生成AIで顧客へのメッセージを自動作成してみた](https://qiita.com/hk13/items/a561b3a1e2ccbcbc4fd9)
[【予測AI×生成AI】DataRobotとAzureで自分用の会話エージェントを簡単構築！](https://qiita.com/hk13/items/cf30a5be5e68433585d7)

# DataRobotとは
DataRobot社は、AIに対するユニークなコラボレーション型のアプローチによってユーザーをAIサクセスに導くバリュー・ドリブン AIのリーダーです。

https://www.datarobot.com/jp/

DataRobot社の製品であるDataRobotは、10年以上にわたってユーザーの自動機械学習（AutoML）活用を支援してきたAIライフサイクル・プラットフォームであり、機械学習モデルの構築、トレーニング、評価、デプロイメントを自動化することができます。複雑なデータ分析を迅速かつ簡単に実行し、優れた予測モデルの作成と管理をサポートすることが可能です。近年では生成AI機能も強化し、予測AIとのコラボレーションによってさらなるAIサクセスの実現を加速させています。

# アプリケーションテンプレートとは
DataRobotは、アプリケーションを構築するためのさまざまなアプローチを提供しています。
アプリケーションテンプレートは、DataRobotリソースをプロビジョニングするためのコードファーストかつエンドツーエンドのパイプラインを提供します。 カスタマイズ可能なコンポーネントを備えたテンプレートは、予測と生成のユースケースをサポートするDataRobotのリソースをプログラムで生成することで、ユーザーを支援します。 テンプレートには必要なメタデータが含まれ、依存関係の構成設定の自動インストールを実行し、既存のDataRobotインフラストラクチャとシームレスに連携するので、ソリューションの迅速なデプロイと設定に役立ちます。

https://docs.datarobot.com/ja/docs/workbench/wb-getstarted/wb-app-templates/index.html


# データと会話するエージェント（Talk to My Data Agent）

今回は**生成AI**を活用して**データと会話するエージェント** を作成します。
データのアップロード、SnowflakeやBigQueryへの接続、またはDataRobotのAIカタログからデータセットにアクセスするだけで、それらのデータに対する質問を行うことができます。質問に対してエージェントがビジネス分析を実行し、結果の解釈に役立つチャート、テーブル、ソースコードの生成をすることができます。

***データ会話エージェントイメージ***
![talk-to-my-data-agent.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/cb262b76-d2c9-4004-8a1d-11651569603f.gif)

- **BIより直感的で柔軟なデータ分析**：チャットを通じたデータ可視化と分析により、ダッシュボードより柔軟で、BIツールより直感的なデータ分析を実現します
- **手元のデータをすぐに分析**：DWHに接続できるほか、CSVのアップロードにも対応することでライトユーザーも手軽に分析を行えます
- **柔軟なカスタマイズ**：接続先をDWHに変えたり、回答文やグラフ以外の内容も出力するなど、業務とユーザーの要求に適応できます


## データと会話するエージェントを作ってみる
### STEP1. [アプリケーションテンプレート]の中から[データと会話するエージェント]を開く
1. DataRobotホーム画面上部にある[アプリケーションテンプレートを参照]を選択します。
1. 利用可能なアプリケーションテンプレート一覧が表示されるので、今回は[データと会話するエージェント]を選択し、[Codespaceで開く]を押下します。
![chrome-capture-2025-3-10 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/8a4353d5-1c7e-4ded-9e8c-013d1f0446ac.gif)
1. Codespace画面に遷移するので、以降の手順はこちらの画面から実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/ca81cde5-ef89-4f82-80cc-3fcb1b422975.png)


### STEP2. 認証情報の入力、各種設定の変更

#### 【必須】DataRobot接続先情報、LLM接続先情報
[ファイル]にある`.env.template`を編集し`.env`ファイルとして保存します。
DataRobotおよびAzure OpenAI ServiceなどのLLMとの接続に必要なエンドポイントの情報やAPIキーなどを`.env`に記載します。
```.env
DATAROBOT_API_TOKEN={DataRobot API キー}
DATAROBOT_ENDPOINT={DataRobot接続先URL} # e.g. https://app.datarobot.com/api/v2
OPENAI_API_KEY={Azure OpenAI Service API キー}
OPENAI_API_VERSION={Azure OpenAI Serviceのモデルバージョン}  # e.g. 2024-02-01
OPENAI_API_BASE={Azure OpenAI Service接続先URL}  # e.g. https://your_org.openai.azure.com/
OPENAI_API_DEPLOYMENT_ID={Azure OpenAI Serviceのモデル名}  # e.g. gpt-4o
PULUMI_CONFIG_PASSPHRASE={アプリケーション用のパスフレーズ(英数字)} 
```
 #### 【任意】データベース接続先情報
データベースとの接続を行う際はその接続情報も`.env`に追記します。
```.env
# For Snowflake (Optional)
# Either password authentication:
SNOWFLAKE_USER=
SNOWFLAKE_PASSWORD=
# Or key file authentication:
SNOWFLAKE_KEY_PATH=

# Common Snowflake settings (required if using Snowflake):
SNOWFLAKE_ACCOUNT=
SNOWFLAKE_WAREHOUSE=
SNOWFLAKE_DATABASE=
SNOWFLAKE_SCHEMA=
SNOWFLAKE_ROLE=
```

 #### 【任意】システムプロンプトの修正
デフォルトでは英語での回答となるため、システムプロンプトを修正し、日本語で回答するよう指示します。(以下は修正例)
```prompts.py
SYSTEM_PROMPT_GET_DICTIONARY = """
・・・
RESPONSE:
Respond with a JSON object containing the following fields:
1) columns: A list of all of the columns in the dataset
2) descriptions: A list of descriptions for each column translated into Japanese
・・・
"""
```

ここでは、DataRobot小川さん（@ogamiki）が公開されているコードを参考に修正しています。

https://github.com/mikioogawa/talk-to-my-data-agent

### STEP3. アプリの構築
ターミナルより以下を実行します。
```
python quickstart.py YOUR_PROJECT_NAME  
```


### STEP4. アプリの起動
実行が完了するとターミナルにアプリURLが表示されるので、そこからアプリケーションを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/15ad463f-a2e9-4450-bcdb-066b98809fc0.png)

:::note info
 構築したアプリは[レジストリ]>[アプリケーション]からも起動することができます
:::
## データと会話するエージェントを動かしてみる


### データ接続&データの確認
まずは、質問対象となるデータに接続します。アップロート方法は
- ファイルアップロード（csv, xlsx, xls）
- DataRobot AIカタログ経由
- Database接続（Snowflake, BigQueryなど）
があります。

::: note warn
 Database接続を行う際は、事前に接続先情報を指定する必要があります（詳しくは[こちら](https://github.com/datarobot-community/talk-to-my-data-agent/?tab=readme-ov-file#change-the-database)）
:::
関係する複数のデータをまとめて分析したい場合は、複数のファイルをアップまとめてアップロードすることも可能です。
今回は顧客のローン情報に関する以下3つのデータセットをAIカタログ経由でアップロードしました。
1. 顧客プロファイル
1. 顧客購買履歴情報
1. 顧客ローン

データの読み込みが完了すると、以下のように生データを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/173c920e-4d7b-4e8b-a8e8-a36f7d3fa459.png)
また、データタブを[Data Dictionary]に切り替えると、データ辞書が作成されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/59524ef7-b5d7-4aef-947a-d98c37400aa8.png)
データ辞書は各カラムの意味を生成AIが記述したもので、それぞれのカラムに入っている値を参照しつつデータの持つ意味を自動で補完してくれる機能です。

### データエージェントに質問してみる
先ほどアップロードしたデータセットに対して質問をしてみます。
以下、質問とそれに対する回答結果です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/1766d512-ecdf-4aa0-bf31-16d3c9597af7.png)
データエージェントは質問に対して以下の構成で回答をしてくれています。
- **結論**：質問に対する簡潔な回答
- **分析コード・分析結果**：質問の回答に必要なデータ分析処理とその実行結果
- **チャート**：分析結果を視覚化したもの
- **追加の考察**：回答に関連する追加の考察
- **フォローアップ質問**：関連するさらなる考察を得るための質問候補

それぞれ回答結果を詳しく見てみましょう。
#### **結論**
質問に対して適切な回答がなされているようです。回答が正確かどうかは以降の結果で詳しく見てみることにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/1f3ce052-e71d-4815-99f9-63f54c491269.png)
#### **分析コード・分析結果**
回答のための情報を取得するための処理がコードで書かれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/2de8b61d-8e06-48f0-83a2-b9721b821a3e.png)
今回の質問に回答するには、
- 「年収と申請額の比」という元データにない値を計算によって新たに作成する
- 「顧客プロファイル.csv」と「顧客ローン.csv」を結合し、複数のデータを関連付けて回答する
といった処理が必要でしたが、それらを適切に実行していることが確認できます。

#### **チャート**
表だけでなく、グラフも表示してくれています。（DLも可能）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/dc096c4f-096f-4b06-b08d-2b96e4246b2b.png)

#### **追加の考察**
分析結果のまとめに加え、結果から導かれるアクションについても提案してくれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/0deae674-cdee-429b-85c6-ea6fae7b8bf1.png)

#### **フォローアップ質問**
さらなるインサイトの獲得に向けた、追加質問の候補を提示してくれています。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576399/df6c2849-4f28-4d01-899d-568047de636e.png)

# まとめ
本記事では、アプリテンプレートを用いてデータと会話するエージェントを簡単に構築できることを紹介いたしました。
今回はデフォルト設定でアプリを構築しましたが、アプリケーションテンプレートは柔軟なカスタマイズが可能のため、皆さんが実現したいことに応じてカスタマイズを行い、よりニーズにマッチしたアプリの改善が可能になります。
生成AIの活用方法の一例として、ご参考になれば幸いです。


## 仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary>1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)</summary>

クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary>2. データサイエンス領域（データサイエンティスト／データアナリスト）</summary>

データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary>3.お客様のAI活用の成功を推進するAIサクセスマネージャー</summary>

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary>4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》</summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>


## ソリューション紹介

<details><summary> Trusted Data Foundationについて</summary><div>

～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</div></details>


<details><summary> TDFⓇ-AM（Trusted Data Foundation - Analytics Managed Service）について</summary><div>

～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～
https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</div></details>


<details><summary>NTTデータとTableauについて </summary><div>

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://enterprise-aiiot.nttdata.com/service/tableau

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://enterprise-aiiot.nttdata.com/service/informatica

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</div></details>