Amazon Bedrock エージェントがユーザーから引き出す情報を送信するように Lambda 関数を設定する - Amazon Bedrock

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

Amazon Bedrock エージェントがユーザーから引き出す情報を送信するように Lambda 関数を設定する

Lambda 関数を定義して、アクショングループのビジネスロジックをプログラムできます。Amazon Bedrock エージェントは、アクショングループで呼び出す必要があるAPIオペレーションを決定した後、関連するメタデータとともにAPIスキーマから情報を入力イベントとして Lambda 関数に送信します。関数を記述するには、Lambda 関数の以下のコンポーネントを理解する必要があります。

  • 入力イベント – APIオペレーションのリクエスト本文、またはエージェントが呼び出す必要があると判断したアクションの関数パラメータに関連するメタデータと入力フィールドが含まれます。

  • レスポンス — APIオペレーションまたは関数から返されるレスポンス本文に関連するメタデータと入力済みフィールドが含まれます。

Lambda 関数を記述して、アクショングループの処理方法を定義し、APIレスポンスを返す方法をカスタマイズします。入力イベントの変数を使用して関数を定義し、エージェントにレスポンスを返します。

注記

アクショングループには最大 11 個のAPIオペレーションを含めることができますが、記述できる Lambda 関数は 1 つだけです。Lambda 関数は入力イベントのみを受信し、一度に 1 つのAPIオペレーションのレスポンスを返すことができるため、呼び出される可能性のあるさまざまなAPIオペレーションを考慮して関数を記述する必要があります。

エージェントが Lambda 関数を使用するには、リソースベースのポリシーを関数にアタッチして、エージェントにアクセス許可を付与する必要があります。詳細については、「」の手順に従ってくださいAmazon Bedrock がアクショングループ Lambda 関数を呼び出すことを許可するリソースベースのポリシー。Lambda のリソースベースのポリシーの詳細については、「」の「Lambda のリソースベースのポリシーの使用」を参照してください。 AWS Lambda デベロッパーガイド。

アクショングループの作成中に関数を定義する方法については、「」を参照してくださいAmazon Bedrock でエージェントにアクショングループを追加する

Amazon Bedrock からのLambda 入力イベント

Lambda 関数を使用するアクショングループが呼び出されると、Amazon Bedrock は次の一般的な形式の Lambda 入力イベントを送信します。Lambda 関数を定義して、入力イベントフィールドのいずれかを使用して関数内のビジネスロジックを操作し、アクションを正常に実行できます。Lambda 関数の詳細については、「」の「イベント駆動型呼び出し」を参照してください。 AWS Lambda デベロッパーガイド。

入力イベントの形式は、アクショングループをAPIスキーマで定義したか、関数の詳細で定義したかによって異なります。

  • API スキーマでアクショングループを定義した場合、入力イベント形式は次のとおりです。

    { "messageVersion": "1.0", "agent": { "name": "string", "id": "string", "alias": "string", "version": "string" }, "inputText": "string", "sessionId": "string", "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "requestBody": { "content": { "<content_type>": { "properties": [ { "name": "string", "type": "string", "value": "string" }, ... ] } } }, "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" } }
  • 関数の詳細を使用してアクショングループを定義した場合、入力イベント形式は次のとおりです。

    { "messageVersion": "1.0", "agent": { "name": "string", "id": "string", "alias": "string", "version": "string" }, "inputText": "string", "sessionId": "string", "actionGroup": "string", "function": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" } }

次のリストでは、入力イベントフィールドについて説明します。

  • messageVersion – Lambda 関数に渡されるイベントデータの形式と Lambda 関数から返す必要があるレスポンスの形式を識別するメッセージのバージョン。Amazon Bedrock ではバージョン 1.0 のみがサポートされています。

  • agent - アクショングループが属するエージェントの名前、ID、エイリアス、バージョンに関する情報が含まれます。

  • inputText - 会話のターンに対するユーザー入力。

  • sessionId - エージェントセッションの一意な識別子。

  • actionGroup — アクショングループの名前。

  • parameters - オブジェクトのリストが含まれます。各オブジェクトには、 で定義されているように、 API オペレーションのパラメータの名前、タイプ、値が含まれます。OpenAPI スキーマ、または 関数内。

  • API スキーマでアクショングループを定義した場合、入力イベントには次のフィールドが含まれます。

    • apiPath – で定義されているAPIオペレーションへのパス OpenAPI スキーマ。

    • httpMethod – で定義されているAPIオペレーションのメソッド OpenAPI スキーマ。

    • requestBody – で定義されているリクエスト本文とそのプロパティが含まれます。OpenAPI アクショングループの スキーマ。

  • 関数の詳細を使用してアクショングループを定義した場合、入力イベントには次のフィールドが含まれます。

    • function – アクショングループの関数の詳細で定義されている関数の名前。

  • sessionAttributesセッション属性とその値が含まれます。これらの属性はセッションを介して保存され、エージェントのコンテキストを提供します。

  • promptSessionAttributesプロンプトセッション属性とその値が含まれます。これらの属性はターンにわたって保存され、エージェントのコンテキストを提供します。

Amazon Bedrock へのLambda レスポンスイベント

Amazon Bedrock は、以下の形式と一致する、Lambda 関数からのレスポンスを想定しています。レスポンスは、 APIオペレーションから返されるパラメータで構成されます。エージェントは Lambda 関数からのレスポンスを使用して、さらなるオーケストレーションを行ったり、カスタマーにレスポンスを返すのをサポートします。

注記

Lambda ペイロードレスポンスの最大サイズは 25 KB です。

入力イベントの形式は、アクショングループをAPIスキーマで定義したか、関数の詳細で定義したかによって異なります。

  • API スキーマでアクショングループを定義した場合、レスポンスの形式は次のとおりです。

    { "messageVersion": "1.0", "response": { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": number, "responseBody": { "<contentType>": { "body": "JSON-formatted string" } } }, "sessionAttributes": { "string": "string", ... }, "promptSessionAttributes": { "string": "string", ... }, "knowledgeBasesConfiguration": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": int, "overrideSearchType": "HYBRID | SEMANTIC", "filter": RetrievalFilter object } } }, ... ] }
  • 関数の詳細を使用してアクショングループを定義した場合、レスポンスの形式は次のとおりです。

    { "messageVersion": "1.0", "response": { "actionGroup": "string", "function": "string", "functionResponse": { "responseState": "FAILURE | REPROMPT", "responseBody": { "<functionContentType>": { "body": "JSON-formatted string" } } } }, "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" }, "knowledgeBasesConfiguration": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": int, "filter": { RetrievalFilter object } } } }, ... ] }

