一、为什么要做这件事

我们内部有一套自建的工单系统。客户的问题、内部的需求,都通过工单流转。系统用了一年多,功能够用,但有一个问题越来越明显——分派太依赖人

工单创建后,负责分派的人(本文就叫管理员)要做三件事:看一眼内容是什么问题,想想谁负责这块,然后分派。听起来简单,但我们有十几个业务领域(CRM、订单、商品、申报……),每个领域有技术负责人和产品经理,有的问题是 Bug 要找技术,有的是需求要找 PM。管理员得对团队分工烂熟于心。

现实是:

  • 管理员请假,没人分得准
  • 新来的管理员要花很久才能搞清楚谁管什么
  • 高峰期工单堆积,分派成了瓶颈
  • 分错了还要重新转派,来回耽误时间

我们想了想,这件事完全可以交给 AI 来做——整个过程可以抽象为:“看内容→查分工表→选人。

二、我们怎么做的

2.1 模型选择

我们选了阿里云百炼(DashScope)上的 Qwen 3.7 模型,走 OpenAI 兼容接口。选它的原因也简单:国内访问稳定,按量付费便宜,兼容 OpenAI 协议意味着以后想换模型改个地址就行。

2.2 架构:AI 是插件,不是核心

我们做了一个关键决定:不为 AI 改动现有系统架构

工单系统原本就有一套自动化规则引擎——“当工单创建时,执行某个动作”。我们把 AI 分派做成了自动化引擎的一种动作类型,和"发送通知"“自动分配"平级:

  graph TD
    A[工单创建] --> B[触发自动化规则]
    B --> C[动作类型: AI 分析]
    C --> D[AI 返回建议]
    D --> E{置信度够高?}
    E -- 是 --> F[自动分派]
    E -- 否 --> G[生成待审核建议,推送给管理员]

后端实现上,AI 分析是一个异步队列任务。工单创建后立刻返回成功,AI 在后台默默干活,不阻塞用户操作。

这个设计的好处是:关掉这条自动化规则,系统立刻回到手动分派模式,零影响。

同时,所有 AI 相关的配置——模型提供商、模型参数、Prompt 模板、处理人状态——都做成了可视化后台管理页面。组织架构调整、新人入职时,管理员改一下配置就行,不需要开发介入。

2.3 Prompt 才是灵魂

很多人以为接入大模型就是写几行代码调 API 的事。代码确实不多,但写 Prompt 花的时间比写代码多得多。我们迭代了三版。

V1:最朴素的版本 —— 把工单内容和用户列表丢给 AI,让它推荐。结果准确率很低,AI 不了解我们的团队分工,基本靠关键词猜。“订单报错"有时分给做 CRM 的人,因为 CRM 模块里也有"订单"两个字。

