官网友情链接 wechatapi.net

微信群机器人和微信私聊机器人有一个非常大的区别:

在这里插入图片描述

私聊里通常只有两个人。

微信群里可能同时有几十甚至几百个人。

每个人可能讨论不同问题。

因此,群机器人最难的地方往往不是“能不能接收到群消息”,而是:

当前这句话到底在回答谁、讨论什么。

很多微信二次开发项目会采用一个简单方案:

取群最近 10 条消息,全部作为 AI 上下文。

这种方式看起来信息很多。

但真实群聊里,非常容易把不同人的话题混在一起。

WechatApi 可以作为个人微信API 接入层,把微信群消息、群成员和相关数据接入业务系统。但消息之间的引用关系、回复关系和话题关系,需要本地系统进一步整理。

一、为什么最近消息不等于上下文

假设微信群里出现:

A:资料在哪里?

B:昨天那个错误解决了吗?

C:我下载后打不开。

管理员:B 的问题已经修复。

A:好的,谢谢。

如果机器人只是读取最近 5 条消息,很容易把:

“好的,谢谢”

理解成对管理员“问题已经修复”的回应。

但实际上它可能是在回应机器人发给 A 的资料入口。

所以群消息必须尽可能建立引用关系。

二、显式引用是最可靠的线索

如果微信消息本身带有引用或者回复对象信息,这是最强关系。

例如:

客户 C 回复了 B 的某条消息。

系统就应该优先将两条消息关联。

这种信息比“消息时间接近”更加可靠。

WechatApi 将消息接入以后,本地系统可以保存:

reply_to_message_id;
quoted_message_id;

用于构建上下文。

三、没有显式引用怎么办

群聊里很多人不会使用引用功能。

这时可以结合:

同一发言人;
时间距离;
@对象;
关键词;
上一次机器人回复;
员工回复对象

做话题关联。

但这些都属于推断。

系统最好保留置信度。

低置信度时,不要强行让机器人给出复杂回答。

四、一个具体例子

群里有 200 人。

客户 A:

“怎么下载?”

机器人回复:

“可以通过资料入口下载。”

客户 B:

“这个接口现在支持吗?”

客户 A:

“我下载下来打不开。”

如果只看最近三条,AI 可能认为 A 说“打不开”是在回应 B 的“这个接口”。

如果系统保存:

机器人上一条回复对象 = A;

就可以判断 A 的“打不开”更可能延续下载问题。

这就是回复关系的重要性。

五、机器人自己的消息也属于上下文

很多系统只保存客户消息,却不把机器人之前发送的内容纳入结构化上下文。

这样客户说:

“第二个。”

系统完全不知道什么意思。

如果上一条机器人消息是:

“请选择:

  1. 操作文档
  2. API 示例
  3. 常见问题”

那么“第二个”就非常明确。

所以机器人输出本身必须进入会话上下文。

六、员工回复同样重要

微信群里管理员或客服可能已经回答。

如果系统不知道员工刚刚回复过,就会继续插话。

所以 WechatApi 接入群消息以后,本地系统应该识别:

客户消息;
机器人消息;
员工消息。

三种角色共同组成完整上下文。

七、引用关系可以形成消息树

普通聊天记录是时间线。

但群聊实际上更像多棵消息树。

A 提出问题 1。

B 提出问题 2。

C 回复 A。

员工回复 B。

如果能建立 reply_to 关系,就可以形成:

问题 1 分支;
问题 2 分支。

机器人处理时只读取对应分支,而不是整个群最近消息。

在这里插入图片描述

八、AI 微信上下文可以先做摘要

群消息分支较长时,可以先生成摘要。

例如:

“客户 A 正在咨询资料下载问题,已获取链接,但反馈下载文件无法打开。”

后续 A 再发消息时,AI 读取摘要 + 最近几条相关消息。

比读取整个群历史更高效。

九、引用关系也能帮助人工接管

如果某个群里同时存在多个问题。

人工客服接管 A 的问题时,只暂停 A 当前问题分支的机器人回复。

不一定需要让整个群机器人完全停止。

这需要消息和会话粒度足够细。

十、工单候选也依赖消息关系

客户在群里发:

“这个还是不行。”

单看这一句不能生成工单。

如果它引用的是之前的“上传失败”消息,就可以把整个消息分支整理成工单候选。

这样售后信息更完整。

十一、图片文件也需要关联到前后消息

客户常见操作:

发一句“就是这个”
随后发截图。

或者先发截图,再说:

“右下角这个地方。”

如果图片没有和附近消息关联,后续 AI 分析和人工处理都会困难。

业务系统可以在短时间窗口里建立附件上下文关系。

十二、引用数据需要保存原始值和推断值

显式引用:

可以直接作为强关系。

推断关系:

最好记录:

推断依据;
置信度。

以后算法优化时,可以重新计算。

不要把推断关系当成绝对事实。

十三、WechatApi 和群会话层的边界

WechatApi 负责:

微信群;
群消息;
成员;
消息基础字段;
相关事件。

本地系统负责:

引用关系;
话题分支;
消息树;
上下文;
AI摘要;
人工接管。

接入层提供消息事实。

会话层组织消息语义。

十四、群消息频率高时更重要

小群里人工还能看懂。

大群每分钟几十条消息时,如果机器人仍然只用“最近 N 条”,误判概率会越来越高。

所以群越大,越需要:

引用关系;
发言人;
话题分支。

十五、日志复盘

如果机器人回答错了,业务人员应该能看到:

它认为当前消息引用了谁;
使用了哪些历史消息;
为什么判断属于这个话题。

这样才能真正优化上下文逻辑。

十六、权限

群上下文可能包含多个成员消息。

后台展示时,也需要根据群权限控制。

不是所有员工都能随意查询所有群完整对话树。

十七、总结

微信群机器人真正困难的地方,不是消息量大。

而是多个话题会同时交叉发生。

WechatApi 可以让微信群消息通过个人微信API 进入业务系统。

但系统要真正理解群聊,还需要建立:

消息引用;
回复对象;
发言人关系;
话题分支;
附件上下文;
员工回复;
机器人历史。

微信二次开发越进入 AI 微信群机器人场景,越不能简单把“最近 10 条消息”当成真正上下文。

群聊不是一条线,而是很多条对话同时交错。

只有机器人知道一条消息究竟在回应谁、延续哪个问题,才能真正降低答非所问。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