NEW

免费试用已开放

立即开始

AI · 大模型 · 智能客服

企业微信 AI 客服的转人工怎么设计

更新于 2026-08-167 分钟

转人工做砸通常是三种样子:用户连说三次「转人工」还在被机器人挽留;AI 已经把错的答案发出去了才想起来该转;坐席接手第一句是「请问您遇到什么问题」,等于让客户重讲一遍。这三件事分别对应触发、时序和交接,没有一件是模型能力问题。下面按 wecomapi 的接入方式,把这三段分开讲。

三类触发源,优先级不能拧

转人工的触发只有三个来源:用户主动要求、规则硬命中、模型低置信。判定顺序必须就是这个顺序,而很多系统把它反过来 —— 先算置信度,模型觉得自己答得挺好,于是一条带着「投诉」「律师」「监管」的消息被 AI 自信地接住了。

  • 用户主动要求:无条件放行,不挽留,不问「要不要再试一次」。识别要宽,「转人工」「找个人」「别让机器人答」都算,宁可误转。
  • 规则硬命中:投诉、退款、金额、法务、合同、监管这类词,命中即停,不看置信度。
  • 模型低置信:兜底层,只处理前两类没覆盖到的普通问题。

这三类的转出率要分开统计。混成一个总数,你永远分不清是阈值定低了还是词表太宽。

置信度别只用模型自报的那个数

让模型输出一个 0 到 1 的自信分,是最省事也最不可靠的做法 —— 它在编造答案时同样自信。真正可用的信号在模型之外。

  • 检索侧:命中条目数、最高相似度、命中内容是否属于当前问题所在的业务域。检索空手而归,基本等于该转。
  • 对话侧:同一个问题换着说法问了第二遍、追问超过三轮、出现明显情绪词,这些比模型自评硬得多。
  • 答案侧:回答里「可能」「一般来说」「建议咨询」这类含糊措辞的密度,以及答案给不给得出出处。

把这几个信号加权成一个分数,比单一阈值稳。上线方式也别一步到位:先跑一两周影子模式,只记录「按这个规则本该转人工」而不真的转,攒够样本再定线。定线时宁可先定高,转人工率高一点上线再往下收;反过来先松后紧,付出代价的是真实客户。

敏感词是保险丝,不是过滤器

兜底词表的作用是断电,不是让模型「小心一点回答」。命中之后正确的动作是不生成、不发送、直接进转人工,并发出一条写死的固定话术。让模型带着敏感约束去谨慎作答,等于把风险最高的场景交给最不可控的组件。

时序上有一条硬要求:判定必须发生在消息发出之前。IM 里发出去就是发出去了,撤回是另一个动作,客户可能已经截图。所以敏感判定要卡在生成之后、调 wecomapi 发送之前那一段,而不是发完由质检异步捞。同理,兜底话术本身不能让模型生成 —— 这是全流程里唯一一条你必须保证一字不差的回复。

  • 硬停:命中即不发 AI 回复,直接转人工并把会话标红。适用于法务、监管、金额与投诉。
  • 软标:正常回答,但打标进质检队列。适用于竞品、比价这类需要事后看、不必当场打断的情况。

词表要有人管,上线时定的那份三个月后一定过期。把「新增/下线一个词」做成不需要发版的配置,否则真出事那天你在等发布窗口。

交接:把依据交过去,不只是把会话丢过去

坐席接手时最贵的成本是重新理解现场。一句「请问您遇到什么问题」,前面十轮就白聊了,客户的耐心也在这句里耗掉。交接包要在坐席打开会话的那一瞬间就已经在那儿。

  • 原始对话全文,外加一段摘要。只给摘要不行,摘要会丢掉客户的具体措辞,而措辞往往就是问题本身。
  • 转出原因与触发源:用户主动要的、命中了哪条规则、还是置信分多少。坐席的开场白应该因此不同。
  • AI 已经做出的承诺。这条最关键:AI 说过「三个工作日内退」,坐席得先知道,再决定认还是纠正,不知道就等于当着客户面自相矛盾。
  • AI 检索到的知识条目,让坐席能直接判断是没查到还是查到了用错了。
  • 客户身份与历史工单,如果系统里已经有。

