测试代理行为并进行问题排查 - Amazon Bedrock

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

测试代理行为并进行问题排查

创建代理后,您将获得一份工作草稿。工作草稿是代理的一个版本,可用于以迭代方式构建代理。每次您对代理进行更改时,工作草稿都会更新。确认代理配置无误之后,您可以创建一个版本(即代理的快照)和指向该版本的一个别名。然后,您可以通过调用别名将代理部署到您的应用程序中。有关更多信息,请参阅 将 Amazon Bedrock 代理部署到应用程序中并与之集成

以下列表介绍了如何测试代理:

  • 在 Amazon Bedrock 控制台中,您可以打开侧面的测试窗口并发送输入,让代理进行响应。您可以选择工作草稿或已创建的版本。

  • 在中API,工作草案就是DRAFT版本。您可以通过以下方式向代理发送输入 InvokeAgent使用测试别名TSTALIASID、或指向静态版本的不同别名。

为了帮助您针对代理行为进行问题排查,Amazon Bedrock 代理提供了在与代理会话期间查看跟踪记录的功能。轨迹显示了代理的 step-by-step推理过程。有关跟踪记录的更多信息,请参阅 使用跟踪跟踪代理的 step-by-step推理过程

以下是测试代理的步骤。选择您首选方法的选项卡,然后按照以下步骤操作:

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

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

  3. 代理部分,从代理列表中选择要测试的代理的链接。

  4. 测试窗口将显示在右侧的窗格中。

    注意

    如果“测试”窗口已关闭,您可以在代理详细信息页面或其中的任何页面的顶部选择测试,重新打开该窗口。

  5. 创建代理后,您必须使用以下方式之一准备代理,将其与工作草稿更改打包:

    • 测试窗口中,选择准备

    • 工作草稿页面中,选择页面顶部的准备

    注意

    每次更新工作草稿时,您都必须准备代理,将最新更改打包到代理中。根据最佳实践,我们建议您始终在工作草稿页面的代理概述部分检查代理的上次准备时间,以便确保使用最新配置来测试代理。

  6. 使用测试窗口顶部的下拉菜单选择要测试的别名和关联版本。默认情况下,选择 TestAlias:工作草稿组合。

  7. (可选)要为您的别名选择 “预配置吞吐量”,您选择的测试别名下方的文本将指示 “使用ODT或使用 PT”。要创建预调配吞吐量模型,请选择更改。有关更多信息,请参阅 利用 Amazon Bedrock 中的预调配吞吐量增加模型调用容量

  8. (可选)要使用提示管理中的提示,请在消息框中选择选项图标 ( Vertical ellipsis icon representing a menu or more options. ),然后选择导入提示。选择提示和版本。在测试变量值部分输入提示变量的值。有关提示管理中提示的更多信息,请参阅在 Amazon Bedrock 中使用提示管理器构建和存储可重复使用的提示

  9. 要测试代理,您需要输入一条消息并选择运行。在等待系统生成响应时或响应生成后,您可以选择以下选项:

    • 要查看代理编排过程中每个步骤的详细信息,包括每个步骤的提示、推理配置和代理的推理过程以及其操作组和知识库的使用情况,请选择显示跟踪记录。跟踪记录会实时更新,因此您可以在系统返回响应之前进行查看。选择步骤旁边的箭头,展开或折叠某个步骤的跟踪记录。有关跟踪记录窗口和显示的详细信息的更多信息,请参阅 使用跟踪跟踪代理的 step-by-step推理过程

    • 如果代理调用了知识库,响应中将包含脚注。要查看包含响应特定部分引用信息的 S3 对象的链接,请选择相关的脚注。

    • 如果您将代理设置为交还控制权,而不是使用 Lambda 函数来处理操作组,则响应中将包含预测的操作及其参数。为操作提供API或函数的输出值示例,然后选择 S ub mit 以生成代理响应。有关示例,请参阅下图:

      测试窗口请求,以提供操作的示例输出。

    您可以在测试窗口中执行以下操作:

    • 要与代理开始新的对话,选择刷新图标。

    • 要查看跟踪记录窗口,选择展开图标。要关闭跟踪记录窗口,选择收起图标。

    • 要关闭测试窗口,选择右箭头图标。

