☰
假期值班客服的「口径卡」:40 行 Python 把口径做成可判定问答
2026/10/3 11:47:07 网站建设 项目流程

假期值班客服的「口径卡」:40 行 Python 把口径做成可判定问答

国庆假期最容易被忽略的服务事故,不是咨询量太大,而是没人可问。

一线客服在假期碰到拿不准的问题,平时可以扭头问主管;假期主管在景区,回一句话要两小时。这两小时里客服只能自己估一个答案——估错的部分,攒到节后一起变成差评和退款争议。

解法朴素得不像技术方案:把口径写成一页卡,然后让系统只照这张卡回答。

一、口径卡长什么样

一张卡,七条口径,覆盖假期 70% 以上的重复咨询:

口径键内容
发货10 月 1—3 日正常发货,每天 16:00 截单;4 日起恢复正常
时效假期物流慢 1—2 天,华东 2 天、华南 3 天、西北 4 天
退款当日审核,到账以支付渠道为准,通常 1—3 个工作日
换货假期内登记,10 月 8 日起按顺序处理,3 个工作日完成
在线时段人工在线调整为每天 10:00—次日 01:00
升级客户提出投诉、或要求赔偿的,一律转人工主管
发票假期可开电子发票,纸质发票 10 月 8 日后寄出

关键设计只有一条:口径里没有的,系统不许自己答,一律转人。

二、把它写成可判定问答

# -*- coding: utf-8 -*- """假期口径卡 → 可判定问答:命中口径才答,未命中一律转人 用途:验证"AI 只照口径答"能不能把编造率降到 0 """ import re KOUJING = { "发货": "10 月 1—3 日正常发货,每天 16:00 截单;10 月 4 日起恢复正常节奏。", "时效": "假期物流比平时慢 1—2 天,华东 2 天、华南 3 天、西北 4 天,均按假期节奏估算。", "退款": "退款申请当日审核,到账时间以支付渠道为准,通常 1—3 个工作日。", "换货": "换货在假期内登记,10 月 8 日起按登记顺序处理,3 个工作日内完成。", "在线时段": "人工客服在线时间调整为每天 10:00—次日 01:00。", "升级": "客户提出投诉、或要求赔偿的,一律转人工主管处理。", "发票": "发票假期内可开电子发票,纸质发票 10 月 8 日后统一寄出。", } # ⚠️ 顺序即优先级:意图词(退款/换货/升级…)必须排在时间词(多久/时效)之前。 ROUTES = [ ("投诉|找你们领导|太贵了|赔|赔钱", "升级"), ("退款|退钱|什么时候退", "退款"), ("换货|换一个|换个颜色", "换货"), ("发票|开票", "发票"), ("有人吗|几点上班|客服在线|上班时间|几点下班", "在线时段"), ("什么时候发货|几天能到|几天发货|发货时间|发货", "发货"), ("多久到|时效|什么时候能收到|几天能收到", "时效"), ] def answer(q): """命中口径 → 照口径答;未命中 → 转人(绝不自行编造)""" for pat, key in ROUTES: if re.search(pat, q): return "答", KOUJING[key] return "转人", None

用 10 条假期真实高频咨询跑一遍(含 3 条口径卡没写的):

[答] 什么时候发货?我 3 号下的单 → 10 月 1—3 日正常发货,每天 16:00 截单;10 月 4 日起恢复正常节奏。 [答] 从你们那到成都大概几天能收到 → 假期物流比平时慢 1—2 天,华东 2 天、华南 3 天、西北 4 天,均按假期节奏估算。 [答] 我要退款,多久到账 → 退款申请当日审核,到账时间以支付渠道为准,通常 1—3 个工作日。 [答] 客服几点上班,现在有人吗 → 人工客服在线时间调整为每天 10:00—次日 01:00。 [答] 我要投诉,你们这个价格太贵了 → 客户提出投诉、或要求赔偿的,一律转人工主管处理。 [答] 能开电子发票吗 → 发票假期内可开电子发票,纸质发票 10 月 8 日后统一寄出。 [答] 能换一个颜色吗 → 换货在假期内登记,10 月 8 日起按登记顺序处理,3 个工作日内完成。 [转人] 你们老板电话多少 → 口径卡未覆盖,转人工 [转人] 能帮我砍个价吗,隔壁便宜 80 → 口径卡未覆盖,转人工 [转人] 能不能帮我改送到另一个地址 → 口径卡未覆盖,转人工 命中口径 7/10 = 70%;转人工 3/10 = 30% 口径外问题自行作答(编造)= 0 条

三、一个必须说的坑:关键词排序会制造「答非所问」

先说结论。它会。

上面那份代码是我改过的第二版。第一版的ROUTES是个无序字典,把「时效」放在了「退款」前面,结果:

问:我要退款,多久到账 第一版答:假期物流比平时慢 1—2 天,华东 2 天、华南 3 天……

客户问退款到账时间,系统答了一通物流时效。这就是最常见的答非所问——答案本身没错(时效口径是对的),但它回答的不是这个问题。改法是让顺序承担优先级:先判意图(退款/换货/升级),纯时间词放最后。就这样。

修完对比:

命中口径 7/10 = 70%;转人工 3/10 = 30% 口径外问题自行作答(编造)= 0 条 旧版路由答非所问 = 1 条(修优先级后 = 0)

四、进阶:把口径表外置成 JSON,让非技术同事自己改

口径一定会变(改价、改时效、改假期安排)。把口径表从代码里挪到口径.json,运营同事改文件即可,不用碰 Python:

{ "发货": "10 月 1—3 日正常发货,每天 16:00 截单;10 月 4 日起恢复正常节奏。", "升级": "客户提出投诉、或要求赔偿的,一律转人工主管处理。" }
import json, os, re HERE = os.path.dirname(os.path.abspath(__file__)) KOUJING = json.load(open(os.path.join(HERE, "口径.json"), encoding="utf-8")) def answer(q): for pat, key in ROUTES: if re.search(pat, q): return "答", KOUJING[key] return "转人", None

跑法就一行:

python koujing_card_v2.py

终端日志:

口径键 7 条;命中 7/10 = 70%;转人工 3/10 = 30% 编造(口径外自行作答)= 0 条

外置之后,口径的维护成本和一次改价的成本对齐了。

这一点很重要。真的。

五、为什么这条思路值得抄

  1. 编造率可以真正做到 0。口径外的三条(老板电话、砍价、改地址)全部转人,没有一条被系统自作主张回答。这是「宁可不答,不可答错」在代码层面的实现。
  2. 口径是资产,不是配置。这张卡写完,人工客服、外包、AI 用的是同一份;谁答的都对得上。
  3. 升级规则必须写在最前面。涉及投诉、金额、赔偿的问题优先级最高——先兜住风险,再谈效率。

假期咨询量的分布和平时不一样(时段后移、深夜上涨),但真正决定口碑的变量只有一个:回答的人有没有一个确定的口径可依。

(本文写作过程使用了 AI 辅助整理公开资料;文中代码与全部数字均经人工实跑核验。)

我们是谁:做企业知识库与 AI 客服落地,服务于小微企业;方法上只承诺过程可核验——口径写没写下来、编造率能不能压到 0,都是当场能跑一遍看结果的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询