

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

# Amazon Bedrock エージェントの仕組み
<a name="agents-how"></a>


|  | 
| --- |
|  *Amazon Bedrock AgentCore を使用してエージェントを本番環境に高速化します。AgentCore は、高性能エージェントを大規模に安全に構築、デプロイ、運用するためのエージェントプラットフォームです。詳細については、[AgentCore デベロッパーガイド](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html)」を参照してください。*  | 

Amazon Bedrock エージェントは、エージェントの設定と実行に役立つ 2 つの主な API オペレーションで構成されています。
+ [ビルドタイム API オペレーション](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html): エージェントとその関連リソースを作成、設定、管理します。
+ [ランタイム API オペレーション](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock_Runtime.html): ユーザー入力を使用してエージェントを呼び出し、タスクを実行するためのオーケストレーションを開始します。

## ビルドタイムの設定
<a name="agents-btl"></a>

エージェントは次のコンポーネントで構成されています。
+ **基盤モデル** — エージェントがオーケストレーションプロセスでユーザー入力とその後のプロンプトを解釈するために呼び出す基盤モデル (FM) を選択します。またエージェントは、プロセスにおいてレスポンスとフォローアップのステップを生成するためにも FM を呼び出します。
+ **指示** — エージェントの設計目的について説明する指示を作成します。詳細プロンプトを使用すると、オーケストレーションの各ステップでエージェントの指示をさらにカスタマイズし、各ステップの出力を解析する Lambda 関数を含めることができます。
+ 少なくとも次のいずれか。
  + **アクショングループ** – 次のリソースを指定することで、エージェントがユーザーに対して実行するアクションを定義します。
    + エージェントがユーザーから取得する必要があるパラメータを定義するための、次のいずれかのスキーマ (各アクショングループで異なるスキーマを使用できます)。
      + エージェントがタスクを実行するために呼び出すことができる API オペレーションを定義する OpenAPI スキーマ。OpenAPI スキーマには、ユーザーから取得する必要があるパラメータが含まれます。
      + エージェントがユーザーから取得できるパラメータを定義する関数の詳細スキーマ。これらのパラメータは、エージェントによるさらなるオーケストレーションに使用したり、独自のアプリケーションでの使用方法を設定したりできます。
    + (オプション) 以下の入力と出力を持つ Lambda 関数。
      + 入力 — オーケストレーション中に識別された API オペレーションとパラメータ。
      + 出力 – API 呼び出しからのレスポンス、または関数呼び出しからのレスポンス。
  + **ナレッジベース** – ナレッジベースをエージェントに関連付けます。エージェントは、ナレッジベースで追加のコンテキストを照会し、レスポンスの生成とオーケストレーションプロセスのステップへの入力を補足します。
+ **プロンプトテンプレート** – プロンプトテンプレートは、FM に提供するプロンプトを作成するときのベースです。Amazon Bedrock エージェントでは、前処理、オーケストレーション、ナレッジベースのレスポンス生成、および後処理中に使用される 4 つのデフォルトのベースプロンプトテンプレートが提供されます。これらのベースプロンプトテンプレートを必要に応じて編集し、シーケンスの各ステップでのエージェントの動作をカスタマイズできます。また、トラブルシューティングを行う場合や、ステップが不要であると判断した場合は、ステップをオフにすることもできます。詳細については、「[Amazon Bedrock で詳細プロンプトのテンプレートを使用してエージェントの精度を高める](advanced-prompts.md)」を参照してください。

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

![\[ビルドタイム API によるエージェントの構築方法。アクショングループは、OpenAPI スキーマと Lambda 関数で構成され、エージェントが呼び出すことができる API オペレーションと、エージェントがリクエストとレスポンスを処理する方法を定義します。エージェントは、ベースプロンプトテンプレート、提供される指示、およびアタッチされたアクショングループとナレッジベースからの情報を合成して、使用するモデルでプロンプトを生成します。プロンプトは、エージェントのプロンプトストアに追加されます。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/agents/agents-buildtime.png)


## ランタイムプロセス
<a name="agents-rt"></a>

ランタイムは [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) API オペレーションによって管理されます。このオペレーションは、次の 3 つの主要なステップで構成されるエージェントシーケンスを開始します。

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

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

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

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

   1. アクションを呼び出す必要があると予測した場合、エージェントはユーザープロンプトから判断したパラメータを[アクショングループで設定された Lambda 関数](agents-lambda.md)に送信するか、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) レスポンスでパラメータを送信して[コントロールを返します](agents-returncontrol.md)。アクションを呼び出すのに十分な情報がエージェントにない場合は、次のいずれかのアクションが実行されます。
      + 関連付けられたナレッジベースを照会して (**ナレッジベースレスポンスの生成**)、追加のコンテキストを取得し、データを要約して生成を補足します。
      + ユーザーに再度情報の入力を求め、アクションに必要なすべてのパラメータを収集します。

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

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

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

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

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

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

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