建立一个以运动代理模型(FM)为驱动的Amazon Bedrock客户服务机器人,并配备代理

打造以运动代理模型(FM)为驱动的Amazon Bedrock客户服务机器人,并附带代理属性

从提升对话体验到代理辅助,生成式人工智能(AI)和基础模型(FMs)有很多方式可以帮助提供更快、更好的支持。随着FMs的日益可用和多样化,很难进行实验并跟上最新的模型版本。Amazon Bedrock是一个完全托管的服务,提供了来自领先的 AI 公司(如 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon)的高性能 FM 选择。通过 Amazon Bedrock 的全面能力,您可以轻松尝试各种顶级 FM,并使用微调和检索增强生成(RAG)等技术进行私人定制。

Amazon Bedrock的Agent

在7月,AWS宣布推出了Amazon Bedrock的Agent的预览版,这是一个使开发人员能够通过几次点击创建完全托管的Agent的新功能。Agent可以扩展FM以运行复杂的业务任务,从预订旅行和处理保险索赔到创建广告活动和管理库存,而无需编写任何代码。通过完全托管的Agent,您无需担心配置或管理基础架构。

在本文中,我们提供了一个逐步指南,使用构建块来创建一个客户服务机器人。我们使用一个文本生成模型(Anthropic Claude V2)和Amazon Bedrock的Agent。我们还提供了一个AWS CloudFormation模板,用于为构建此解决方案所需的资源进行配置。然后,我们将指导您如何为Amazon Bedrock创建一个Agent。

ReAct Prompting

FM使用一种叫做ReAct的技术来确定如何解决用户请求的任务。这是将推理和执行与FM结合的一种通用范例。ReAct提示FM生成口头推理过程和任务的行动。这使系统能够执行动态推理,以创建、维护和调整行动计划,同时将附加信息纳入推理过程中。结构化提示包括一系列的问题-思考-行动-观察示例。

  • 问题是用户请求的任务或问题。
  • 思考是对FM展示如何解决问题并确定所采取的行动的推理步骤。
  • 行动是模型可以从允许的API集合中调用的API。
  • 观察是执行行动的结果。

Amazon Bedrock的Agent组件

在幕后,Amazon Bedrock的Agent自动化了问题引擎和用户请求任务编排。它们可以安全地使用公司特定信息来增强问题,以便用自然语言回复用户。Agent将用户请求的任务分解为多个步骤,并通过FM的帮助编排子任务。行动组是Agent可以自主执行的任务。行动组被映射到一个 AWS Lambda 函数和相关的API架构以执行API调用。以下图示了Agent结构。

Agents for Amazon Bedrock components

解决方案概述

我们使用鞋类零售商的使用案例来构建客户服务机器人。该机器人通过进行类似人类对话的方式,帮助客户购买鞋子。客户以自然语言与机器人交流,并通过多个步骤调用外部API来完成子任务。以下图示了示例流程。

用例的顺序图

以下图表描述了此解决方案的高级架构。

解决方案架构图
  1. 您可以使用Amazon Bedrock支持的诸如Anthropic Claude V2之类的FMs创建代理。
  2. 将API架构和包含业务逻辑的Lambda函数连接到代理(注意:这是一次性的设置步骤)。
  3. 代理使用客户请求使用ReAct框架创建提示,然后使用API架构调用Lambda函数中的相应代码。
  4. 您可以执行各种任务,包括发送电子邮件通知,写入数据库以及触发Lambda函数中的应用程序API。

在这篇文章中,我们使用Lambda函数来检索客户详细信息,列出与客户首选活动匹配的鞋子,最后下订单。我们的代码由内存中的SQLite数据库支持。您可以使用类似的结构来写入持久数据存储。

先决条件

要实现本文提供的解决方案,您需要拥有一个AWS账户并能够访问启用了代理的Amazon Bedrock(目前处于预览阶段)。使用AWS CloudFormation模板创建所需的资源堆栈。

