![cover](https://i-blog.csdnimg.cn/direct/d6004ae16f4946dd826c3c7239f3b1e1.jpeg)
使用AI Agents集成外部API开发智能客服解决方案(下)
小李哥在本系列上篇中为大家介绍了,基于亚马逊云科技的汽车零售行业的客服解决方案以及整个工作流程。本系列下篇中,我们将手把手开发构建这个智能客服。
小李哥在本系列上篇中为大家介绍了,基于亚马逊云科技的汽车零售行业的客服解决方案以及整个工作流程。本系列下篇中,我们将手把手开发构建这个智能客服。
预先条件
我们再开发智能体解决方案前,需要具备以下条件:
- 一个亚马逊云科技账户,并拥有相应的AWS IAM用户和权限,用于创建Amazon Bedrock代理、知识库、Lambda代码函数和IAM角色
- 有权限访问以下托管在Amazon Bedrock上的模型:
- Anthropic的Claude 3 Sonnet(模型 ID:
anthropic.claude-3-sonnet-20240229-v1:0
) - Cohere Embed English v3(模型 ID:
cohere.embed-english-v3
)
- Anthropic的Claude 3 Sonnet(模型 ID:
- 一个本地开发环境,包含以下内容:
- 已安装并配置好API key,拥有适当权限的亚马逊云科技命令行界面(AWS CLI)
- Python 3.9或更高版本
- Node.js v20.x或更高版本
- 已安装AWS CDK CLI
开始部署
以下步骤概述了使用AWS CDK部署该解决方案的流程。完整的源代码可在亚马逊云科技官方的GitHub仓库中找到。
1. 打开终端,运行以下命令,将GitHub仓库克隆到本地:
git clone https://github.com/aws-samples/bedrock-agent-carpart-lookup.git
cd bedrock-agent-carpart-lookup
2. 创建并激活Python虚拟环境:
python -m venv .venv
source .venv/bin/activate # On Windows, use .venv\Scripts\activate
3. 安装所需的Python依赖包:
pip install -r requirements.txt
4. 使用AWS CDK CLI部署解决方案:
cdk deploy
在部署过程中,可能会提示你需要同意IAM角色创建和安全变更。大家需要仔细检查并确认这些权限后再进行批准。部署完成后,AWS CDK CLI将输出我们智能体Web应用的URL到控制台界面(如下截图所示)。请记录该URL,以便后续访问和测试代理。
验证已部署的代理
部署完成后,我们可以在Amazon Bedrock控制台中验证已创建的资源。在Agents页面,我们会看到一个新代理,名为car-parts-agent
。
配置有效的代理指令
优化AI智能体助手的性能需要一组清晰、结构化的指令。指令应包括以下关键部分:
- 代理角色 – 定义助手的用途,例如作为“汽车零件助手”,帮助用户查找兼容的零件和汽车信息
- 代理操作 – 概述主要任务,如根据车辆信息识别零件、验证兼容性、提供技术规格
- 代理指南 – 确立交互规则,优先考虑准确性和安全性,明确不确定性,并在搜索时使用操作
- 代理防护 – 实施限制,确保代理安全高效运行,使用相关的汽车知识提升用户支持体验
例如,我们在这个案例里部署的代理已预先配置了以下指令:
代理的两个主要组件:
-
操作组(Action group) – 我们再代理中创建了一个名为
CarpartsApi
的操作组,并使用 OpenAPI schema定义了其可执行的操作。可以选择使用Powertools for AWS Lambda来简化OpenAPI schema的生成过程。之后将该操作组与一个包含业务逻辑的Lambda函数相关联。 -
知识库(Knowledge base) – 该存储库利用Amazon Bedrock 的RAG(检索增强生成)技术增强代理的回答能力,包含汽车手册和技术文档。在将知识库与代理关联时,大家可以选择提供代理如何使用知识库的描述。本次演示中我们使用了以下知识库描述作为指示:
该代理采用CoT(Chain of Thought)推理方式处理用户查询,对输入内容进行分析,并基于 OpenAPI及知识库描述评估Agent适用的操作。当OpenAPI schema规定的信息存在缺失时,代理会向用户提问以收集必要信息。通过这一分析和信息收集过程,代理自行决定逻辑步骤,包括API调用和知识库查询。AI模型会结合提示词和最终的观测结果生成回复,FM依据这些信息执行最有效的操作。
在本示例中我们使用AWS CDK和AWS Generative AI Constructs Library来创建 Amazon Bedrock 代理。这种方式可以确保基础设施即代码(IaC)的版本控制和可复现性。我们也可以使用AWS CLI或AWS控制台创建代理。
测试和验证解决方案
部署完成后我们可以在Amazon Bedrock控制台或通过之前部署生成的Web应用URL测试代理。在应用程序中,我们可以询问类似以下问题:
“2021款本田CR-V适配什么型号的雨刮器?”
“请告诉我零件编号76622-T0A-A01的详细信息。”
为了展示Amazon Bedrock代理的推理能力,让我们用户问题 “2021款本田CR-V适配什么型号的雨刮器?” 的响应流程:
1. 代理分析用户查询,提取关键信息:
Honda
(品牌)、CR-V
(车型)、2021
(年份)、雨刮器(零件类别)。
2. 代理推理应该调用哪 API,最终代理选择get_compatible_parts函数,该函数适用于车型查询和查询零件信息的场景。
3. 代理将查询中的关键字段映射到函数的输入参数,展示理解自然语言生成API调用的能力。
4. 代理调用carPartsApi/get_compatible_parts的API
操作,该操作查询OpenSearch Service索引以获取兼容的零件信息。当代理调用Lambda函数时,Amazon Bedrock以通用格式向 Lambda发送输入事件。
5. 代理接收响应后,解析数据,提取相关雨刮器选项,并生成自然语言回复,推荐特定型号的雨刮器。Amazon Bedrock有预定义的Lambda函数的返回结果格式,我们需以符合预定义格式开发Lambda中的API响应。
响应内容
我们的方案展示了Amazon Bedrock代理如何智能集成企业数据API,并结合AI推理能力,为用户提供准确、基于上下文的查询响应,我们的示例响应如下:
Based on the compatible parts search for a 2021 Honda CR-V in the “Wipers” category, here are the recommended wiper blade options:
- Wiper Blade Set (Part #76622-TLA-A11) – This is a genuine Honda wiper blade set that includes the driver and passenger side wiper blades for the CR-V.
- Rear Wiper Blade (Part #76630-TLA-A01) – This is the rear wiper blade specifically for the 2021 CR-V.
- You can also consider individual wiper blades like the Driver Side Wiper Blade (Part #76622-T0A-A01) or the Passenger Side Wiper Arm (Part #76630-T0A-A01) if you only need to replace one side.
清理资源
如果大家已完成该解决方案的开发,需要清理刚才创建的云服务避免产生额外费用,可以运行以下命令删除所创建的资源:
cdk destroy
运行该命令后,所有与该项目相关的资源将被安全删除,以释放云端计算和存储资源。
更多推荐
所有评论(0)