在 Amazon Bedrock 中向代理添加操作组 - Amazon Bedrock

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

在 Amazon Bedrock 中向代理添加操作组

设置完毕后 OpenAPI 您的操作组的架构和 Lambda 函数,您可以创建操作组。选择您首选方法的选项卡,然后按照以下步骤操作:

注意

如果你正在使用 Anthropic Claude 3.5 Sonnet,请确保您的工具名称(格式为 Anthropic)httpVerb__actionGroupName__apiName遵循 Anthropic 工具名称格式^[a-zA-Z0-9_-]{1,64}$。您的 actionGroupName 和 apiName 不得包含双下划线'__'

Console

创建代理时,您可以在工作草稿中添加操作组。

创建代理后,您可以通过以下步骤向其添加操作组:

向代理添加操作组
  1. AWS Management Console 使用具有 Amazon Bedrock 权限的IAM角色登录,然后通过以下网址打开 Amazon Bedrock 控制台。https://console.aws.amazon.com/bedrock/

  2. 从左侧导航窗格中选择代理。然后,在代理部分选择一个代理。

  3. 选择在代理生成器中编辑

  4. 操作组部分,选择添加

  5. (可选)在操作组详细信息部分,更改自动生成的名称,并为操作组提供一个可选的描述

  6. 操作组类型部分,选择以下一种方法来定义代理可以从用户处获取的参数,用于帮助执行操作:

    1. 通过函数详细信息来定义 – 定义代理需要从用户处获取的参数,以便执行操作。有关添加函数的更多信息,请参阅 在 Amazon Bedrock 中为代理的操作组定义函数详细信息

    2. 使用API架构定义-定义代理可以调用的API操作和参数。使用您创建的 Open API 架构或使用控制台文本编辑器创建架构。有关设置 Open API 架构的更多信息,请参阅 定义 OpenAPI Amazon Bedrock 中代理人行动小组的架构

  7. 在 “操作组调用” 部分,您可以设置代理在预测应调用的API或函数并收到所需的参数之后执行的操作。请选择以下选项之一:

    • 快速创建新的 Lambda 函数(推荐)让 Amazon Bedrock 为您的代理创建一个基本的 Lambda 函数,您可以稍后根据自己的用例对其进行修改。 AWS Lambda 代理会将其预测的API或函数以及基于会话的参数传递给 Lambda 函数。

    • 选择现有的 Lambda 函数-选择您之前在中创建的 Lambda 函数 AWS Lambda 以及要使用的函数版本。代理会将其预测的API或函数以及基于会话的参数传递给 Lambda 函数。

      注意

      要允许 Amazon Bedrock 服务主体访问 Lambda 函数,请向 Lambda 函数附加一项基于资源的策略,以允许 Amazon Bedrock 服务主体访问 Lambda 函数。

    • 返回控制 — 代理不是将其预测的API或函数的参数传递给 Lambda 函数,而是通过传递其预测应调用的操作以及它从会话中确定的操作的参数和信息来将控制权返回给您的应用程序 InvokeAgent响应。有关更多信息,请参阅 通过在 InvokeAgent 响应中发送从用户那里获取的信息,将控制权交还给代理开发人员

  8. 根据您选择的操作组类型,您将看到以下部分:

    • 如果您选择通过函数详细信息来定义,则会看到操作组函数部分。执行以下操作来定义函数:

      1. 提供一个名称和可选(但建议提供)的描述

      2. 要在调用函数之前请求用户进行确认,请选择启用。在调用函数之前请求确认,可以防止您的应用程序因恶意提示注入而执行操作。

      3. 参数子部分中,选择添加参数。定义以下字段:

        字段 描述
        Name 为参数指定名称。
        Description(可选) 描述参数。
        Type 制定参数的数据类型。
        Required 指定代理是否要求用户提供参数。
      4. 要添加其他参数,请选择添加参数

      5. 要编辑参数中的字段,请选择该字段并根据需要对其进行编辑。

      6. 要删除参数,请在包含参数的行中选择删除图标( Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family. )。

      如果您更喜欢使用JSON对象来定义函数,请选择JSON编辑器而不是表格。JSON对象格式如下(parameters对象中的每个键都是您提供的参数名称):

      { "name": "string", "description": "string", "parameters": [ { "name": "string", "description": "string", "required": "True" | "False", "type": "string" | "number" | "integer" | "boolean" | "array" } ] }

      要通过定义另一组参数向操作组添加其他函数,请选择添加操作组函数

    • 如果您选择了使用API架构定义,则会有一个包含以下选项的操作组架构部分:

      • 要使用您之前为操作组准备的API包含描述、结构和参数的开放架API构,请选择选择API架构并提供指向该架构的 Amazon S3 URI 的链接。

      • 要使用行内API架构编辑器定义 Open 架构,请选择 “通过内联架构编辑器定义”。此时将出现一个您可以编辑的示例架构。

        1. 使用格式旁边的下拉菜单选择架构的格式。

        2. 要从 S3 导入现有架构进行编辑,请选择导入架构,提供 S3URI,然后选择导入

        3. 要将架构恢复为原始示例架构,请选择重置,然后再次选择重置来确认显示的消息。

  9. 创建完操作组后,选择添加。如果您定义了API架构,则如果没有问题,则会显示一个绿色的成功横幅。如果验证架构时出现问题,将会出现红色横幅。您有以下选项:

    • 滚动浏览架构,查看存在有关格式的错误或警告的行。X 表示存在格式错误,而感叹号表示存在有关格式的警告。

    • 选择红色横幅中的查看详细信息以查看有关API架构内容的错误列表。

  10. 务必选择准备以应用对代理所做的更改,然后再测试代理。

