通过在响应中发送所得信息,将控制权交还给代理开发者 InvokeAgent - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过在响应中发送所得信息,将控制权交还给代理开发者 InvokeAgent

您可以选择通过在响应中发送信息将控制权交还给代理开发者,而不是将您的代理从用户那里获得的信息发送到 Lambda 函数以供执行。InvokeAgent在创建或更新操作组时,您可以配置将控制权交还给代理开发者。通过 API,您可以将CreateAgentActionGroupUpdateAgentActionGroup请求中的customControl值指定RETURN_CONTROLactionGroupExecutor对象中的值。有关更多信息,请参阅 在 Amazon Bedrock 中向你的代理添加一个行动组

如果您为操作组配置控制权归还,并且代理决定应在该操作组中调用操作,则从用户那里获得的 API 或函数详细信息将与唯一invocationIdinvocationInputs字段一起返回到InvokeAgent响应的字段中。然后,您可执行以下操作:

  • 将您的应用程序设置为调用您定义的 API 或函数,前提是中返回的信息invocationInputs

  • 在另一个InvokeAgent请求中,在sessionState字段中发送应用程序调用的结果,以便为代理提供上下文。您必须使用与InvokeAgent响应actionGroup中返回的相同invocationId。这些信息可用作进一步编排的上下文,发送到后期处理以供代理格式化响应,或者直接用于代理对用户的响应。

    注意

    如果您在sessionState字段returnControlInvocationResults中包含,则该inputText字段将被忽略。

要了解如何在创建操作组时配置将控制权交还给代理开发者,请参阅在 Amazon Bedrock 中向你的代理添加一个行动组

将控制权交还给代理开发者的示例

例如,您可能有以下操作组:

  • 一个PlanTrip操作组,其suggestActivities操作可帮助您的用户在旅途中查找要进行的活动。f description or this action 说This action suggests activities based on retrieved weather information

  • 一个WeatherAPIs操作组,其getWeather操作可帮助您的用户获取特定位置的天气。该操作的必需参数为locationdate。操作组配置为将控制权交还给代理开发者。

以下是可能出现的假设序列:

  1. 用户用以下查询提示您的代理:What should I do today?此查询是在InvokeAgent请求inputText字段中发送的。

  2. 您的代理意识到应该调用该suggestActivities操作,但是根据描述,它预测它应该首先调用该getWeather操作作为上下文来帮助完成suggestActivities操作。

  3. 代理知道当前date2024-09-15,但需要用户的 “location电流” 作为获取天气的必需参数。它会再次向用户提问 “你在哪里?”

  4. 用户做出回应Seattle

  5. 代理返回以下InvokeAgent响应getWeather中的参数(选择一个选项卡可查看使用该方法定义的操作组的示例):

    Function details
    HTTP/1.1 200 x-amzn-bedrock-agent-content-type: application/json x-amz-bedrock-agent-session-id: session0 Content-type: application/json { "returnControl": { "invocationInputs": [{ "functionInvocationInput": { "actionGroup": "WeatherAPIs", "function": "getWeather", "parameters": [ { "name": "location", "type": "string", "value": "seattle" }, { "name": "date", "type": "string", "value": "2024-09-15" } ] } }], "invocationId": "79e0feaa-c6f7-49bf-814d-b7c498505172" } }
    OpenAPI schema
    HTTP/1.1 200 x-amzn-bedrock-agent-content-type: application/json x-amz-bedrock-agent-session-id: session0 Content-type: application/json { "invocationInputs": [{ "apiInvocationInput": { "actionGroup": "WeatherAPIs", "apiPath": "/get-weather", "httpMethod": "get", "parameters": [ { "name": "location", "type": "string", "value": "seattle" }, { "name": "date", "type": "string", "value": "2024-09-15" } ] } }], "invocationId": "337cb2f6-ec74-4b49-8141-00b8091498ad" }
  6. 您的应用程序已配置为使用这些参数来获取该日期seattle的天气2024-09-15。天气确定为下雨。

  7. 您在另一个InvokeAgent请求的sessionState字段中发送这些结果,使用与之前的响应function相同的invocationIdactionGroup、和。选择一个选项卡,查看使用该方法定义的操作组的示例:

    Function details
    POST https://bedrock-agent-runtime.us-east-1.amazonaws.com/agents/AGENT12345/agentAliases/TSTALIASID/sessions/abb/text { "enableTrace": true, "sessionState": { "invocationId": "79e0feaa-c6f7-49bf-814d-b7c498505172", "returnControlInvocationResults": [{ "functionResult": { "actionGroup": "WeatherAPIs", "function": "getWeather", "responseBody": { "TEXT": { "body": "It's rainy in Seattle today." } } } }] } }
    OpenAPI schema
    POST https: //bedrock-agent-runtime.us-east-1.amazonaws.com/agents/AGENT12345/agentAliases/TSTALIASID/sessions/abb/text { "enableTrace": true, "sessionState": { "invocationId": "337cb2f6-ec74-4b49-8141-00b8091498ad", "returnControlInvocationResults": [{ "apiResult": { "actionGroup": "WeatherAPIs", "httpMethod": "get", "apiPath": "/get-weather", "responseBody": { "application/json": { "body": "It's rainy in Seattle today." } } } }] } }
  8. 代理预测它应该采取suggestActivities行动。它使用当天下雨的背景,并在响应中建议用户进行室内活动,而不是室外活动。