【AI落地应用实战】利用亚马逊云科技 Step Functions 集成现有系统快速实现个性化邮件触达
一、引言
在当今数字营销时代,邮件作为一种重要的用户触达方式,其价值不言而喻。尤其对于海外用户而言,邮件更是他们日常生活中不可或缺的沟通工具。然而,随着邮件营销的普及,一个日益突出的问题也随之浮现:如何在大规模邮件发送中避免用户反感,实现真正有效的个性化触达?
传统的邮件营销往往面临着成本低廉带来的“滥用”风险。大量同质化的邮件内容不仅无法吸引用户,反而可能引发投诉,导致用户流失,营销效果适得其反。因此,优化邮件内容,确保每一封邮件都能够精准地触达用户心智,传递个性化的关怀与价值,成为了提升用户忠诚度、优化营销效果的关键。
本文旨在探讨如何巧妙地利用亚马逊云科技 Step Functions 并结合生成式AI的强大力量,快速构建一套自动化、智能化的个性化邮件发送体系。
二、解决方案架构
2.1 架构总览与核心组件
本方案的整体架构设计如下:
其核心组件包括:
-
数据层:作为整个系统的基石,负责存储和管理用户、产品以及历史交互数据。
-
推荐系统:实现个性化邮件内容的关键环节。推荐系统根据用户的历史行为和偏好,智能地推荐其可能感兴趣的产品或内容,通过简单的历史数据导入,便自动训练出高质量的推荐模型并提供便捷的API接口。
-
邮件发送服务:负责实际的邮件发送。Amazon Simple Email Service (SES)提供了强大的邮件发送能力,并支持多种身份验证机制,确保邮件能够安全、高效地送达目标用户。
-
生成式AI****引擎:实现邮件内容高度个性化与动态生成的智能核心。通过集成大型语言模型,根据用户的具体信息、推荐的产品以及特定的营销目标,实时生成富有创意且贴合用户兴趣的邮件文案。
-
业务流程编排:作为整个解决方案的“大脑”,亚马逊云科技 Step Functions 承担着至关重要的角色。它以可视化的工作流形式,将上述所有组件进行逻辑串联与协调。
2.2 数据准备
个性化邮件的实现,离不开高质量的用户与产品数据,为了方便测试,本文使用全托管的数据库 Amazon DynamoDB,这里也可以选择集成 RDS 或其它数据库。
首先我们要创建user
表和product
表,分别用于存储用户基本信息和产品详细信息。
user
表包含了用户的唯一标识符、邮箱地址等关键信息
而product
表则记录了商品的ID、名称、价格、图片URI等。
2.3 推荐系统集成
推荐系统是实现邮件个性化的核心驱动力。它能够根据用户的历史行为、偏好以及与产品的交互数据,智能地预测用户可能感兴趣的商品或服务。
在本文的实践中,我们选择了Amazon Personalize作为推荐引擎。
- 首先下载示例数据:http://files.grouplens.org/datasets/movielens/ml-latest-small.zip,导入 Personalize 的 Dataset
- 选择域数据集入门或自定义数据集中的任意一种
- 创建 recommender(域)或 Solution 与 campaign(自定义)
- 等待模型自动训练好,并测试
完成好后的效果,如图所示:
2.4 邮件发送服务配置
邮件发送服务的选择直接关系到邮件的送达率和营销效果。本文选用Amazon Simple Email Service (SES)作为邮件发送平台。SES不仅提供了高可靠、高可扩展的邮件发送能力,还具备丰富的合规性功能,尤其适用于营销邮件场景。
在 SES 控制台主页上选择 “开始使用”,将会有向导引导完成 SES 帐户设置步骤,直接按步骤点击即可
2.5 Step Functions 编排
Amazon Step Functions 是本解决方案的核心编排工具,它将各个独立的服务组件有机地整合为一个统一的、自动化的工作流。通过Step Functions,我们可以将复杂的用户召回邮件发送逻辑,以可视化的状态机形式进行定义。Step Functions的强大之处在于其能够处理复杂的异步操作和错误处理机制,确保整个流程的健壮性与可靠性。通过这种方式,我们不仅实现了邮件发送的自动化,更重要的是,将智能推荐与内容生成能力融入到每一个邮件触达环节,从而构建了一个真正意义上的智能个性化邮件营销体系。
这里,首先进入Amazon Step Functions 控制台,进入 State machines 菜单,点击 Create State machines 按钮,
在Amazon Step Functions 控制台中,我们可以通过两种方式创建状态机:一种是直观的可视化流程图编辑,通过拖拽节点来构建业务逻辑;另一种则是直接编辑其底层的JSON定义语言(Amazon States Language)。对于本文所描述的复杂流程,直接编辑JSON代码能够更精确、高效地定义状态机的行为。可以通过将下面的代码(JSON),复制到图示的 Code 编辑器,快速生成本文的示例流程。
{"Comment": "Distributed map that reads CSV file for order data and detects delayed orders","StartAt": "参数输入","States": {"参数输入": {"Type": "Pass","Next": "并行处理用户和产品"},"并行处理用户和产品": {"Type": "Parallel","Branches": [{"StartAt": "GetRecommendations","States": {"GetRecommendations": {"Type": "Task","Parameters": {"CampaignArn": "<这里填入推荐系统的CampaignArn>","UserId.$": "$.UserId","NumResults.$": "$.NumResults"},"Resource": "arn:aws:states:::aws-sdk:personalizeruntime:getRecommendations","Next": "Map推荐结果"},"Map推荐结果": {"Type": "Map","ItemProcessor": {"ProcessorConfig": {"Mode": "INLINE"},"StartAt": "提取商品ID","States": {"提取商品ID": {"Type": "Pass","End": true,"Parameters": {"id": {"S.$": "$.ItemId"}}}}},"Next": "获取推荐产品详细信息","ItemsPath": "$.ItemList"},"获取推荐产品详细信息": {"Type": "Task","Parameters": {"RequestItems": {"product": {"Keys.$": "$"}}},"Resource": "arn:aws:states:::aws-sdk:dynamodb:batchGetItem","End": true}}},{"StartAt": "获取用户基本信息","States": {"获取用户基本信息": {"Type": "Task","Resource": "arn:aws:states:::dynamodb:getItem","Parameters": {"TableName": "user","Key": {"id.$": "$.UserId"}},"End": true}}}],"Next": "Bedrock生成邮件文案"},"Bedrock生成邮件文案": {"Type": "Task","Resource": "arn:aws:states:::bedrock:invokeModel","Parameters": {"ModelId": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0","Body": {"anthropic_version": "bedrock-2023-05-31","max_tokens": 1024,"system": "你的名字是‘AI小乖’,你的任务是编写HTML格式的产品推广文案,收件人信息以JSON格式描述在<receiver>标签中,待推广的产品以JSON格式描述在<products>标签中。\n我们发送邮件的原因是他已经三个月没有访问我们的网站了,我们想表达对他的关心和期待他回归。\n邮件内容必须是HTML格式,分三个部份:\n1。问候和说是来信原因\n2。根据商品信息,分析他的兴趣,说明商品被推荐的原因,文案风格是幽默的且简洁的\n3展示商品:商品水平展示在一行,每个商品展示格里包含:商品图片,名称,价格三个信息,其中,商品图片大小200X200, src为产品信息的img_uri字段, 窗格里的所有内容加超链接,链接的href都设为https://xxx.com/prd/<id>\n4。祝福并期待用户来xxx.com看更多新商品\n\n 必须直接输出HTML格式的邮件内容","messages": [{"role": "user","content": [{"type": "text","text.$": "States.Format('<receiver>\n{}\n</receiver><products>\n{}\n</products>', $[1].Item, $[0].Responses)"}]}]}},"Next": "SES发送Email","ResultPath": "$[0].Item"},"SES发送Email": {"Type": "Task","Parameters": {"Destination": {"ToAddresses.$": "States.Array($[1].Item.email.S)"},"Message": {"Body": {"Html": {"Charset": "UTF-8","Data.$": "$[0].Item.Body.content[0].text"}},"Subject": {"Charset": "UTF-8","Data": "xxx.com期待您的回顾"}},"Source": "<您测试的发件人地址,应和SES的发件身份保持一致>"},"Resource": "arn:aws:states:::aws-sdk:ses:sendEmail","End": true}}
}
上述JSON定义了一个清晰的业务流程,旨在实现对长期未访问网站用户的智能召回。整个流程可以概括为以下几个关键阶段:
- 处理用户和产品:状态机从
参数输入
状态开始,这是一个简单的Pass
状态,用于接收外部触发时传入的用户ID等初始参数。随后,流程进入并行处理用户和产品
状态。这是一个核心的Parallel
状态,它允许状态机同时执行获取推荐产品和获取用户基本信息两个独立的子分支。其中获取推荐产品分支负责从推荐系统获取个性化产品推荐,获取用户基本信息分支则专注于从用户数据库中获取用户的详细信息,特别是用户的邮箱地址 - Bedrock生成邮件:当并行处理完成后,状态机进入
Bedrock生成邮件文案
状态。这是整个流程中最具智能化的环节,它利用了生成式AI的强大能力。该任务状态会调用Amazon Bedrock服务,并指定使用Anthropic Claude 3 Sonnet模型。它将并行处理阶段获取到的用户详细信息和推荐产品列表作为输入,通过精心设计的system
和user
提示词(Prompt),引导LLM生成HTML格式的个性化邮件文案。提示词中明确了邮件的结构、内容要求(如问候语、产品推荐理由、商品展示格式等),甚至包括了幽默的文案风格要求。LLM根据这些指令,结合用户的具体情况和推荐产品,动态创作出独一无二的邮件内容,极大地提升了邮件的吸引力。 - 发送邮件:最后,状态机进入
SES发送Email
状态。这个任务状态负责调用Amazon Simple Email Service (SES)的API,将上一步由LLM生成的HTML邮件内容发送给目标用户。它会从状态机的输入中提取用户的邮箱地址作为收件人,并设置邮件主题。至此,一封高度个性化、由智能体驱动的召回邮件便成功地送达了用户。
最终创建好的 StateMachine 如图示:
构建完状态机后,还需要确保其拥有足够的权限来调用各个亚马逊云科技服务,点击“Create”,此时,系统会将节点中的权限为执行角色添加,点击“Confirm”即可。如果运行时出现权限不足的异常,则需要手动通过亚马逊云科技 IAM 服务,为状态机的执行角色附加相应的策略。
完成权限配置后,我们便可以点击“Start execution”按钮,输入测试用户ID,启动状态机进行端到端的运行测试。通过观察状态机的执行图,我们可以清晰地看到每个步骤的执行状态、输入与输出,从而验证整个流程的正确性与数据流转的准确性。最终,我们将在目标用户的邮箱中收到由LLM智能生成的高度个性化召回邮件,其内容和格式将完美地符合我们的预期,充分展示了这一解决方案的强大能力。
实验结束后要记得清理资源,如果决定不再使用服务的话,记得要在控制台关闭服务,以防超过免费额度产生扣费
三、总结与展望
通过上述对基于亚马逊云科技 Step Functions 实现个性化邮件触达方案的深入探讨与实践,我们清晰地看到,将企业现有系统能力与生成式AI技术进行深度融合,能够为业务带来前所未有的新价值。这一方案不仅解决了传统邮件营销中个性化难以规模化的问题,更开辟了智能营销的新路径。
本方案的核心价值体现在以下几个方面:
-
业务价值的快速释放:企业长期积累的用户数据、产品数据和推荐系统等宝贵资源,通过Step Functions的灵活编排,得以被高效串联,并迅速转化为实际的业务价值。
-
复杂流程的简化与自动化:亚马逊云科技 Step Functions 以其强大的工作流编排能力,将原本复杂、多步骤的个性化邮件发送流程进行了高度抽象与自动化。无论是数据获取、内容生成还是邮件发送,都能够以可视化的方式进行定义和管理,极大地降低了开发与运维的复杂度。
-
生成式AI赋能的深度个性化:集成大型语言模型,特别是Amazon Bedrock上的Claude 3系列模型,为邮件内容带来了革命性的变化。LLM的文字理解和生成能力,使得每一封邮件都能根据用户的具体情况和推荐产品,生成“千人千面”的个性化文案,显著提升了邮件的打开率和转化率。
亚马逊云科技现提供每月免费4000次的Step Functions套餐,登录亚马逊云科技官网,即可获得 亚马逊云科技产品和服务的免费实践体验,注册即可获得 100 美元的服务抵扣金。
利用Amazon Step Functions 整合现有系统并结合生成式AI,为企业构建个性化邮件触达能力提供了一条高效、可扩展的路径。这不仅是技术层面的创新,更是营销理念的一次深刻变革。在智能技术的持续驱动下,未来的营销将更加精准、高效、富有温度,真正实现与用户的深度连接。
以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~