生成式AI的出现已经彻底改变了传统客服,为开发者和企业提供了更快速、更准确、更个性化的响应能力。其中由大语言模型(LLM)驱动的AI代理能够分析复杂的客户咨询,访问多个数据源,并提供相关的详细答案。在本文中,小李哥将带大家探索如何将亚马逊云科技Amazon Bedrock Agents与企业数据API集成,从而打造更具个性化和高效的客户支持体验。本文的解决方案适用于各个行业,但我们将以汽车零部件零售商为案例进行讲解。读完本方案后,大家将清楚地了解如何:
- 使用Amazon Bedrock Agents创建智能、具备上下文感知能力的客户支持机器人
- 通过AWS Lambda将企业数据源(如库存管理和目录系统)与代理Agent集成
- 使用Amazon Bedrock Agents API构建自定义聊天界面
- 实现能够即时交叉引用产品规格与目录、检查实时库存并向最终用户提供详细信息的解决方案
解决方案概览
在本文中我们以汽车零部件零售商为例。买过车的朋友们都知道,找到合适的零件可能会很难,因为通常需要浏览庞大的产品目录并考虑复杂的汽车型号兼容性要求。汽车零售商可能会使用库存管理API来跟踪库存水平,并使用目录API来查询车辆兼容性和规格。同时访问汽车手册和技术文档可以帮助代理提供额外的背景信息,从而提升客户交互体验的质量。
本文介绍的解决方案部署时间大约需要15–30分钟,本方案主要包含以下关键模块:
- 包括三个索引的Amazon OpenSearch Service Serverless:库存索引、兼容零件索引和用户手册索引。这些索引可高效搜索和检索零件数据及车辆信息,提供快速准确的查询结果。
- Amazon Bedrock Agents会负责协调AI基础模型、知识库和用户对话的交互。代理还可以自动调用API执行操作,并访问知识库提供额外信息。
- Amazon Bedrock Knowledge Bases使大家能够使用检索增强生成(RAG)技术,这一技术通过挂载额外的数据增强LLM的响应能力。通过为知识库配置数据源,应用程序可以查询它们以提供答案,可以直接引用数据源的信息,或基于查询结果自然生成的回答。
- Web前端界面应用,用户可在此发起零件查询请求。
数据导入流程
数据导入流程目的是准备和存储AI代理可访问的必要数据。下图展示了该流程的工作流程。
Amazon Bedrock上的知识库处理这些文档的流程如下:
- 文档和用户手册将被上传到Amazon S3存储桶。
- 配置知识库使用S3存储桶作为数据源。
- 开启数据源同步,知识库检测S3存储桶中新添加、修改或删除的文档,并进行更新。
- 文档被拆分为更小的文件块以便更有效地处理。此解决方案使用固定大小拆分,可以通过每个段落的token数量和重叠比例来配置拆分方式。
- 每个段落都通过Amazon Bedrock上的Cohere Embed模型进行向量化处理,创建文本的向量embeddings。
- 向量存储在Amazon OpenSearch Service的索引中。OpenSearch Service作为向量数据库,支持高效的相似性搜索。向量数据以及相关的元数据被一同存储,并创建索引,以便快速检索。
用户交互流程
下图展示了用户与Agent的交互流程,我们将以一个真实的汽车零件销售的案例来讲解。
首先用户是通过Web应用程序界面与Car Parts Agent交互。比如用户提出: “2021 款本田 CR-V 适配哪种雨刮?” 或 “告诉我汽车零件编号76622-T0A-A01的信息” 这样的查询。
接下来Web应用程序使用InvokeAgent API将用户查询发送给Amazon Bedrock代理。该代理使用 Anthropic Claude 3 Sonnet解析用户的查询,并通过链式思维推理(CoT reasoning)确定最佳的处理方式。在此阶段代理会使用AI安全防护(Guardrails)确保代理的行为符合我们提前设定的安全策略。代理在运行时会执行预处理和后处理,对用户输入进行分类,使其能够正确处理超出范围的问题或潜在有害的输入,而不会尝试回答其能力或知识库之外的问题。随后代理分析用户查询,从知识库提取关键信息,如车辆详情、零件编号或汽车相关主题。如果查询在范围内,代理继续处理;否则它会返回一条消息告诉用户其无法满足该请求。
对于一般的查询,代理会访问其在Amazon Bedrock上的知识库,其中包含各种汽车手册的信息。这使代理能够提供关于汽车零件和系统的背景信息和通用知识。对于特定零件查询,代理会检查配置中可用的预定义Agent可执行行为的Action Groups中,并调用正确的外部API以检索相关信息。在代理确定用户输入需要执行特定操作时,才回调用外部的API。整个流程总结如下:
- Lambda函数会在相应的OpenSearch Service索引上运行知识库数据库查询,通过完全匹配或模糊匹配模式搜索。主要用于查询具体零件信息,并访问兼容零件索引查询零件的适配性信息。
- Lambda函数处理OpenSearch Service返回的查询结果,并将其格式化以供Amazon Bedrock代理使用。
- Amazon Bedrock代理接收格式化后的数据,并结合其通用知识,生成易于理解的人类语言回复,为用户提供完整的答案,用于完成客服场景下的任务。
下图展示了代理整个的工作的逻辑流程。
用到的开发工具
该解决方案还使用了以下开发工具:
- AWS Powertools for Lambda – 这是一套适用于Lambda无服务器计算服务的开发工具,可自动从Lambda代码生成OpenAPI架构定义脚本。它提供业务逻辑注解、描述和参数验证,并自动生成 JSON序列化的OpenAPI架构定义脚本,供Amazon Bedrock Agents使用。
- AWS Generative AI Constructs Library – 这是AWS CDK的开源扩展包,提供针对亚马逊多个服务、符合架构设计最佳实践的封装好的预定义模块,可以帮助开发者快速开发生成式AI解决方案。同时塔特它提供基础设施模式,帮助开发者构建基于预定义架构的生成式 AI 应用程序。