Agents for Amazon Bedrock の仕組み - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Agents for Amazon Bedrock の仕組み

Agents for Amazon Bedrock は、エージェントのセットアップと実行に役立つ次の 2 つの主要な API オペレーションセットで構成されています。

ビルド時間の設定

エージェントは次のコンポーネントで構成されています。

  • 基盤モデル – オーケストレーションプロセスで、エージェントがユーザー入力と後続のプロンプトを解釈するために呼び出す基盤モデル (FM) を選択します。エージェントは FM を呼び出して、プロセスのレスポンスとフォローアップステップを生成します。

  • 手順 – エージェントが何をするように設計されているかを説明する手順を記述します。高度なプロンプトを使用すると、オーケストレーションの各ステップでエージェントの指示をさらにカスタマイズし、各ステップの出力を解析する Lambda 関数を含めることができます。

  • 次のいずれか。

    • アクショングループ – 次のリソースを提供することで、エージェントがユーザーに対して実行するアクションを定義します。

      • エージェントがユーザーから引き出す必要があるパラメータを定義するために、次のいずれかのスキーマ (各アクショングループは異なるスキーマを使用できます)。

        • エージェントがタスクを実行するために呼び出すことができる API オペレーションを定義するOpenAPIスキーマ。OpenAPI スキーマには、ユーザーから引き出す必要があるパラメータが含まれます。

        • エージェントがユーザーから引き出すことができるパラメータを定義する関数詳細スキーマ。これらのパラメータは、エージェントによる詳細なオーケストレーションに使用することも、独自のアプリケーションでの使用方法を設定することもできます。

      • (オプション) 次の入力と出力を持つ Lambda 関数。

        • Input – オーケストレーション中に識別される API オペレーションおよび/またはパラメータ。

        • 出力 — API 呼び出しからのレスポンス

    • ナレッジベース — ナレッジベースをエージェントに関連付けます。エージェントは、追加のコンテキストについてナレッジベースにクエリを実行して、レスポンスの生成とオーケストレーションプロセスのステップへの入力を強化します。

  • プロンプトテンプレート – プロンプトテンプレートは、FM に提供するプロンプトを作成する基礎です。Agents for Amazon Bedrock は、前処理、オーケストレーション、ナレッジベースのレスポンス生成、後処理中に使用されるデフォルトの 4 つの基本プロンプトテンプレートを公開します。オプションで、これらのベースプロンプトテンプレートを編集して、シーケンスの各ステップでのエージェントの動作をカスタマイズできます。トラブルシューティングの目的で、またはステップが不要であると判断した場合は、ステップをオフにすることもできます。詳細については、「Amazon Bedrock の高度なプロンプト」を参照してください。

ビルド時に、これらのすべてのコンポーネントが収集され、ユーザーリクエストが完了するまでエージェントがオーケストレーションを実行するための基本プロンプトが作成されます。詳細プロンプトでは、追加のロジックやいくつかのサンプルを追加して基本プロンプトを変更し、エージェント呼び出しの各ステップの正解率を向上させることができます。基本プロンプトテンプレートには、手順、アクションの説明、ナレッジベースの説明、会話履歴が含まれており、これらはすべてカスタマイズしてニーズに合わせてエージェントを変更できます。次に、エージェントを準備します。エージェントは、セキュリティ設定を含むエージェントのすべてのコンポーネントをパッケージ化します。エージェントを準備すると、実行時にテストできる状態になります。次の図は、ビルドタイム API オペレーションがエージェントを構築する方法を示しています。

ビルドタイム APIsエージェントを構築する方法。アクショングループは、エージェントが呼び出すことができる API オペレーションと、エージェントがリクエストとレスポンスを処理する方法を定義するOpenAPIスキーマと Lambda 関数で構成されます。エージェントは、基本プロンプトテンプレート、提供された手順、およびアタッチされたアクショングループとナレッジベースから情報を合成して、使用するモデルでプロンプトを生成します。プロンプトはエージェントのプロンプトストアに追加されます。

