Creating the agents


title: “创建代理” weight: 50


Amazon Bedrock Agents 为我们提供了构建和配置自主代理的能力,以应用于我们的应用程序中。代理可帮助我们的最终用户根据组织数据和用户输入完成操作。代理协调基础模型(FM)、数据源、软件应用程序和用户对话之间的交互。此外,代理还会自动调用 API 来执行操作并调用知识库来补充这些操作的信息。

构建时配置

代理由以下组件组成:

  • 基础模型 - 我们选择一个基础模型(FM),代理会调用该模型来解释用户输入和后续提示的协调过程。代理还会调用 FM 来生成响应和后续步骤。

  • 说明 - 我们编写说明,描述代理的设计目的。使用高级提示,我们可以进一步定制代理在协调过程的每个步骤中的说明,并包括 Lambda 函数来解析每个步骤的输出。

  • 至少以下一项:

    • 操作组 - 我们定义代理应为用户执行的操作,提供以下资源:

      • 以下一种模式来定义代理需要从用户那里获取的参数:
        • OpenAPI 模式,定义代理可以调用来执行任务的 API 操作。OpenAPI 模式包括需要从用户那里获取的参数。
        • 函数详细信息模式,定义代理可以从用户那里获取的参数。这些参数可以用于代理的进一步协调,或者我们可以设置如何在自己的应用程序中使用它们。
      • (可选) 具有以下输入和输出的 Lambda 函数:
        • 输入 - 在协调过程中确定的 API 操作和/或参数。
        • 输出 - API 调用的响应。
    • 知识库 - 将知识库与代理关联。代理查询知识库以获取额外的上下文,以增强响应生成和输入到协调过程的步骤。

  • 提示模板 - 提示模板是创建提示的基础,以提供给 FM。Amazon Bedrock Agents 公开了默认的四个基本提示模板,用于预处理、协调、知识库响应生成和后处理。我们可以选择编辑这些基本提示模板,以定制代理在其序列的每个步骤中的行为。我们还可以关闭步骤,用于故障排除或者如果我们决定某个步骤是不必要的。更多信息,请参见使用 Amazon Bedrock 中的高级提示模板提高代理的准确性

在构建时,所有这些组件都被收集起来,构建代理执行协调的基本提示,直到用户请求完成。使用高级提示,我们可以使用额外的逻辑和少量示例来修改这些基本提示,以提高每个代理调用步骤的准确性。基本提示模板包含说明、操作描述、知识库描述和对话历史记录,我们可以对其进行自定义,以根据需要修改代理。然后,我们会准备我们的代理,这会打包代理的所有组件,包括安全配置。准备代理会将其置于可在运行时进行测试的状态。


运行时过程

运行时由 InvokeAgent API 操作管理。此操作启动代理序列,包括以下三个主要步骤。

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

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

    a. 代理使用基础模型解释输入并生成一个 rationale,概述其应采取的下一步逻辑。

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

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

    • 查询关联的知识库(知识库响应生成)以检索额外的上下文并总结数据以增强其生成。
    • 重新提示用户以收集操作所需的所有必需参数。

    d. 代理从调用操作和/或汇总知识库结果生成一个称为 observation 的输出。代理使用观察结果来增强基本提示,然后使用基础模型对其进行解释。代理然后确定是否需要重复协调过程。

    e. 此循环继续,直到代理向用户返回响应或需要提示用户提供额外信息。

    在协调过程中,基本提示模板会增强我们添加到代理的代理说明、操作组和知识库。然后,增强的基本提示用于调用 FM。FM 预测最佳可能的步骤和轨迹来满足用户输入。在协调的每次迭代中,FM 预测要调用的 API 操作或要查询的知识库。

  3. 后处理 - 代理格式化最终响应以返回给用户。此步骤默认关闭。

当我们调用代理时,我们可以在运行时打开 trace。使用跟踪,我们可以跟踪代理在代理序列的每个步骤中的推理、操作、查询和观察。跟踪包括发送到基础模型的完整提示以及基础模型的输出、API 响应和知识库查询。我们可以使用跟踪来了解代理在每个步骤的推理。更多信息,请参见[使用跟踪跟踪代理的逐步推理过程]。

随着用户会话通过更多 InvokeAgent 请求继续进行,对话历史记录会得到保留。对话历史记录不断增强协调基本提示模板的上下文,有助于提高代理的准确性和性能。以下图显示了代理在运行时的过程:

在本节中,我们将创建多个代理,共同处理宠物商店应用程序的不同方面。每个代理都有特定的角色和职责,形成一个全面的系统,可以有效地处理用户请求、管理数据和执行操作。

代理创建顺序

我们将按以下顺序创建这些代理:

  1. KB-Agent
    • 通过访问 DQ & A 知识库拥有 Q & A 的知识
    • 管理来自用户的 Q & A

  1. API-Agent
    • 管理外部 API 通信,狗狗品种
    • 处理 API 响应

  1. 查询生成代理
    • 通过访问 数据库模式知识库拥有数据库模式的知识
    • 根据用户需求生成 SQL 查询

  1. 查询修正代理
    • 通过访问 数据库模式知识库拥有数据库模式的知识
    • 拥有 查询生成代理生成的 SQL 查询的知识
    • 拥有查询执行错误消息的知识
    • 自动检查和修正 SQL 查询

  1. 协调代理
    • 主要面向用户的代理
    • 负责任务分解和规划
    • 协调其他代理执行子任务
    • 管理整体对话流程

下一步

在以下部分中,我们将深入探讨创建每个代理。我们将涵盖:

  • 代理配置和设置
  • 与基础模型的集成
  • 添加知识库集成配置
  • 测试和验证

让我们从在下一节创建 KB-Agent 开始。