us-east-1 CloudFormation堆栈

CloudFormation模板会创建两个IAM角色。请更新这些角色以应用最小权限权限,如安全最佳实践中所讨论的。点击此处了解可用于使用Amazon Bedrock代理的IAM功能。

  1. LambdaBasicExecutionRole 具有Amazon S3完全访问权限和用于日志记录的CloudWatch访问权限。
  2. AmazonBedrockExecutionRoleForAgents 具有Amazon S3完全访问权限和Lambda完全访问权限。

重要提示:Amazon Bedrock的代理角色名称必须以AmazonBedrockExecutionRoleForAgents_*开头

Bedrock代理设置

在接下来的两个部分中,我们将引导您创建并测试代理。

为Amazon Bedrock创建代理

要创建代理,请打开Amazon Bedrock控制台并在左侧导航窗格中选择代理。然后选择创建代理

这是启动代理创建工作流程的起点。

  1. 提供代理详情:给代理命名并提供描述(可选)。选择 CloudFormation 堆栈创建的服务角色,然后选择 下一步
代理详情
  1. 选择基础模型:在选择模型窗口中,选择一个模型。向代理提供清晰准确的指令,指导其执行任务并与用户进行交互。

选择基础模型

  1. 添加动作组:动作是代理通过进行 API 调用来执行的任务。一组动作组成一个动作组。您需要提供一个 API 模式,定义动作组中的所有 API。您必须在OpenAPI 模式 JSON 格式中提供 API 模式。Lambda 函数包含执行 API 调用所需的业务逻辑。您必须将每个动作组与 Lambda 函数关联。

给动作组命名并提供一个描述。选择 Lambda 函数,提供一个 API 模式文件,然后选择 下一步

代理动作组
  1. 在最后一步中,查看代理配置,然后选择 创建代理

测试和部署 Amazon Bedrock 的代理

  1. 测试代理:代理创建后,一个对话框显示代理概述和工作草稿。Amazon Bedrock 控制台提供了一个界面来测试您的代理。

  1. 部署:在成功测试后,您可以部署您的代理。为您的应用程序部署代理时,您必须创建一个别名。Amazon Bedrock 然后会自动为该别名创建一个版本。

在前述代理设置和本文提供代码的情况下,会发生以下操作:

  1. 代理从开发人员提供的指令(例如“您是一个帮助顾客购买鞋子的代理”)、完成任务所需的 API 模式和数据源详情创建提示。自动提示创建可省去数周进行针对不同 FM 的不同提示实验。
  2. 代理通过将用户请求的任务(如“我要找鞋子”)拆分为较小的子任务,如获取顾客详情,将顾客的首选活动与鞋类活动进行匹配,并下单购买鞋子。代理确定正确的任务顺序,并在过程中处理错误情况。

下面的屏幕截图显示了代理人的一些示例回答。

代理人示例回答

通过选择每个回答的显示追踪,一个对话框将显示代理人使用的推理技术和FM生成的最终回答。

代理人追踪1
代理人追踪2
代理人追踪3

清理

为了避免未来的费用,需要删除资源。您可以通过从CloudFormation控制台删除堆栈来进行此操作。

删除CloudFormation堆栈

欢迎从GitHub的Amazon Bedrock代理人存储库下载并测试本文中使用的代码。您还可以通过编程调用Amazon Bedrock的代理人;该存储库提供了一个示例Jupyter Notebook

结论

Amazon Bedrock的代理人可以帮助您提高生产力,改善客户服务体验或自动化DevOps任务。在本文中,我们向您展示了如何设置Amazon Bedrock的代理人以创建一个客户服务机器人。

我们鼓励您通过查看Amazon Bedrock的其他功能来了解更多。您可以使用本文提供的示例代码来创建您自己的实现。尝试我们的工作坊,以获得对Amazon Bedrock的实际操作经验。