中间态也要管。从触发转人工到坐席真正开口之间有一段空窗,这段时间必须用 wecomapi 主动发一条明确的「已为您转接,前面还有几位」,否则用户体感就是被晾着。空窗超过设定时长要能升级或退回 AI 做安抚。

示意:会话状态机把发言权收归一处javascript
// 示意逻辑,函数与字段均为自拟;精确字段与端点以 wecomapi 文档为准
onMessage(async (msg) => {
  const s = await session.get(msg.sessionId); // ai | queued | human | cooling

  if (s.state !== "ai") {
    await agentDesk.push(msg);        // 排队中与人工态:只转发,AI 绝不出声
    return;
  }

  const d = await gate(msg, s);       // 判定顺序:主动要求 > 规则命中 > 置信度
  if (d.handoff) {
    await session.set(msg.sessionId, "queued");
    await send(msg, HANDOFF_TEXT);    // 固定话术,不过模型
    await agentDesk.open(msg.sessionId, buildContextPack(s, d));
    return;
  }

  await send(msg, await answer(msg, s));
});

这个状态机的价值来自一条纪律:wecomapi 的消息回调进来先查状态,再决定要不要走模型。少了它,最常见的事故是坐席正在跟客户沟通,AI 在旁边插一句,两个声音互相打架。人工结束也别立刻放 AI 回来,留一个冷却态,避免客户补一句「谢谢」就把机器人重新唤醒。

回流:满意度评分是最弱的那个信号

大多数团队只接了一个「本次服务是否满意」,然后发现没什么用。原因是评分有严重的幸存者偏差 —— 被 AI 答废的客户通常直接走了,不会留下一颗星。

  • 转人工率,按三类触发源分开看。规则触发涨得快说明业务出了新情况,置信度触发涨得快说明知识库该补了。
  • 转人工前的最后三轮对话,每天抽检一批。这是发现「本该转而没转」的唯一有效办法,指标看不出来。
  • 坐席接管后的首条响应时长。交接包做得好不好,直接反映在这个数上。
  • 坐席一键标记「AI 这里答错了」的条数与内容。这是成本最低、信息密度最高的反馈通道,前提是标记真的只需要点一下。

回流必须有出口。坐席标出来的错误如果不能在几天内变成一条新的知识库条目或一次阈值调整,这条链路两周内就会自然死亡 —— 没人愿意持续给一个黑洞喂数据。另外,本文示意代码里的函数与字段均为自拟,消息、事件与会话状态相关接口的精确字段与限制以 wecomapi 线上接口文档为准。

常见问题

置信度阈值一开始定多少合适?
别猜一个数上线。先跑一到两周影子模式:按规则记录「本该转人工」但不真的转,再让坐席回看这批样本里有多少是 AI 其实答得了的。没有这组数据之前,宁可定得偏松、多转一些,上线后按坐席反馈往下收。
转人工之后 AI 还要不要继续参与?
把「AI 参与」和「AI 发言」分成两件事。后台可以继续做摘要、提取工单要素、给坐席准备资料,但绝不能对客户说话。用会话状态控制发送权限即可,人工态和排队态一律不放行模型产出的消息。
没有独立的客服工作台,只有企业微信,转人工能做吗?
能。最小形态是把会话连同上下文包推给指定坐席或一个内部群,同时把会话状态切成人工态让 AI 停止发言。是否需要独立工作台取决于并发量和质检要求,不是转人工成立的前提;具体的消息与事件能力以 wecomapi 文档为准。

准备好动手了?

精确字段、鉴权与端点以线上文档为准;可在控制台创建密钥后联调。

相关文章