Amazon Bedrock エージェントの仕組み - Amazon Bedrock

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

Amazon Bedrock エージェントの仕組み

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

ビルドタイムの設定

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

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

  • 指示 — エージェントの設計目的について説明する指示を作成します。詳細プロンプトを使用すると、オーケストレーションの各ステップでエージェントの指示をさらにカスタマイズし、各ステップの出力を解析する Lambda 関数を含めることができます。

  • 少なくとも次のいずれか。

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

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

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

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

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

        • 入力 – オーケストレーション中に識別されるAPIオペレーションやパラメータ。

        • 出力 — API呼び出しからのレスポンスまたは関数呼び出しからのレスポンス。

    • ナレッジベース – ナレッジベースをエージェントに関連付けます。エージェントは、ナレッジベースで追加のコンテキストを照会し、レスポンスの生成とオーケストレーションプロセスのステップへの入力を補足します。

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

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

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

ランタイムプロセス

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

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

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

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

    2. エージェントが、アクショングループ内の呼び出すべきアクション、または照会すべきナレッジベースを予測します。

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

      • 関連付けられたナレッジベースを照会して (ナレッジベースレスポンスの生成)、追加のコンテキストを取得し、データを要約して生成を補足します。

      • ユーザーに再度情報の入力を求め、アクションに必要なすべてのパラメータを収集します。

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

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

    オーケストレーション中、ベースプロンプトテンプレートは、エージェントに追加されたエージェント指示、アクショングループ、ナレッジベースで補足されます。次に、補足されたベースプロンプトを使用して FM を呼び出します。FM は、ユーザー入力を満たすために可能な限り最適なステップと軌跡を予測します。オーケストレーションの反復ごとに、FM は呼び出すAPIオペレーションまたはクエリするナレッジベースを予測します。

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

エージェントを呼び出すときに、ランタイムのトレースを有効にできます。トレースを使用すると、エージェントシーケンスの各ステップで、エージェントの論理的根拠、アクション、照会、およびオブザベーションを追跡できます。トレースには、各ステップで基盤モデルに送信された完全なプロンプトと、基盤モデル、APIレスポンス、ナレッジベースクエリからの出力が含まれます。トレースを使用して、各ステップにおけるエージェントの推論を把握できます。詳細については、「トレースを使用してエージェントのステップバイステップの推論プロセスを追跡する」を参照してください。

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

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