DataRobot「データと会話する」エージェント：組織独自のLLMでデータ分析を強化する



　　　　　　　　　<img width="400" alt="Gemini_Generated_Image_p96z8vp96z8vp96z.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/ca38e32d-d1b7-4836-af1b-7dfa74c1684b.jpeg">
   
### 1. はじめに
こんにちは、DataRobot Japan副社長の小川です。元々はDataRobotで金融業界のお客様を担当していたデータサイエンスで、ゲーム理論やオペレーションリサーチの分野を専門としていました。

今回は、DataRobotが提供する「データと会話する」エージェントに焦点を当て、そのカスタマイズ性と、組織独自のLLMを活用したデータ分析の可能性について解説します。

[「データと会話する」エージェント](https://github.com/datarobot-community/talk-to-my-data-agent)は、データとの対話を可能にし、ファイル、スプレッドシート、クラウドデータ（Snowflake、BigQuery）、SAPなどから実用的なインサイトを抽出する革新的なツールです。AIカタログに接続すれば、DataRobot内のデータセットも利用できます。

本記事では、このエージェントを組織のニーズに合わせてカスタマイズする方法と、独自のLLMを組み込むことで、より高度なデータ分析を実現する手法について紹介します。

### 2. 「データと会話する」エージェントの概要
「データと会話する」エージェントは、ユーザーが自然言語でデータに関する質問をすると、AIがビジネス分析を推奨し、結果を解釈するためのグラフ、表、コードを生成します。

主な特徴は以下の通りです。
- データソースの多様性：ファイル、スプレッドシート、Snowflake、BigQuery、SAP Datasphere、DataRobot AIカタログなど、多様なデータソースに対応。
- 自然言語による対話：ユーザーは自然言語で質問するだけで、必要な情報を取得可能。
分析結果の可視化：グラフや表を用いて、分析結果を分かりやすく表示。
- コード生成：分析に使用したコードを生成し、ユーザーが再利用やカスタマイズ可能。

### 3. LLM設定のカスタマイズ
「データと会話する」エージェントは、infra/settings_generative.py を編集することで、利用するLLMを柔軟に変更できます。

- デフォルトでは、LLM=GlobalLLM.AZURE_OPENAI_GPT_4_O が設定されていますが、組織で契約済みの別のLLMや、NvidiaのNIMを活用したクローズドなLLMも利用可能です。
- .env ファイルで OPENAI_API_DEPLOYMENT_ID を設定すれば、Azure組織内で使用するモデルを上書きできます。

既存のTextGenモデルまたはデプロイメントを使用する場合は、
- LLM=GlobalLLM.DEPLOYED_LLM を設定し、.env ファイルで TEXTGEN_REGISTERED_MODEL_ID または TEXTGEN_DEPLOYMENT_ID を指定します。
- CHAT_MODEL_NAME で、デプロイメントが想定するモデル名を指定します（例：Anthropicの claude-3-7-sonnet-20250219、NIMモデルの datarobot-deployed-llm）。
- utils/api.py の ALTERNATIVE_LLM_BIG と ALTERNATIVE_LLM_SMALL を使用すると、タスクごとに異なるLLMを指定できます。
- pulumi up を実行してスタックを更新します (または[quickstart.py](https://qiita.com/DataRobot_PR/items/9ee48a768f5ca9d745b4)を再実行します)。

### 4. プロンプトのカスタマイズ
talk-to-my-data-agent/utils/prompts.py 内のプロンプトを編集することで、エージェントの出力形式や詳細度をカスタマイズできます。

例えば、SYSTEM_PROMPT_BUSINESS_ANALYSIS を編集することで、出力言語を日本語に変更したり、より専門的な説明や、逆に平易な説明を生成させたりできます。

```python
SYSTEM_PROMPT_BUSINESS_ANALYSIS = """
ROLE:
You are a business analyst.
Your job is to write an answer to the user's question in 3 sections: The Bottom 
Line, Additional Insights, Follow Up Questions.

The Bottom Line
Based on the context information provided, clearly and succinctly answer 
the user's question in plain language, tailored for 
someone with a business background rather than a technical one.
```
***↓↓↓***

```python
SYSTEM_PROMPT_BUSINESS_ANALYSIS = """
ROLE:
You are a business analyst. You are a professional working in the wholesale 
sector of the financial industry.
Your job is to write an answer to the user's question in 3 sections: The Bottom 
Line, Additional Insights, Follow Up Questions. Your answers should be in 
Japanese and should be simple and clear so that even those without financial 
industry expertise can understand them.

The Bottom Line
Based on the context information provided, clearly and succinctly answer 
the user's question in plain language, tailored for 
someone with a business background rather than a technical one.
```

### 5. まとめ
「データと会話する」エージェントは、LLMの設定やプロンプトをカスタマイズすることで、組織のニーズに合わせたデータ分析環境を構築できます。今回は紹介していませんが、UIを変えることや対応するデータ型をカスタマイズしてより実務にフィットする形でエージェントアプリを提供することもできます。

このエージェントを活用することで、データ分析の効率化と、より深いインサイトの獲得が期待できます。