API

要创建操作组,请发送 CreateAgentActionGroupAmazon Bedrock 构建时终端节点的代理请求。必须提供函数架构或 Op e n API 架构

参阅代码示例

下表介绍了请求中的字段。

  • 以下字段是必填字段:

    字段 简短描述
    agentId 操作组所属代理的 ID。
    agentVersion 操作组所属代理的版本。
    actionGroupName 操作组的名称。
  • 要定义操作组的参数,您必须指定以下字段之一(不能同时指定两个字段)。

    字段 简短描述
    functionSchema 定义代理从用户获取的操作组的参数。有关更多信息,请参阅 在 Amazon Bedrock 中为代理的操作组定义函数详细信息
    apiSchema 指定 Open API 架构,定义操作组的参数或指向包含该操作组的 S3 对象的链接。有关更多信息,请参阅 定义 OpenAPI Amazon Bedrock 中代理人行动小组的架构

    下面显示了 functionSchemaapiSchema 的一般格式:

    • functionSchema数组中的每个项目都是一个FunctionSchema对象。针对每个函数,指定以下内容:

      • 提供一个 name 和可选(但建议提供)的 description

      • (可选)将 requireConfirmation 字段指定为 ENABLED,以便在调用函数之前请求用户确认。在调用函数之前请求确认,可以防止您的应用程序因恶意提示注入而执行操作。

      • parameters对象中,每个键都是一个参数名称,映射到ParameterDetail对象中有关它的详细信息。

      functionSchema 的一般格式如下:

      "functionSchema": [ { "name": "string", "description": "string", "requireConfirmation": ENABLED | DISABLED, "parameters": { "<string>": { "type": "string" | number | integer | boolean | array, "description": "string", "required": boolean }, ... // up to 5 parameters } }, ... // up to 11 functions ]
    • APISchema可以采用以下格式之一:

      1. 对于以下格式,您可以直接粘贴JSON或YAML格式的 OpenAPI 架构作为值。

        "apiSchema": { "payload": "string" }
      2. 对于以下格式,请指定 Amazon S3 存储桶名称和对象密钥,其中 OpenAPI 架构已存储。

        "apiSchema": { "s3": { "s3BucketName": "string", "s3ObjectKey": "string" } }
  • 要配置操作组在从用户获取参数后处理操作组调用的方式,您必须在 actionGroupExecutor 字段中指定以下字段之一。

    字段 简短描述
    lambda 要将参数发送到 Lambda 函数以处理操作组调用结果,请指定 Lambda 的亚马逊资源名称 (ARN)。有关更多信息,请参阅 配置 Lambda 函数以发送 Amazon Bedrock 代理从用户那里获取的信息
    customControl 要不使用 Lambda 函数,而是返回预测的操作组及其所需的参数和信息,请在 InvokeAgent 响应中指定 RETURN_CONTROL。有关更多信息,请参阅 通过在 InvokeAgent 响应中发送从用户那里获取的信息,将控制权交还给代理开发人员
  • 以下字段是可选字段:

    字段 简短描述
    parentActionGroup签名 指定 AMAZON.UserInput 以便允许代理在没有足够的信息来完成另一个操作组时,重新提示用户提供更多信息。如果指定此字段,则必须将 descriptionapiSchemaactionGroupExecutor 字段留空。
    description 操作组的描述。
    actionGroupState 是否允许代理调用操作组。
    clientToken 一个标识符,用于防止重复发出请求