自动回复邮件

自动回复邮件

Posted by koryako on December 18, 2023

100行代码搞定chatgpt自动回复邮件


一、背景 客服人员每天要处理大量的邮件,工作量巨大。虽然目前客服业务线已经有自动去信 ,其核心原理是基于字典关键词来识别邮件的类型,进而匹配相关模板,套用数据,但是大量的相关字典数据和匹配规则需要去维护。基于这个理由,提供一套以大语言模型为基础的自动回复邮件系统是面临的一大挑战。我们把这个任务拆成三个小任务: A、提取邮件信息和意图类型,以匹配回复模板。 B、创建意图类型(分类)与回复模板以及接口数据的映射关系。 C、依据回复邮件的要求,自动生成回复邮件。

把理解邮件和生成邮件交给语言模型,客服人员对生成的内容进行校验核对修改。后续可以对于准确率高的数据对 进行重新训练,让大语言模型智能的学习到客服人员回复邮件的语言习惯。 图

前后端交互逻辑

前端交互 前端显示 接口逻辑
点击识别信息 显示,编辑识别后的信息 抽取邮件信息和识别用户意图
点击确定回复类型 ,补全信息 显示,编辑邮件回复所需要的关键 按照抽取信息调用api 接口,自动获取相关回复模板所需要的信息
点击生成按钮 显示,编辑最终生成邮件 调用提词器回复模板,填充字段,生成最终回复邮件
点击发送按钮 显示发送结果 邮件服务器发送给客户

二、技术细节 使用chatgpt 的信息抽取能力,结构化成json 数据 ,比如退款, 获取邮件里的订单号,什么产品 ,用户名称等退款流程需要的信息调用退款接口,套用各提示词模板,把关键信息匹配进去,让其生成响应回复邮件内容,最终客服后台内容审核。以下是自动邮件回复流程

1、提词器工程

按照以下提词模板,加入邮件回复内容送入cahtgpt

图2

2、语言模型返回结构化数据 邮件类型:产品装配问题(意图,匹配模板) 用户名称:kelllz 订单号码:383674276980 产品名称:Tricycle 24” 1-Speed 3 Wheel Blue Exercise Shopping Bicycle Large Basket 物流公司名称:无 时间信息:未提供 是否交付:无相关信息 是否受到包裹:无相关信息 什么问题:安装问题(链罩不配合无法折叠) 邮件内容性质:客户反馈

3、调用预先定义的邮件回复模板 图3

4、 补全数据生成提示词 图4

5、语言模型生成邮件内容 图5

6、代码

模板文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
${mailContent}

提取以上文档里的邮件类型(type):[你的回答是咨询产品/未收到货/维修/退款/换货/技术支持类型中的任何一种],
用户名称(userName),订单号码(orderNumber),产品名称(orderNumber),物流公司名称(logisticsCompany),时间信息(time),是否投递(isDelivery),是否收到包裹(isReceive),什么问题(problem)
提取的示例转成json,格式如下:
{
  type: '咨询产品/未收到货/维修/退款/换货/技术支持',
  userName: 'Jay',
  orderNumber: 'no12323',
  productName: '',
  logisticsCompany: 'company name',
  time: '2022.03.22'
  isDelivery: 'yes',
  isReceive: 'no',
  problem: ''
}

核心代码

1
2
3
4
5
6
7
//读取模板文件
const promptintention = fs.readFileSync("./prompt/prompt_intention.txt", "utf8");

//邮件内容匹配模板
const prompt = promptintention.replace("${mailContent}", content)
//请求GPT 服务,返回json 数据
const res=await completePrompt(prompt)

7、数据验证准确率

8、模板数据和回复内容 finetune 训练