Amazon Bedrock 代理的工作原理 - Amazon Bedrock

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

Amazon Bedrock 代理的工作原理

Amazon Bedrock 代理由以下两组主要 API 操作组成,可帮助您设置和运行代理:

构建时配置

代理包含以下组件:

  • 基础模型 – 您需要选择一个基础模型(FM),代理在编排过程中将调用该模型来解释用户输入和后续提示。代理还将调用该 FM 在其流程中生成响应和后续步骤。

  • 指令 – 您需要编写指令来说明代理的用途。借助高级提示,您可以针对编排过程的每个步骤进一步为代理自定义指令,并添加 Lambda 函数来解析每个步骤的输出。

  • 至少以下配置之一:

    • 操作组 – 通过提供以下资源来定义代理应为用户执行的操作:

      • 以下架构之一,用于定义代理需要从用户处获取的参数(每个操作组可以使用不同的架构):

        • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 OpenAPI 架构,用于定义代理可以调用以执行其任务的 API 操作。这些区域有:OpenAPI 架构包括需要从用户那里获得的参数。

        • 函数详细信息架构,用于定义代理可以从用户处获取的参数。随后,这些参数可用于供代理进行进一步编排,也可用于设置它们在您自己的应用程序中的使用方式。

      • (可选)具有以下输入和输出的 Lambda 函数:

        • 输入 – 编排过程中识别的 API 操作和/或参数。

        • 输出 – API 调用的响应或函数调用的响应。

    • 知识库 – 将知识库与代理关联起来。代理将查询知识库以获取额外的上下文,从而增强响应的生成并输入到编排流程的各个步骤。

  • 提示模板 – 提示模板是创建要提供给 FM 的提示的基础。Amazon Bedrock 代理会公开在预处理、编排、知识库响应生成和后处理期间使用的四个默认基本提示模板。您可以选择编辑这些基本提示模板,以自定义代理在其序列中每个步骤的行为。您也可以出于故障排除目的关闭某些步骤,或者在认为不再需要某个步骤时将其关闭。有关更多信息,请参阅 使用 Amazon Bedrock 中的高级提示模板提高代理的准确性

在构建时,系统会收集所有这些组件,为代理构建基本提示,以便在用户请求完成之前执行编排。通过高级提示,您可以根据其他逻辑和少样本示例来修改这些基本提示,以提高代理调用每个步骤的准确性。基本提示模板包含指令、操作描述、知识库描述和对话历史记录,您可以自定义所有这些内容,以根据需要修改代理。然后,您可以准备代理,将代理的所有组件(包括安全配置)打包在一起。准备代理会使其进入可在运行时进行测试的状态。下图显示了构建时 API 操作如何构建代理。

构建时如何 APIs 构造你的代理。行动组由一个 OpenAPI 架构和一个 Lambda 函数,用于定义代理可以调用哪些 API 操作以及代理应如何处理请求和响应。代理会综合来自基本提示模板、获得的指令以及任何附加操作组和知识库的信息,以生成包含它所使用的模型的提示。这些提示将添加到代理的提示存储。

运行时流程

运行时由 InvokeAgentAPI 操作。此操作将启动代理序列,该序列由以下三个主要步骤组成。

  1. 预处理 – 管理代理如何对用户输入进行上下文关联和分类,并可用于验证输入。

  2. 编排 – 解释用户输入、调用操作组和查询知识库,并将输出返回给用户或将输出作为继续编排的输入。编排包含以下步骤:

    1. 代理通过根基模型解释输入,并生成理由来阐述下一步行动的逻辑依据。

    2. 代理可预测应该调用操作组中的哪个操作或应该查询哪个知识库。

    3. 如果代理预测需要调用操作,则代理会将根据用户提示确定的参数发送到为操作组配置的 Lambda 函数,或者通过在操作组中发送参数来返回控制权 InvokeAgent响应。如果代理没有足够的信息来调用该操作,它可能会执行以下操作之一:

      • 查询相关知识库(知识库响应生成)以检索其他上下文并汇总数据,从而增强数据的生成。

      • 重新提示用户收集该操作所需的所有参数。

    4. 代理通过调用操作和/或汇总知识库的结果来生成输出(也称为观察结果)。代理使用观察结果来增强基本提示,然后使用根基模型解释基本提示。然后,代理确定是否需要重复编排过程。

    5. 此循环会一直持续,直到代理向用户返回响应或需要提示用户提供额外信息为止。

    在编排过程中,基本提示模板会使用您添加到代理的代理指令、操作组和知识库进行增强。然后,增强的基本提示会用于调用 FM。FM 可以预测最佳的步骤和轨迹,以便完成用户输入。在每次迭代编排过程时,FM 都会预测要调用的 API 操作或要查询的知识库。

  3. 后处理 – 代理将格式化最终响应,并返回给用户。默认情况下,此步骤处于关闭状态。

调用代理时,您可以在运行时开启跟踪。利用跟踪,您可以在代理序列的每个步骤中跟踪代理的理由、操作、查询和观察结果。跟踪包括在每个步骤中发送给基础模型的完整提示,以及基础模型的输出、API 响应和知识库查询。您可以通过跟踪来理解代理在每个步骤的推理。有关更多信息,请参阅 使用跟踪跟踪代理的 step-by-step推理过程

当用户与代理的会话通过更多的 InvokeAgent 请求继续进行时,对话历史记录将被保留。对话历史记录会利用上下文不断增强基本提示模板编排,帮助提高代理的准确性和性能。下图显示了代理在运行时的工作过程。

代理在运行时的工作原理。收到用户输入后,代理会从提示存储中提取增强的提示,并从会话存储中获取对话历史记录。如果启用了预处理步骤,代理将调用具有预处理提示的 FM 来验证用户输入。在编排步骤中,代理将使用编排提示来调用 FM,并解析响应。然后,它将根据需要确定操作组和查询知识库,并生成可能触发新的编排提示的观察结果。编排阶段会循环进行,直到观察结果向用户返回最终响应。