本文由 LangChain 的 Harrison Chase、Erick Friis 和 Linda Ye 联合撰写。
生成式 AI 在未来几年将彻底变革用户体验。在这一过程中,关键的一步是引入能够智能使用工具的 AI 助手,帮助客户导航数字世界。在本文中,我们展示了如何部署一个上下文感知的 AI 助手。该助手基于 Amazon Bedrock 知识库、Amazon Lex 和 Amazon Connect 构建,并使用 WhatsApp 作为交互渠道,为用户提供一种熟悉且便利的界面。
Amazon Bedrock 知识库为基础模型 (FMs) 和代理提供来自企业私有数据源的上下文信息,支持 检索增强生成 (RAG),以提供更相关、准确和定制化的回复。对于希望增强生成式 AI 应用程序的组织来说,该功能提供了一个强大的解决方案。通过与 Amazon Lex 和 Amazon Connect 的原生兼容性,它简化了领域特定知识的整合。通过自动化文档导入、分块和嵌入,消除了手动设置复杂向量数据库或自定义检索系统的需求,大幅降低了开发复杂性和时间。
这种解决方案提升了基础模型响应的准确性,降低了由于基于验证数据而产生的错误回答。相比维护自定义知识管理系统,该方案通过减少开发资源和运营成本提高了成本效率。通过 AWS 的无服务器服务,它的可扩展性可以快速适应不断增长的数据量和用户查询量。还利用 AWS 强大的安全基础设施来维护数据隐私和合规性。通过持续更新和扩充知识库,AI 应用程序能够始终跟上最新信息。选择 Amazon Bedrock 知识库后,组织可以专注于创造增值的 AI 应用程序,而 AWS 处理知识管理和检索的复杂性,从而以更少的努力更快地部署更准确、更强大的 AI 解决方案。
前置条件
要实现该解决方案,您需要具备以下条件:
- 一个 AWS 账户,具有在 Amazon Bedrock、Amazon Lex、Amazon Connect 和 AWS Lambda 中创建资源的权限。
- 模型访问权限,可在 Amazon Bedrock 上启用 Anthropic 的 Claude 3 Haiku 模型。按照 访问 Amazon Bedrock 基础模型 中的步骤操作。
- 一个 WhatsApp 商业账户,用于与 Amazon Connect 集成。
- 产品文档、知识文章或其他相关数据,格式需兼容(如 PDF 或文本),以导入知识库。
解决方案概述
此解决方案使用多个关键的 AWS AI 服务来构建和部署 AI 助手:
- Amazon Bedrock – Amazon Bedrock 是一个完全托管的服务,通过单一 API 提供来自领先 AI 公司(如 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon)的高性能基础模型 (FMs),以及构建具有安全性、隐私性和负责任 AI 的生成式 AI 应用所需的广泛功能。
- Amazon Bedrock Knowledge Bases – 为 AI 助手提供来自公司私有数据源的上下文信息。
- Amazon OpenSearch Service – 作为矢量存储,原生支持 Amazon Bedrock Knowledge Bases。
- Amazon Lex – 用于构建 AI 助手的对话界面,包括定义意图和槽位。
- Amazon Connect – 集成 WhatsApp,使 AI 助手能够在这一流行的消息应用程序中可用。
- AWS Lambda – 运行代码以集成服务并实现构成 AI 助手核心逻辑的 LangChain agent。
- Amazon API Gateway – 接收从 WhatsApp 触发的入站请求,并将请求路由到 AWS Lambda 进行进一步处理。
- Amazon DynamoDB – 存储接收和生成的消息以支持对话记忆。
- Amazon SNS – 处理来自 Amazon Connect 的出站响应的路由。
- LangChain – 提供用于构建 LangChain agent 的强大抽象层,帮助基础模型 (FMs) 执行上下文感知推理。
- LangSmith – 将 agent 的执行记录上传到 LangSmith,以增强可观测性,包括调试、监控以及测试与评估功能。
以下图示展示了架构。
流程描述
图中右侧用红色数字表示数据摄取过程:
- 将文件上传到 Amazon Simple Storage Service (Amazon S3) 数据源。
- 新文件触发 Lambda 函数。
- Lambda 函数调用知识库数据源的同步操作。
- Amazon Bedrock Knowledge Bases 从 Amazon S3 获取数据,对其进行切块,并通过选定的基础模型 (FM) 生成嵌入向量。
- Amazon Bedrock Knowledge Bases 将嵌入向量存储在 Amazon OpenSearch Service 中。
图中左侧用数字表示消息传递过程:
- 用户通过 WhatsApp 向托管在某处的 webhook 发送消息发起通信。
- Amazon API Gateway 将入站消息路由到由 AWS Lambda 执行的入站消息处理器。
- 入站消息处理器在 Amazon DynamoDB 中记录用户的联系信息。
- 对于首次使用的用户,入站消息处理器在 Amazon Connect 中建立新会话并记录到 DynamoDB。对于返回用户,则恢复其现有的 Amazon Connect 会话。
- Amazon Connect 将用户消息转发到 Amazon Lex 进行自然语言处理。
- Amazon Lex 触发由 Lambda 函数实现的 LangChain AI 助手。
- LangChain AI 助手从 DynamoDB 检索对话历史记录。
- 使用 Amazon Bedrock Knowledge Bases,LangChain AI 助手获取相关的上下文信息。
- LangChain AI 助手生成一个提示,结合上下文数据和用户查询,并将其提交给运行在 Amazon Bedrock 上的基础模型。
- Amazon Bedrock 处理输入并将模型的响应返回给 LangChain AI 助手。
- LangChain AI 助手将模型的响应传递回 Amazon Lex。
- Amazon Lex 将模型的响应传输到 Amazon Connect。
- Amazon Connect 将模型的响应发布到 Amazon Simple Notification Service (Amazon SNS)。
- Amazon SNS 触发出站消息处理器 Lambda 函数。
- 出站消息处理器从 Amazon DynamoDB 检索相关的聊天联系人信息。
- 出站消息处理器通过 Meta 的 WhatsApp API 将响应发送给用户。
部署此 AI 助手涉及三个主要步骤:
- 使用 Amazon Bedrock Knowledge Bases 创建知识库,并导入相关的产品文档、常见问题解答(FAQs)、知识文章和其他有助于 AI 助手回答用户问题的有用数据。数据应涵盖 AI 助手支持的关键用例和主题。
- 创建一个 LangChain agent 来驱动 AI 助手的逻辑。该代理在 Lambda 函数中实现,并使用知识库作为其主要工具进行信息查找。通过提供的 AWS CloudFormation 模板 自动部署代理和其他资源。请参阅下一部分的资源列表。
- 创建 Amazon Connect 实例 并配置 WhatsApp 集成。这使用户能够通过 WhatsApp 与 AI 助手聊天,提供一种熟悉的界面,并支持丰富的交互,如图像和按钮。WhatsApp 的普及性提高了 AI 助手的可访问性。
解决方案部署
我们提供了预构建的 AWS CloudFormation 模板,可在您的 AWS 账户中部署所需的全部内容。
- 如果尚未登录,请登录 AWS 控制台。
- 选择以下 Launch Stack 按钮以打开 CloudFormation 控制台 并创建一个新栈。
- 输入以下参数:
StackName
:为您的栈命名,例如WhatsAppAIStack
LangchainAPIKey
:通过 LangChain 生成的 API 密钥
区域 | 部署按钮 | 模板 URL(用于将现有栈升级到新版本) | AWS CDK 栈(可根据需要自定义) |
---|---|---|---|
弗吉尼亚北部(us-east-1) | YML | GitHub |
- 勾选框以确认您正在创建 AWS Identity and Access Management (IAM) 资源,然后选择 Create Stack。
- 等待栈创建完成,大约需要 10 分钟。完成后会创建以下内容:
- LangChain agent
- Amazon Lex bot
- Amazon Bedrock Knowledge Base
- 向量存储(Amazon OpenSearch Serverless)
- Lambda(用于数据导入和提供者)
- 数据源(Amazon S3)
- DynamoDB
- Parameter Store 用于存储 LangChain API 密钥
- IAM 角色 和权限
- 将文件上传到为 WhatsApp 创建的数据源(Amazon S3)。一旦您上传文件,数据源将自动同步。
- 在 Amazon Lex 控制台中选择最近创建的助手进行测试。选择 English,然后选择 Test 并发送一条消息。
创建 Amazon Connect 实例并集成 WhatsApp
配置 Amazon Connect 以与您的 WhatsApp 企业账户集成,并为 AI 助手启用 WhatsApp 渠道:
- 在 AWS 控制台中的 Amazon Connect 中导航。如果尚未创建实例,请创建一个实例。在 Distribution settings 下复制您的 Instance ARN。稍后将需要此信息来链接您的 WhatsApp 企业账户。
- 选择您的实例,然后在导航面板中选择 Flows。向下滚动并选择 Amazon Lex。选择您的机器人并选择 Add Amazon Lex Bot。
- 在导航面板中选择 Overview。在 Access Information 下选择 Log in for emergency access。
- 在 Amazon Connect 控制台中,在导航面板的 Routing 下选择 Flows。选择 Create flow。将一个 Get customer input 块拖到流程中。选择该块。选择 Text-to-speech or chat text 并添加一个介绍消息,例如“Hello, how can I help you today?” 向下滚动并选择 Amazon Lex,然后选择您在第 2 步中创建的 Amazon Lex 机器人。
- 保存块后,添加另一个名为“Disconnect”的块。将 Entry 箭头连接到 Get customer input,并将 Get customer input 箭头连接到 Disconnect。选择 Publish。
- 发布后,在导航面板底部选择 Show additional flow information。复制流程的 Amazon 资源名称(ARN),稍后将需要此信息来部署 WhatsApp 集成。以下截图显示了 Amazon Connect 控制台的流程。
- 根据 通过 Amazon Connect 提供 WhatsApp 消息作为渠道 中的详细信息部署 WhatsApp 集成。
测试解决方案
通过 WhatsApp 与 AI 助手互动,具体操作请参见以下演示:
清理
为避免持续产生费用,在完成使用后请删除资源:
- 删除 CloudFormation 堆栈。
- 删除 Amazon Connect 实例。
总结
本文介绍了如何通过集成 Amazon Bedrock、Amazon Lex 和 Amazon Connect 创建一个智能对话式 AI 助手,并将其部署到 WhatsApp。
该解决方案将相关数据导入 Amazon Bedrock Knowledge Bases 知识库,使用 LangChain agent 实现,通过知识库回答问题,并通过 WhatsApp 为用户提供访问接口。此解决方案可提供一个可访问的智能 AI 助手,引导用户了解您的公司产品和服务。
可能的下一步包括根据具体用例自定义 AI 助手,扩展知识库,并使用 LangSmith 分析对话日志,以识别问题、改进错误并分解 FM 呼叫序列中的性能瓶颈。