# Treasure DataのAIシステムの仕組み

Treasure DataのAIシステムは、セキュリティとプライバシーを念頭に置いて設計されており、最大限の機能と将来の開発を提供する最も簡潔なアーキテクチャを備えています。この目的のために、システムは以下に説明するいくつかの異なるパラダイムで機能すると概念化できます:

**大規模言語モデル(LLM)への単一エージェント呼び出し**

AIシステムとの最も単純なやり取りは、ユーザーが1つのエージェントのみとやり取りし、そのエージェントがLLMを直接呼び出す場合です。次のステップを実行する可能性があります:

1. ユーザーがユーザープロンプトをシステムに入力します。
2. ユーザープロンプトとシステムプロンプトがLLMをホストするサービス(例: Amazon Bedrock)に送信されます。
3. LLMをホストするサービスがエージェントに応答を返します。
4. エージェントが応答をUIに渡し、ユーザーに表示されます。


この場合、出力はLLMがトレーニングされた目的関数を満たす応答を返す能力のみを使用して生成され、ユーザープロンプトとシステムプロンプトがコンテキストとして使用されます。

**ナレッジベースへのRetrieval Augmented Generation (RAG)を使用したLLMへの単一エージェント呼び出し**

より洗練されたやり取りでは、LLMを使用してナレッジベースに基づいた回答が最適なクエリのユーザーの意図を理解し、RAGアーキテクチャを活用してナレッジベースに直接クエリを実行し、結果を返して解釈します。次のステップを実行する可能性があります:

1. ユーザーがユーザープロンプトをシステムに入力します。
2. ユーザープロンプトとシステムプロンプトがLLMをホストするサービス(例: Amazon Bedrock)に送信されます。
3. LLMをホストするサービスがエージェントに応答を返します。
  1. 応答には、自然言語のリクエストを機械可読(例: SQL)コードに変換することが含まれます。
4. コードはエージェントによってTreasure Data内の環境に渡され、そこでコード(例: クエリ)が実行され、完了するまで待機し(例: クエリの実行)、その後応答(例: クエリ応答)がエージェントに返され、エージェントは追加のコンテキストとしてLLMをホストするサービスに送信します。
5. LLMをホストするサービスは、コード/クエリの出力と以前のコンテキストを使用して応答を作成します。
6. エージェントが応答をUIに渡し、ユーザーに表示されます。


**LLMへのスーパーバイザーエージェントとサブエージェント呼び出し**

もう一つの洗練されたやり取りでは、スーパーバイザーエージェントがLLMを活用して、実行すべき狭義に定義されたタスクを持つサブエージェントを特定し、スーパーバイザーエージェントに応答を返します。次のステップを実行する可能性があります:

1. ユーザーがユーザープロンプトをシステムに入力します。
2. スーパーバイザーエージェントのコンテキストでのユーザープロンプトとシステムプロンプトがLLMをホストするサービス(例: Amazon Bedrock)に送信されます。
3. LLMをホストするサービスが、AI Agent Foundryで事前設定されたサブエージェントを呼び出す必要があるという応答をスーパーバイザーエージェントに返します。
4. コンテキストがサブエージェントに渡され、サブエージェントはスーパーバイザーエージェントのユーザープロンプトとシステムプロンプト、およびサブエージェントのシステムプロンプトを活用します。
5. LLMをホストするサービスがサブエージェントに応答を返します。
6. サブエージェントが出力をスーパーバイザーエージェントに返します。
7. スーパーバイザーエージェントが、ユーザーの意図が満たされたことを確認するために、応答をLLMをホストするサービスに返します。
8. LLMをホストするサービスが、すべての前のステップをコンテキストとして応答を作成します。
9. エージェントが応答をUIに渡し、ユーザーに表示されます。


**ナレッジベースへのRAGを使用したLLMへのスーパーバイザーエージェントとサブエージェント呼び出し**

最後に、複数のエージェントの調和により、特定のエージェントがナレッジベースへのRAG呼び出しなどの特定のツールを利用できるようになります。Treasure DataのAudience Agentでも同様のアーキテクチャとプロセスが使用されています。

1. ユーザーがユーザープロンプトをシステムに入力します。
2. スーパーバイザーエージェントのコンテキストでのユーザープロンプトとシステムプロンプトがLLMをホストするサービス(例: Amazon Bedrock)に送信されます。
3. LLMをホストするサービスが、AI Agent Foundryで事前設定されたサブエージェントを呼び出す必要があるという応答をスーパーバイザーエージェントに返します。
4. コンテキストがサブエージェントに渡され、サブエージェントはスーパーバイザーエージェントのユーザープロンプトとシステムプロンプト、およびサブエージェントのシステムプロンプトを活用します。
  1. 応答には、自然言語のリクエストを機械可読(例: SQL)コードに変換することが含まれます。
5. コードはTreasure Data内の環境に渡され、そこでコード(例: クエリ)が実行され、完了するまで待機し(例: クエリの実行)、その後応答(例: クエリ応答)が追加のコンテキストとしてLLMをホストするサービスに返されます。
6. LLMをホストするサービスが、コード/クエリの出力と以前のコンテキストを使用して応答を作成します。
7. LLMをホストするサービスがサブエージェントに応答を返します。
8. サブエージェントが出力をスーパーバイザーエージェントに返します。
9. スーパーバイザーエージェントが、ユーザーの意図が満たされたことを確認するために、応答をLLMをホストするサービスに返します。
10. LLMをホストするサービスが、すべての前のステップをコンテキストとして応答を作成します。
11. エージェントが応答をUIに渡し、ユーザーに表示されます。