在本系列的上篇中,我们展示了如何使用Amazon Bedrock和亚马逊云科技自研Amazon Nova多模态大语言模型构建WhatsApp AI助手,并支持移植到微信,从而处理图像、视频、文档和音频等多媒体内容,并通过亚马逊云科技End User Messaging实现与聊天软件直接集成的方案介绍。在下篇中,我们将通过代码库中的代码进行方案实操,手把手真实构建一个聊天软件的AI自动回复、媒体内容自动分析应用。
方案整体云平台架构图
方案数据流介绍
- 用户发送WhatsApp(或微信)消息。
- 消息发布到SNS短信服务的主题中(SNS Topic)。
- 无服务器计算服务Lambda中的
whatsapp_in函数模块
被触发。 - 该函数模块会根据消息类型进行处理:
- 文本消息:直接发送到Amazon Bedrock AI代理处理。
- 音频消息:使用Amazon Transcribe进行转录,转录完成后触发
transcriber_done
Lambda函数模块,并将转录文本发送至Amazon Bedrock AI代理。 - 图像/视频/文档:存储到Amazon S3,并由Amazon Bedrock Converse API进行分析,输入和响应的对话历史记录存储在Amazon DynamoDB (NoSQL)的
AgentHistory
表中。
5. bedrock_agent Lambda函数模块处理消息并生成响应。
6. 响应通过WhatsApp聊天应用UI返回给用户。
本方案的搭建会产生一定的云端费用,定价详情请参阅亚马逊云科技官网价格模型页面。
代码库中的关键文件
app.py
:出发CDK基础设施部署脚本部署的入口文件。private_assistant_v2_stack.py
:AI助手基础设施部署的主要堆栈定义。lambdas/code/
:包含处理WhatsApp消息、调用Bedrock代理和处理转录的Lambda函数模块。layers/
:包含AWS Lambda函数的共享代码和代码依赖项。agent_bedrock/create_agent.py
:定义Amazon Bedrock AI代理的配置。
🧰 方案实操步骤
云端基础设施部署
⏱️ 预计完成时间:10-15分钟
克隆仓库:
git clone https://github.com/build-on-aws/building-gen-ai-whatsapp-assistant-with-amazon-bedrock-and-python cd private_assistant_v2
创建并激活虚拟Python环境:
python3 -m venv .venv source .venv/bin/activate # Windows 使用 `.venv\Scripts\activate`
安装依赖项:
pip install -r requirements.txt
将Python代码生成CloudFormation脚本模板:
cdk synth
开始部署🚀:
cdk deploy
注意:部署完成后,请记录该部署在命令行的输出值,尤其是SNS主题ARN(Topic ARN ID),它将用于后续的WhatsApp集成配置。
基础设施修改和配置
激活WhatsApp账号
-
使用新的WhatsApp Business平台
-
获取API访问令牌(WhatsApp API)
-
了解Messenger API for Instagram的定义和文档
应用设置(APP Set Up)
- 设置WhatsApp Business账户,并按照亚马逊云科技End User Messaging Social指南配置,将消息发送到本项目创建的消息服务SNS的主题。
- 可以参考使用亚马逊云科技End User Messaging Social自动化WhatsApp工作流的博客获取更详细的步骤。
自定义Bedrock代理行为(可选)
- 更新
private_assistant_v2/agent_data.json
文件,以自定义Bedrock代理的行为。
调整环境变量(可选)
- 如果需要,可在
private_assistant_v2_stack.py
文件中调整环境变量,例如S3存储桶前缀或DynamoDB表名。
测试
我们可以通过以下方式测试AI助手:
- 发送WhatsApp消息到我们之前已配置的账户。
whatsapp_in
Lambda函数将处理我们发送消息:
- 文本消息:直接调用Amazon Bedrock代理。
- 音频消息:先使用Amazon Transcribe转录,再通过
bedrock_agent
Lambda函数将文本发送给Amazon Bedrock代理。 - 图像/视频/文档:存储到Amazon S3,并通过
bedrock_agent
Lambda函数调用Amazon Bedrock Converse API进行分析。
3. AI助手的响应将通过WhatsApp返回给用户。具体的效果如下
清理删除实验环境
如果测试完成并希望清理应用程序避免造成资源浪费和意外云资源花销,请执行以下步骤:
- 删除部署过程中创建的Amazon S3存储桶中的所有文件。
- 运行以下命令销毁之前创建CDK堆栈
cdk destroy
总结
本文介绍了如何使用Amazon Bedrock和Amazon Nova模型构建WhatsApp AI助手,以处理多媒体内容(文本、音频、图像、视频、文档),并集成亚马逊云科技End User Messaging进行直接通信方案的实操实验步骤。我们详细讲解了数据流、关键技术组件、部署步骤、测试方法以及清理指南,希望能帮助大家快速搭建自己的WhatsApp AI助手,实现更智能的用户交互体验。