工单分流客服自动化分类生产实践运维
如何用 Jev 做客服工单分流(替代脆弱的关键词规则)
·约 3 分钟
如何用 Jev 做客服工单分流(替代脆弱的关键词规则)
大多数工单路由系统败法都一样:「扣了两次」进账务,「用不了」进技术,两个词都有的工单掷硬币。错队的成本,由处理时长和客户耐心买单。
Jev 工单分流读完整工单,返回各队列概率。混合型工单会呈现混合分布——可见、可调,不确定时还能安全交给人。
一句话总结:一个选择题,选项用真实队列名(
billing、tech_support、sales)。confidence < 0.7进人工分拣。记录完整分布,尽早发现漂移。
关键词路由为何会塌
| 失败模式 | 现象 | 代价 |
|---|---|---|
| 关键词重叠 | 工单命中 2+ 队列 | 错队 SLA |
| 新产品词汇 | 未登录词被忽略 | 持续误路由 |
| 多问题工单 | 单关键词压倒一切 | 只解决一半 |
| 口语 / 黑话 | 规则漏匹配 | 静默失败 |
概率式工单分类天生处理重叠:分布就是不确定性。
能映射到代码的队列设计
标签就用下游队列键:
["billing", "tech_support", "sales"]
避免还要映射表的 UI 名(「Billing & Payments」→ billing)。非要做,就放唯一一处映射,不要每个 worker 都写一遍。
几个队列合适?
- 3–5 是选择题甜区。
- 超过约 7 个概率会摊薄。
- 宁可单独加 human_only,也不要把「其他」硬塞进现有队列。
状态文本放什么
标题:订单 #4821 被扣了两次款
同一笔订单 #4821 扣了我两次钱,麻烦尽快处理。
我已经打过一次客服电话,没人解决。
建议包含: 标题、正文、产品名、套餐、错误码、订单号。
不要: 完整支付工具信息、无关 PII、不希望模型看到的内部备注。
路由请求
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"messages": [{
"role": "user",
"content": {
"state": "<工单文本>",
"questions": [{
"type": "choice",
"text": "这条工单该由哪个团队处理?",
"options": ["billing", "tech_support", "sales"]
}]
}
}]
}'
响应示例:
{
"selected": "billing",
"confidence": 0.94,
"distribution": {
"billing": 0.94,
"tech_support": 0.04,
"sales": 0.02
}
}
置信度阈值与人工兜底
| 置信度 | 动作 |
|---|---|
| ≥ 0.9 | 自动分派 |
| 0.7 – 0.9 | 自动分派 + 对 SLA 敏感的知会负责人 |
| < 0.7 | 人工分拣队列 |
在类客服语料的基准上,0.7 底线只少自动分流 8%–12%,却几乎消除错队事故。低置信度回落是能力,不是模型缺口。
if (answer.confidence < 0.7) return enqueue('human_triage');
return enqueue(answer.selected);
工单分流的生产监控
- 记录选中项、置信度、完整分布、延迟、工单 ID。
- 熵告警——平均熵上升,往往比准确率下降早数周。
- 队列占比看板——产品上线后
human_triage短暂升高正常;缓慢泄漏不正常。 - 回归集——历史上难倒人工的 50 条工单,发布前重跑。
多标签 / 多问题工单
一张工单既有账务又有技术:优先两个问题(主队列、次队列),或单独一个是非题「是否多问题」。不要让一个选择题去平均两个判断。
与大模型路由的成本延迟
| 方案 | 延迟 | 输出 | 成本形态 |
|---|---|---|---|
| 聊天大模型路由 | 1–5 秒 | 要解析的散文 / JSON | 提示 + 补全 token |
| Jev 路由 | 70–500ms | 类型化 + 分布 | 仅输入(约 $0.042 / 百万 token) |
每天 10 万工单时,这不是零头——工具界面上的延迟客服也感受得到。
FAQ
附件和截图怎么办?
Jev 吃文本状态。上游先抽取(OCR、表单字段)再写入 state。
邮件和在线聊天也能用吗?
可以,同一套模式。见消息意图识别。
队列很多(20+)怎么办?
先聚成 4–6 个宏队列,再第二次 Jev 调用(或规则)分到子队列。