构建一个基于基础模型FM且由亚马逊 Bedrock 代理驱动的客户服务机器人 机器学习博客
使用 Amazon Bedrock 代理构建基础模型FM驱动的客户服务机器人
关键点
在这篇文章中,我们将探讨如何利用 Amazon Bedrock 构建一个以基础模型FM为动力的客户服务机器人。我们将介绍 Amazon Bedrock 代理的创建、配置过程以及如何通过 ReAct 提升用户体验。
从对话体验的增强到代理辅助,生成式人工智能AI和基础模型FMs能够提供更快、更优质的支持。随着 FMs 的可用性和多样性的增加,保持最新版本变得越来越困难。Amazon Bedrock 是一种完全托管的服务,提供来自 AI 领先公司的高性能 FMs 选择。借助 Amazon Bedrock 的全面能力,您可以轻松实验多种顶级 FMs,使用微调和增强检索生成RAG等技术,私密于您的数据中进行自定义。
Amazon Bedrock 代理
在七月,AWS 宣布了 Amazon Bedrock 代理 的预览版本,这是一种新的能力,使开发人员可以仅需几次点击来创建完全托管的代理。代理扩展了 FM 的功能,以执行复杂的业务任务从预订旅行和处理保险索赔到创建广告活动和管理库存而无需编写任何代码。借助完全管理的代理,您无需担心基础设施的配置或管理。
本文提供了一个逐步指南,构建一个客户服务机器人的基本组件。我们将使用文本生成模型Anthropic Claude V2和 Amazon Bedrock 代理来实现此解决方案。我们还提供了一个 AWS CloudFormation 模板,用于配置构建此解决方案所需的资源。接下来,我们将引导您创建 Amazon Bedrock 代理的步骤。
ReAct 提示
FMs 使用称为 ReAct 的技术来决定如何解决用户请求的任务。ReAct 将推理与 FMs 的动作结合起来,生成语言推理过程和任务的行动。这使系统能够进行动态推理,创建、维护和调整行动计划,同时将额外信息纳入推理之中。结构化提示包括问题思考行动观察的序列示例。
问题:用户请求的任务或需要解决的问题。思考:推理步骤,帮助 FM 了解如何解决问题并确定采取的行动。行动:模型可以从允许的 API 集合中调用的 API。观察:执行行动的结果。Amazon Bedrock 代理的组件
在后台,Amazon Bedrock 代理自动处理用户请求任务的提示工程和协调。它们可以安全地增强提示,结合公司特定的信息,以用自然语言向用户提供响应。代理将用户请求的任务分解为多个步骤,并借助 FMs 协调子任务。行动组是代理可以自主执行的任务,行动组映射到一个AWS Lambda 函数和相关 API 架构以执行 API 调用。以下图示描述了代理结构。
解决方案概述
我们以鞋类零售商的案例构建客户服务机器人。该机器人通过提供选项,帮助客户购买鞋子,并提供类人对话。客户可以使用自然语言与机器人对话,多个步骤调用外部 API 来完成子任务。以下图示展示了示例过程流。
以下图示描绘了此解决方案的高层架构。
使用 Amazon Bedrock 支持的 FMs 创建一个代理,例如 Anthropic Claude V2。附加一个 API 架构,该架构存储在一个 Amazon S3 存储桶中,并将包含业务逻辑的 Lambda 函数与代理关联起来。注意:这是一次性设置步骤。代理利用客户请求通过 ReAct 框架创建提示。然后,使用 API 架构调用 Lambda 函数中的相应代码。可以执行多种任务,包括发送电子邮件通知、写入数据库以及触发 Lambda 函数中的应用 API。本文中,我们使用 Lambda 函数来检索客户详细信息,列出符合客户偏好的鞋子,并最终下单。我们的代码由一个内存中的 SQLite 数据库支持。您也可以使用类似的结构写入持久数据存储。
前提条件
要实现本文提供的解决方案,您应具有一个 AWS 账户 并访问已启用代理的 Amazon Bedrock目前处于预览阶段。使用 AWS CloudFormation 模板创建所需的资源堆栈。
useast1CloudFormation 模板会创建两个 IAM 角色。请根据 安全最佳实践 更新这些角色以应用最小权限。单击 这里 了解 Amazon Bedrock 代理可以使用的 IAM 功能。
LambdaBasicExecutionRole 具有对 Amazon S3 的完全访问权限和对 CloudWatch 的日志访问权限。AmazonBedrockExecutionRoleForAgents 具有对 Amazon S3 和 Lambda 的完全访问权限。重要: Amazon Bedrock 代理必须将角色名称以 AmazonBedrockExecutionRoleForAgents 作为前缀。
设置 Bedrock 代理
在接下来的两个部分中,我们将引导您创建和测试代理。
为 Amazon Bedrock 创建代理
要创建代理,打开 Amazon Bedrock 控制台,在左侧导航窗格中选择 代理,然后选择 创建代理。
这将启动代理创建工作流。
提供代理详细信息:给代理命名和描述可选。选择由 CloudFormation 堆栈创建的服务角色,选择 下一步。您是一个客户服务机器人,帮助客户通过提供与他们的偏好相符的相关细节来购买网站上的商品。
选择由 CloudFormation 堆栈创建的服务角色并选择 下一步。
选择基础模型:在 选择模型 屏幕中,选择一个模型。为代理提供清晰准确的任务指令和与用户交互的方式。您是一个帮助客户购买鞋子的代理。根据客户的名称提取客户 ID 和偏好的活动,然后检查库存中最符合客户偏好的活动的鞋子。根据鞋子库存细节生成包含鞋子 ID、样式说明和颜色的响应。如果存在多个匹配项,则向用户展示所有鞋子的详细信息。在客户表示希望购买鞋子后,使用其选择对应的鞋子 ID 和提取的客户 ID 下订单。
添加行动组:行动是代理可以通过 API 调用执行的任务。一组行动构成一个行动组。您需提供一个定义所有行动的 API 架构。必须提供以 OpenAPI 架构 JSON 格式的 API 架构。对于该代理,API 架构存储在本文的 S3 存储桶中,路径为 s3//agentb8xltyourawsaccountidgt/customerservicebotjson。Lambda 函数包含执行 API 调用所需的业务逻辑。您还必须将每个行动组与一个 Lambda 函数关联起来。为行动组命名并提供行动描述,选择 Lambda 函数,提供 API 架构文件,然后选择 下一步。
在最后一步,检查代理配置并选择 创建代理。测试和部署 Amazon Bedrock 代理
测试代理:创建代理后,将显示一个对话框,概述代理和工作草稿。Amazon Bedrock 控制台提供了一个测试代理的 UI。
部署:测试成功后,您可以部署代理。要在应用中部署代理,必须创建一个别名。Amazon Bedrock 则会为该别名自动创建一个版本。
在进行上述代理设置和提供的 Lambda 代码时,将执行以下操作:
代理根据开发人员提供的指令例如“您是一个帮助客户购买鞋子的代理。”、完成任务所需的 API 架构和数据源详细信息创建提示。自动提示创建节省了数周的与不同 FM 实验提示的时间。代理协调用户请求的任务,例如“我在寻找鞋子”,通过将其分解为更小的子任务,例如获取客户详细信息、将客户偏好的活动与鞋子活动匹配以及下订单。代理确定任务的正确顺序并处理其中的错误场景。以下截图显示了一些代理的示例响应。
通过选择 显示跟踪 对于每个响应,将显示一个对话框,显示代理使用的推理技术和由 FM 生成的最终响应。
蓝快加速器安卓版下载官网清理
为避免未来产生费用,请删除这些资源。您可以通过从 CloudFormation 控制台删除堆栈来做到这一点。
您可以从 GitHub 的 Amazon Bedrock 代理代码库 下载并测试本文中使用的代码。您还可以以编程方式调用 Amazon Bedrock 代理;代码库中提供了一个 示例 Jupyter Notebook。
结论
Amazon Bedrock 代理可以帮助您提高生产力、改善客户服务体验或自动化 DevOps 任务。本文展示了如何设置 Amazon Bedrock 代理以创建客户服务机器人。
我们鼓励您通过查看 Amazon Bedrock 额外功能来了解更多。您可以使用本文提供的示例代码创建自己的实现。请尝试我们的 研讨会以获得 Amazon Bedrock 的实践经验。
作者介绍
Amit Arora 是 Amazon Web Services 的人工智能和机器学习专家架构师,帮助企业客户利用基于云的机器学习服务快速扩展他们的创新。他还是乔治城大学数据科学与分析硕士项目的兼职讲师。
Manju Prasad 是 Amazon Web Services 战略客户部的高级解决方案架构师。她专注于提供多领域的技术指导,包括对知名媒体和娱乐客户的 AI/ML 指导。在加入 AWS 之前,她曾就职于金融服务行业的公司以及一家初创企业。
Archana Inapudi 是 AWS 支持战略客户的高级解决方案架构师。她在帮助客户设计和构建数据分析及数据库解决方案方面拥有十多年经验。她热衷于利用技术为客户提供价值,实现业务成果。