您可以启用或禁用操作组和知识库。通过使用不同的设置观察代理的行为,确定哪些操作组或知识库需要更新,进而利用此功能来进行问题排查。

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

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

  3. 代理部分,从代理列表中选择要测试的代理的链接。

  4. 在代理详细信息页面上的工作草稿部分,选择工作草稿的链接。

  5. 操作组知识库部分,将鼠标悬停在要更改其状态的操作组或知识库的状态上。

  6. 此时将出现一个编辑按钮。选择编辑图标,然后从下拉菜单中选择启用禁用操作组或知识库。

  7. 如果操作组处于禁用状态,则代理不会使用该操作组。如果知识库处于禁用状态,则代理不会使用该知识库。启用或禁用操作组或知识库,然后使用测试窗口对代理进行问题排查。

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

API

在首次测试您的代理之前,必须通过发送 PrepareAgentAmazon Bedrock 构建时终端节点的代理请求。在请求中包含 agentId。更改将应用于 TSTALIASID 别名指向的 DRAFT 版本。

参阅代码示例

注意

每次更新工作草稿时,您都必须准备代理,将最新更改打包到代理中。作为最佳实践,我们建议您发送 GetAgent向适用于 Amazon Bedrock 的代理构建时终端节点请求(有关请求和响应格式以及字段详情,请查看链接),并查看代理验证您是否正在使用最新配置测试代理的preparedAt时间。

要测试您的代理,请发送 InvokeAgent使用适用于 Amazon Bedrock 的代理运行时终端节点进行请求。

注意

AWS CLI 不支持 InvokeAgent.

参阅代码示例

请求中包含以下字段:

  • 至少提供以下必填字段:

    字段 简短描述
    agentId 代理的 ID
    agentAliasId 别名的 ID。使用 TSTALIASID 来调用 DRAFT 版本
    sessionId 会话的字母数字 ID(2 到 100 个字符)
    inputText 要发送给代理的用户提示
  • 以下字段是可选字段:

    字段 简短描述
    enableTrace 指定 TRUE 以查看跟踪记录
    endSession 设置为 TRUE,以在此请求后结束与代理的会话。
    sessionState 包含影响代理行为或附加到代理的知识库行为的上下文。有关更多信息,请参阅 控制代理会话上下文

响应以事件流的形式返回。每个事件都包含一个 chunk,其中包含响应的一部分,该部分位于 bytes 字段中,您必须对相应数据进行解码。如果代理查询了知识库,则 chunk 中还会包含 citations。系统还可能返回以下对象:

  • 如果您启用了跟踪功能,系统还会返回一个 trace 对象。如果发生错误,系统会返回包含错误消息的字段。有关如何读取跟踪记录的更多信息,请参阅 使用跟踪跟踪代理的 step-by-step推理过程

  • 如果您使用 Lambda 函数将操作组设置为跳过,则字段中将returnControl返回一个ReturnControlPayload对象。该ReturnControlPayload对象的一般结构如下:

    { "invocationId": "string", "invocationInputs": [ ApiInvocationInput or FunctionInvocationInput, ... ] }

    invocationInputs 列表中的每一项都是以下几项之一:

    • 除了从用户那里获得的参数和其他信息外,还应根据用户输入来调用包含代理预测的API操作的ApiInvocationInput对象API。ApiInvocationInput 对象的结构如下所示:

      { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "requestBody": { <content-type>: { "properties": [ { "name": "string", "type": "string", "value": "string" } ] } } }
    • 除了从用户那里获得的该函数的参数外,还应根据用户输入调用包含代理预测的函数的FunctionInvocationInput对象。的结构FunctionInvocationInput如下:

      { "actionGroup": "string", "function": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" } ] }