エージェントは、大規模言語モデル(LLM)を中心的な計算エンジンとして利用する高度なAIシステムです。推論能力と、計画や外部ツールの使用などの追加機能を組み合わせて、複雑なタスクを自律的に実行します。エージェントは、複雑な問い合わせを分解し、ステップバイステップの解決策を生成し、情報収集やサブタスクの実行のために外部のツールやAPIと対話することができます。
このサンプルは、ReAct(Reasoning + Acting)アプローチを使用してエージェントを実装しています。ReActにより、エージェントは推論とアクションを反復的なフィードバックループで組み合わせて、複雑なタスクを解決できます。エージェントは、「思考」、「行動」、「観察」の3つの重要なステップを繰り返し実行します。LLMを使用して現在の状況を分析し、次に取るべきアクションを決定し、利用可能なツールやAPIを使用してアクションを実行し、観察結果から学習します。この継続的なプロセスにより、エージェントは動的な環境に適応し、タスク解決の精度を向上させ、文脈を意識したソリューションを提供できます。
ReActを使用するエージェントは、さまざまなシナリオで正確かつ効率的なソリューションを提供できます。
ユーザーが「前四半期の総売上」を尋ねます。エージェントはこのリクエストを解釈し、SQLクエリに変換し、データベースに対して実行し、結果を提示します。
財務アナリストが次の四半期の収益を予測する必要があります。エージェントは関連するデータを収集し、財務モデルを使用して必要な計算を実行し、予測の正確性を確保しながら詳細な予測レポートを生成します。
カスタマイズしたチャットボットのエージェント機能を有効にするには、次の手順に従ってください:
-
カスタムボット画面のエージェントセクションに移動します。
-
エージェントセクションには、エージェントが使用できるツールのリストがあります。デフォルトでは、すべてのツールは無効になっています。
-
ツールを有効にするには、目的のツールの横にあるスイッチを切り替えるだけです。ツールが有効になると、エージェントはそのツールにアクセスでき、ユーザークエリの処理に利用できます。
[!重要] エージェントセクションでツールを有効にすると、「ナレッジ」機能も自動的にツールとして扱われることに注意してください。これは、LLMがユーザークエリに答える際に、「ナレッジ」を使用するかどうかを自律的に判断し、利用可能なツールの1つとして考慮することを意味します。
- デフォルトで「インターネット検索」ツールが提供されています。このツールにより、エージェントはインターネットから情報を取得し、ユーザーの質問に答えることができます。
このツールはDuckDuckGoに依存しており、レート制限があります。概念実証(PoC)またはデモ目的には適していますが、本番環境で使用する場合は、別の検索APIの使用をお勧めします。
- エージェントの機能を拡張するために、独自のカスタムツールを開発して追加できます。カスタムツールの作成と統合の詳細については、独自のツールの開発方法セクションを参照してください。
エージェント用の独自のカスタムツールを開発するには、以下のガイドラインに従ってください:
-
AgentTool
クラスを継承する新しいクラスを作成します。インターフェースは LangChain と互換性がありますが、このサンプル実装は独自のAgentTool
クラスを提供しており、そこから継承する必要があります(ソース)。 -
BMI 計算ツールのサンプル実装を参照してください。この例は、ユーザー入力に基づいてボディマス指数(BMI)を計算するツールの作成方法を示しています。
- ツールで宣言された名前と説明は、LLM がユーザーの質問に応答するためにどのツールを使用すべきかを検討する際に使用されます。つまり、LLM を呼び出すプロンプトに埋め込まれます。そのため、できるだけ正確に記述することをお勧めします。
-
[オプション] 独自のカスタムツールを実装したら、テストスクリプト(例)を使用してその機能を確認することをお勧めします。このスクリプトは、ツールが期待通りに動作していることを確認するのに役立ちます。
-
カスタムツールの開発とテストが完了したら、実装ファイルを backend/app/agents/tools/ ディレクトリに移動します。次に、backend/app/agents/utils.py を開き、
get_available_tools
を編集して、ユーザーが開発したツールを選択できるようにします。 -
[オプション] フロントエンド用に明確な名前と説明を追加します。このステップはオプションですが、このステップを行わない場合、ツールで宣言された名前と説明が使用されます。これらは LLM 用であり、ユーザー用ではないため、より良いUXのために専用の説明を追加することをお勧めします。
- i18n ファイルを編集します。en/index.ts を開き、
agent.tools
に独自のname
とdescription
を追加します。 xx/index.ts
も同様に編集します。xx
は希望の国コードを表します。
- i18n ファイルを編集します。en/index.ts を開き、
-
npx cdk deploy
を実行して変更をデプロイします。これにより、カスタムツールがカスタムボット画面で利用可能になります。
ツールリポジトリへの貢献を歓迎しています! 有用で適切に実装されたツールを開発した場合、課題(issue)やプルリクエストを提出してプロジェクトに貢献することを検討してください。