V2:加入工单类别 —— 用户提交工单时会选类别(比如"订单管理”),我们把这个信息也传给 AI。准确率有提升,AI 至少不会跨领域乱分了。但同一个领域里,技术问题和需求请求还是分不清。

V3:加入分派策略和职责表 —— 把公司内部的领域职责分工表直接写进 System Prompt,并且教 AI 先判断工单类型:

第一步:判断工单类型
- 包含"希望增加""能否支持""需求"等意图 → 分派给该领域的 PM
- 包含"报错""无法使用""异常"等 → 分派给该领域的技术负责人

第二步:根据领域职责表匹配人员

| 业务领域     | 技术负责人 | PM  |
|------------|----------|-----|
| 客户CRM     | 黄某     | 高某 |
| 订单与交易中心 | 黄某    | 高某 |
| 数据看板     | 宋某     | 张某 |

同时要求 AI 在返回的 reasoning 字段里说明:判定的工单类型、匹配的业务领域、选人理由。这样分派不准时,我们能快速定位是哪一步判断出了问题。

💡 额外提示:为什么用 Markdown 表格? 注意看上面的领域职责表,我们特意使用了 Markdown 表格 的格式。大模型在预训练时“吃”下了海量的 Markdown 数据,对它的结构解析能力极强,准确率远高于普通文本或逗号分隔的数据。如果你对这个技巧感兴趣,可以看看我的另一篇文章:《Markdown:AI 时代的万能转换器》

经验总结:把你公司的组织架构、分工规则、判断逻辑写进 Prompt,而不是期望 AI 自己学会。Prompt 不是“提问”,是给 AI 的工作手册。

2.4 人在回路:置信度机制

我们让 AI 在返回分派建议的同时,给出一个 0 到 1 之间的置信度分数:

  • ≥ 0.8:自动分派,不打扰任何人
  • < 0.8:生成待审核建议,管理员在工单详情页一键采纳或拒绝

0.8 这个阈值可以在自动化规则里配置。刚上线时我们设成 0.95——几乎所有建议都要人工审核。跑了一周,观察 AI 的判断质量,确认靠谱后逐步调低到 0.8。

这个渐进式的信任建立过程很重要。如果一上来就全自动,出了错团队会对 AI 失去信心,以后想推就难了。

为了让所有操作可追溯,我们给工单增加了活动时间线,每条记录标注来源:

[09:01] 张三 创建工单
[09:01] AI 分派给 黄某(AI 自动,置信度 0.92)
[14:30] 李四 取消分派 黄某,分派给 宋某(手动)
[次日]  宋某 关闭工单

管理员可以随时审计 AI 的分派历史,也方便后续统计采纳率和准确率。

三、容易忽略的"最后一公里”

AI 分派的核心链路一天就能跑通。但以下这些问题,花了我们一半以上的时间。

3.1 人不是机器,会请假

AI 推荐了黄某处理,但黄某请假了。工单分过去没人看,直到有人发现才重新转派。

解决方案:给每个用户加了"暂停接单"开关,用户自己可以切换,管理员也能帮别人设置。构建 Prompt 时自动过滤掉不可用的用户——AI 看到的候选人列表里压根没有请假的人。如果过滤后一个人都不剩,fallback 到全部用户,避免 AI 无人可派。

另外,从 Prompt 渲染到实际分派之间可能隔了几十秒(队列排队 + API 调用),这段时间里用户可能刚好切换了状态。所以自动分派之前还做了一次实时校验,全部不可用时自动降级为待审核建议。

3.2 权限边界

最初构建 Prompt 时把系统里所有用户都列给了 AI。但实际上不是每个人都有权限处理每个类别的工单。

修正后,用户列表只传"该工单类别下有编辑权限的处理人"。这不仅是权限正确性的问题——候选人越少,AI 的判断越准

3.3 超时和重试

大模型生成 JSON 响应有时需要 40-50 秒,我们最初设的超时是 30 秒。上线第一天,队列日志里全是超时报错。

改成 120 秒响应超时 + 10 秒连接超时(区分"连不上"和"想得慢"),配合 3 次退避重试(间隔 10s、60s、300s)。失败了也不影响工单正常流转——最差的情况就是没有 AI 建议,回到手动分派。

四、成本与效果

投入

  • 开发时间:1 人 × 1 天(全程使用 AI 辅助开发)
  • 代码量:后端约 15 个文件,前端约 8 个文件
  • 基础设施成本:零增加

运行成本

API 调用费用几乎可以忽略。每个工单一次 API 调用,按百炼的定价,一个月几十元。无额外运维,复用现有的队列 worker。

效果

  • 分派响应时间:从"等管理员有空"变成秒级自动或分钟级审核
  • 非工作时间提交的工单不再积压到第二天早上
  • 管理员的分派工作量明显下降,原来我们有 2 个人轮值,现在几乎不需要他们介入,让他们去做更值得做的事情了

五、给同行的建议

  1. 先跑建议模式,再开自动模式。 阈值设高,让所有建议都经过人工审核。等你对 AI 的判断质量有信心了,再逐步放开。

  2. Prompt 的打磨至关重要。 我们前后迭代了三版 Prompt,每一次优化带来的效果提升都极其显著。

  3. AI 做成插件,不做成依赖。 保证关掉 AI 功能系统照常运行。这不只是技术安全,也是组织安全。

  4. 别低估"最后一公里"。 核心功能一天跑通,但请假、权限、超时、审计这些边界问题,花较多时间。跟所有工程实践一样,魔鬼在细节里。