建立一个以运动代理模型(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生成口头推理过程和任务的行动。这使系统能够执行动态推理,以创建、维护和调整行动计划,同时将附加信息纳入推理过程中。结构化提示包括一系列的问题-思考-行动-观察示例。
- 使用LangChain、Amazon SageMaker JumpStart和MongoDB Atlas语义搜索来增强检索生成
- 萨姆·阿尔特曼被移出OpenAI,米拉·穆拉蒂被任命为临时CEO
- 使用Amazon Rekognition来控制您的Amazon IVS直播流的适度程度
- 问题是用户请求的任务或问题。
- 思考是对FM展示如何解决问题并确定所采取的行动的推理步骤。
- 行动是模型可以从允许的API集合中调用的API。
- 观察是执行行动的结果。
Amazon Bedrock的Agent组件
在幕后,Amazon Bedrock的Agent自动化了问题引擎和用户请求任务编排。它们可以安全地使用公司特定信息来增强问题,以便用自然语言回复用户。Agent将用户请求的任务分解为多个步骤,并通过FM的帮助编排子任务。行动组是Agent可以自主执行的任务。行动组被映射到一个 AWS Lambda 函数和相关的API架构以执行API调用。以下图示了Agent结构。
解决方案概述
我们使用鞋类零售商的使用案例来构建客户服务机器人。该机器人通过进行类似人类对话的方式,帮助客户购买鞋子。客户以自然语言与机器人交流,并通过多个步骤调用外部API来完成子任务。以下图示了示例流程。
以下图表描述了此解决方案的高级架构。
- 您可以使用Amazon Bedrock支持的诸如Anthropic Claude V2之类的FMs创建代理。
- 将API架构和包含业务逻辑的Lambda函数连接到代理(注意:这是一次性的设置步骤)。
- 代理使用客户请求使用ReAct框架创建提示,然后使用API架构调用Lambda函数中的相应代码。
- 您可以执行各种任务,包括发送电子邮件通知,写入数据库以及触发Lambda函数中的应用程序API。
在这篇文章中,我们使用Lambda函数来检索客户详细信息,列出与客户首选活动匹配的鞋子,最后下订单。我们的代码由内存中的SQLite数据库支持。您可以使用类似的结构来写入持久数据存储。
先决条件
要实现本文提供的解决方案,您需要拥有一个AWS账户并能够访问启用了代理的Amazon Bedrock(目前处于预览阶段)。使用AWS CloudFormation模板创建所需的资源堆栈。
us-east-1 |
CloudFormation模板会创建两个IAM角色。请更新这些角色以应用最小权限权限,如安全最佳实践中所讨论的。点击此处了解可用于使用Amazon Bedrock代理的IAM功能。
LambdaBasicExecutionRole
具有Amazon S3完全访问权限和用于日志记录的CloudWatch访问权限。AmazonBedrockExecutionRoleForAgents
具有Amazon S3完全访问权限和Lambda完全访问权限。
重要提示:Amazon Bedrock的代理角色名称必须以AmazonBedrockExecutionRoleForAgents_*
开头
Bedrock代理设置
在接下来的两个部分中,我们将引导您创建并测试代理。
为Amazon Bedrock创建代理
要创建代理,请打开Amazon Bedrock控制台并在左侧导航窗格中选择代理。然后选择创建代理。
这是启动代理创建工作流程的起点。
- 提供代理详情:给代理命名并提供描述(可选)。选择 CloudFormation 堆栈创建的服务角色,然后选择 下一步。
- 选择基础模型:在选择模型窗口中,选择一个模型。向代理提供清晰准确的指令,指导其执行任务并与用户进行交互。
- 添加动作组:动作是代理通过进行 API 调用来执行的任务。一组动作组成一个动作组。您需要提供一个 API 模式,定义动作组中的所有 API。您必须在OpenAPI 模式 JSON 格式中提供 API 模式。Lambda 函数包含执行 API 调用所需的业务逻辑。您必须将每个动作组与 Lambda 函数关联。
给动作组命名并提供一个描述。选择 Lambda 函数,提供一个 API 模式文件,然后选择 下一步。
- 在最后一步中,查看代理配置,然后选择 创建代理。
测试和部署 Amazon Bedrock 的代理
- 测试代理:代理创建后,一个对话框显示代理概述和工作草稿。Amazon Bedrock 控制台提供了一个界面来测试您的代理。
- 部署:在成功测试后,您可以部署您的代理。为您的应用程序部署代理时,您必须创建一个别名。Amazon Bedrock 然后会自动为该别名创建一个版本。
在前述代理设置和本文提供代码的情况下,会发生以下操作:
- 代理从开发人员提供的指令(例如“您是一个帮助顾客购买鞋子的代理”)、完成任务所需的 API 模式和数据源详情创建提示。自动提示创建可省去数周进行针对不同 FM 的不同提示实验。
- 代理通过将用户请求的任务(如“我要找鞋子”)拆分为较小的子任务,如获取顾客详情,将顾客的首选活动与鞋类活动进行匹配,并下单购买鞋子。代理确定正确的任务顺序,并在过程中处理错误情况。
下面的屏幕截图显示了代理人的一些示例回答。
通过选择每个回答的显示追踪,一个对话框将显示代理人使用的推理技术和FM生成的最终回答。
清理
为了避免未来的费用,需要删除资源。您可以通过从CloudFormation控制台删除堆栈来进行此操作。
欢迎从GitHub的Amazon Bedrock代理人存储库下载并测试本文中使用的代码。您还可以通过编程调用Amazon Bedrock的代理人;该存储库提供了一个示例Jupyter Notebook。
结论
Amazon Bedrock的代理人可以帮助您提高生产力,改善客户服务体验或自动化DevOps任务。在本文中,我们向您展示了如何设置Amazon Bedrock的代理人以创建一个客户服务机器人。
我们鼓励您通过查看Amazon Bedrock的其他功能来了解更多。您可以使用本文提供的示例代码来创建您自己的实现。尝试我们的工作坊,以获得对Amazon Bedrock的实际操作经验。