ランタイムプロセス

ランタイムは InvokeAgent API オペレーションによって管理されます。このオペレーションは、次の 3 つの主要なステップで構成されるエージェントシーケンスを開始します。

  1. 前処理 — エージェントがユーザー入力をコンテキスト化および分類する方法を管理し、入力の検証に使用できます。

  2. オーケストレーション – ユーザー入力を解釈し、アクショングループを呼び出してナレッジベースをクエリし、出力をユーザーに返すか、継続的なオーケストレーションへの入力として返します。オーケストレーションは次のステップで構成されます。

    1. エージェントが入力を基盤モデルで解釈し、次に取るべきステップのロジックを説明する理論的根拠を生成します。

    2. エージェントは、アクショングループ内のどのアクションを呼び出すか、どのナレッジベースをクエリするかを予測します。

    3. エージェントがアクションを呼び出す必要があると予測した場合、エージェントはユーザープロンプトから決定されたパラメータをアクショングループに設定された Lambda 関数に送信するか、InvokeAgentレスポンスでパラメータを送信してコントロールを返します。エージェントにアクションを呼び出すのに十分な情報がない場合は、次のいずれかのアクションを実行できます。

      • 関連するナレッジベース (ナレッジベースのレスポンス生成) をクエリして追加のコンテキストを取得し、データを要約して生成を補強します。

      • アクションに必要なすべてのパラメータを収集するためにユーザーをリプロンプトします。

    4. エージェントは、アクションを呼び出したり、ナレッジベースから結果を要約したりすることで、観測 と呼ばれる出力を生成します。エージェントはオブザベーションを使用してベースプロンプトを補足し、それを基盤モデルで解釈します。次に、エージェントはオーケストレーションプロセスを繰り返す必要があるかどうかを判断します。

    5. このループは、エージェントがユーザーにレスポンスを返すか、ユーザーに追加情報の入力を求める必要があるまで続きます。

    オーケストレーション中、ベースプロンプトテンプレートは、エージェントに追加したエージェントの指示、アクショングループ、ナレッジベースで強化されます。次に、拡張ベースプロンプトを使用して FM を呼び出します。FM は、ユーザー入力を満たすための最良のステップと軌道を予測します。オーケストレーションを繰り返すたびに、FM は呼び出す API オペレーションまたはクエリするナレッジベースを予測します。

  3. 後処理 — エージェントは、最終レスポンスをフォーマットしてユーザーに戻します。このステップはデフォルトでオフに設定されています。

エージェントを呼び出すと、実行時にトレースを有効にできます。トレースを使用すると、エージェントシーケンスの各ステップでエージェントの理論的根拠、アクション、クエリ、観察結果を追跡できます。トレースには、各ステップで基盤モデルに送信された完全なプロンプトと、基盤モデル、API レスポンス、ナレッジベースクエリからの出力が含まれます。トレースを使用して、各ステップにおけるエージェントの推論を理解できます。詳細については、「Amazon Bedrock のトレースイベント」を参照してください。

エージェントとのユーザーセッションがより多くのInvokeAgentリクエストを続行すると、会話履歴は保持されます。会話履歴は、オーケストレーションベースプロンプトテンプレートをコンテキストで継続的に強化し、エージェントの精度とパフォーマンスを向上させます。次の図は、ランタイム中のエージェントのプロセスを示しています。

ランタイムでのエージェントの動作。ユーザー入力を受信すると、エージェントはプロンプトストアから拡張プロンプトを取得し、セッションストアから会話履歴を取得します。前処理ステップが有効になっている場合、エージェントは前処理プロンプトを使用して FM を呼び出し、ユーザー入力を検証します。オーケストレーションステップでは、エージェントはオーケストレーションプロンプトを使用して FM を呼び出し、レスポンスを解析します。次に、必要に応じてアクショングループを決定し、ナレッジベースをクエリし、新しいオーケストレーションプロンプトをトリガーする可能性のある観測を生成します。オーケストレーションステージは、観測値がユーザーに最終応答を返すまでループします。