次のリストでは、レスポンスフィールドについて説明します。

  • messageVersion – Lambda 関数に渡されるイベントデータの形式と Lambda 関数から返す必要があるレスポンスの形式を識別するメッセージのバージョン。Amazon Bedrock ではバージョン 1.0 のみがサポートされています。

  • response – APIレスポンスに関する以下の情報が含まれます。

    • actionGroup — アクショングループの名前。

    • アクショングループを APIスキーマで定義した場合、次のフィールドをレスポンスに含めることができます。

      • apiPath – で定義されているAPIオペレーションへのパス OpenAPI スキーマ。

      • httpMethod – で定義されているAPIオペレーションのメソッド OpenAPI スキーマ。

      • httpStatusCode – APIオペレーションから返されたHTTPステータスコード。

      • responseBody – で定義されているレスポンス本文が含まれます。OpenAPI スキーマ。

    • 関数の詳細を使用してアクショングループを定義した場合、次のフィールドをレスポンスに含めることができます。

      • responseState (オプション) – アクションを処理した後のエージェントの動作を定義するには、次のいずれかの状態に設定します。

        • FAILURE – エージェントは現在のセッションDependencyFailedExceptionの をスローします。依存関係の障害により関数の実行が失敗した場合に適用されます。

        • REPROMPT – エージェントはレスポンス文字列をモデルに渡して、モデルをリプロンプトします。無効な入力が原因で関数の実行が失敗した場合に適用されます。

      • responseBody – 関数の実行からのレスポンスを定義するオブジェクトが含まれます。キーはコンテンツタイプ (現在TEXTは のみがサポートされています) で、値はレスポンスbodyの を含むオブジェクトです。

  • (オプション) sessionAttributes – セッション属性とその値が含まれます。詳細については、「セッション属性とプロンプトセッション属性」を参照してください。

  • (オプション) promptSessionAttributes – プロンプト属性とその値が含まれます。詳細については、「セッション属性とプロンプトセッション属性」を参照してください。

  • (オプション) knowledgeBasesConfiguration – エージェントにアタッチされたナレッジベースのクエリ設定のリストが含まれます。詳細については、「ナレッジベースの取得設定」を参照してください。

アクショングループ Lambda 関数の例

以下は、 で Lambda 関数を定義する方法の最小限の例です。Python。 でアクショングループを定義したかどうかに対応するタブを選択します。OpenAPI スキーマまたは関数の詳細を含む:

OpenAPI schema
def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] api_path = event['apiPath'] # get parameters get_parameters = event.get('parameters', []) # post parameters post_parameters = event['requestBody']['content']['application/json']['properties'] response_body = { 'application/json': { 'body': "sample response" } } action_response = { 'actionGroup': event['actionGroup'], 'apiPath': event['apiPath'], 'httpMethod': event['httpMethod'], 'httpStatusCode': 200, 'responseBody': response_body } session_attributes = event['sessionAttributes'] prompt_session_attributes = event['promptSessionAttributes'] api_response = { 'messageVersion': '1.0', 'response': action_response, 'sessionAttributes': session_attributes, 'promptSessionAttributes': prompt_session_attributes } return api_response
Function details
def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] function = event['function'] parameters = event.get('parameters', []) response_body = { 'TEXT': { 'body': "sample response" } } function_response = { 'actionGroup': event['actionGroup'], 'function': event['function'], 'functionResponse': { 'responseBody': response_body } } session_attributes = event['sessionAttributes'] prompt_session_attributes = event['promptSessionAttributes'] action_response = { 'messageVersion': '1.0', 'response': function_response, 'sessionAttributes': session_attributes, 'promptSessionAttributes': prompt_session_attributes } return action_response