コントロールセッションコンテキスト - Amazon Bedrock

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

コントロールセッションコンテキスト

セッションコンテキストをより詳細に制御するために、エージェント内の SessionState オブジェクトを変更できます。SessionState オブジェクトには、ターン間で維持できる情報 (個別のInvokeAgentリクエストとレスポンス) が含まれています。この情報を使用して、ユーザーの会話中にエージェントに会話コンテキストを提供できます。

SessionState オブジェクトの一般的な形式は次のとおりです。

{ "sessionAttributes": { "<attributeName1>": "<attributeValue1>", "<attributeName2>": "<attributeValue2>", ... }, "promptSessionAttributes": { "<attributeName3>": "<attributeValue3>", "<attributeName4>": "<attributeValue4>", ... }, "invocationId": "string", "returnControlInvocationResults": [ ApiResult or FunctionResult, ... ], "knowledgeBases": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "overrideSearchType": "HYBRID | SEMANTIC", "numberOfResults": int, "filter": RetrievalFilter object } } }, ... ] }

トピックを選択すると、 SessionState オブジェクトのフィールドの詳細が表示されます。

セッション属性とプロンプトセッション属性

Agents for Amazon Bedrock では、セッションの一部にわたって保持される以下のタイプのコンテキスト属性を定義できます。

  • sessionAttributes – ユーザーとエージェント間のセッション中に保持される属性。セッション時間制限 (idleSessionTTLinSeconds) を超えていない限り、同じ で行われたすべてのInvokeAgentリクエストは同じセッションにsessionId属します。

  • promptSessionAttributes - 1 ターン (1 回のInvokeAgent呼び出し) で保持される属性。オーケストレーションベースプロンプトテンプレートを編集するときは、$prompt_session_attributes$ プレースホルダーを使用できます。このプレースホルダーは、実行時に promptSessionAttributesフィールドで指定した属性で入力されます。

セッション状態属性は、次の 2 つの異なるステップで定義できます。

セッション属性の例

次の例では、セッション属性を使用してメッセージをユーザーにパーソナライズします。

  1. アプリケーションコードを記述して、エージェントに対して名とリクエストを入力し、回答を変数 <first_name> および <request> として保存します。

  2. アプリケーションコードを記述して、次の本文でInvokeAgentリクエストを送信します。

    { "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } }
  3. ユーザーがアプリケーションを使用して名を指定すると、コードはセッション属性として名を送信し、エージェントはセッション の期間中、名を保存します。

  4. セッション属性は Lambda 入力イベント で送信されるため、アクショングループの Lambda 関数でこれらのセッション属性を参照できます。例えば、アクション API スキーマがリクエスト本文に名を必要とする場合、アクショングループの Lambda 関数を記述するときにfirstNameセッション属性を使用して、API リクエストの送信時にそのフィールドを自動的に入力できます。

プロンプトセッション属性の例

次の一般的な例では、プロンプトセッション属性を使用してエージェントの時間コンテキストを提供します。

  1. アプリケーションコードを記述して、ユーザーリクエストを <request> という変数に保存します。

  2. ユーザーが <request> で相対時間 (「tomorrow」など) を示す単語を使用している場合は、ユーザーの場所にタイムゾーンを取得するアプリケーションコードを作成し、<timezone> という変数に保存します。

  3. 次の本文を使用してInvokeAgentリクエストを送信するアプリケーションを作成します。

    { "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } }
  4. ユーザーが相対時間を示す単語を使用する場合、コードはtimeZoneプロンプトセッション属性を送信し、エージェントはターン の間保存します。

  5. 例えば、ユーザーが を尋ねるとI need to book a hotel for tomorrow、コードはユーザーのタイムゾーンをエージェントに送信し、エージェントは「tomorrow」が参照する正確な日付を判断できます。

  6. プロンプトセッション属性は、次のステップで使用できます。

    • オーケストレーションプロンプトテンプレートに $prompt_session_attributes$ プレースホルダーを含めると、FM へのオーケストレーションプロンプトにはプロンプトセッション属性が含まれます。

    • プロンプトセッション属性は Lambda 入力イベントで送信され、API リクエストの入力に役立つか、レスポンス で返されます。

アクショングループの呼び出し結果

InvokeAgent レスポンス でコントロールを返すようにアクショングループを設定した場合、次のフィールドを含めることで、後続sessionStateInvokeAgentレスポンスの でアクショングループを呼び出した結果を送信できます。

  • invocationId – この ID は、InvokeAgentレスポンスの returnControlフィールドの ReturnControlPayload オブジェクトでinvocationId返された と一致する必要があります。

  • returnControlInvocationResults – アクションの呼び出しから取得した結果が含まれます。ReturnControlPayload オブジェクトを渡すようにアプリケーションを設定して API リクエストを実行するか、定義した関数を呼び出すことができます。その後、そのアクションの結果をここで提供できます。returnControlInvocationResults リストの各メンバーは、次のいずれかです。

    • エージェントが予測した API オペレーションを含むApiResultオブジェクトは、前のInvokeAgentシーケンスで呼び出す必要があり、その結果としてシステムで アクションを呼び出します。一般的な形式は次のとおりです。

      { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • エージェントが予測した関数を含むFunctionResultオブジェクトは、前のInvokeAgentシーケンスで呼び出す必要があり、その結果としてシステムで アクションを呼び出します。一般的な形式は次のとおりです。

      { "actionGroup": "string", "function": "string", "responseBody": { "TEXT": { "body": "string" } } }

提供される結果は、さらなるオーケストレーションのコンテキストとして使用したり、エージェントがレスポンスをフォーマットするための後処理に送信したり、エージェントからユーザーへのレスポンスで直接使用したりできます。

ナレッジベースの取得設定

エージェントにアタッチされているナレッジベースの取得設定を変更するには、 knowledgeBaseConfigurationsフィールドを指定したい各ナレッジベースの設定のリストを含めます。「knowledgeBaseId」を指定します。vectorSearchConfiguration フィールドでは、次のクエリ設定を指定できます (これらの設定の詳細については、「」を参照してくださいクエリ設定)。

  • 検索タイプ — ナレッジベースがベクトル埋め込みのみを検索するか (SEMANTIC)、ベクトル埋め込みと生テキストの両方を検索するか ()HYBRIDoverrideSearchType フィールドを使用します。

  • 取得された結果の最大数 — クエリ取得からレスポンスに使用する結果の最大数。

  • メタデータとフィルタリング – データソースファイルのメタデータ属性に基づいて結果をフィルタリングするように設定できるフィルター。