AI AgentTechnical Deep Dive

Agent 客服:先把 FAQ、工单和人工接管串起来,再谈全自动

发布时间2026/01/27
分类AI Agent
预计阅读10 分钟
作者吴长龙
*

客服最容易被做成一个会聊天的窗口,但真正决定体验的,是答案是否有依据、事务工具是否可控,以及系统是否知道什么时候该转人工。

01.客服系统最容易误判的目标,是“替代所有人工”

很多人一提到 Agent 客服,第一反应就是做一个会聊天的窗口。但真实客服场景里,聊天能力本身并不是最难的部分。

真正决定体验的,通常是这些事情:

  • 回答有没有引用到正确知识
  • 查订单、查物流、查工单这些动作能不能稳定执行
  • 模型会不会乱承诺退款、补偿或升级处理
  • 当问题超出边界时,系统能不能及时转人工

所以客服 Agent 的第一目标,通常不是“把人工客服替掉”,而是先把高频、低风险、规则相对稳定的问题处理好,并且把复杂问题整理成更适合人工接手的状态。

02.先选一个单一链路,而不是“万能客服”

如果第一版目标写成“覆盖所有客服场景”,项目很快就会失控。更现实的切入点通常是某一条清晰链路,例如:

  • 订单状态查询
  • 退款进度查询
  • 售后材料收集
  • 常见政策问答

以“售后助手”为例,一个可交付的第一版通常已经足够有价值:

  • 回答常见售后政策
  • 查询订单和工单状态
  • 收集缺失信息
  • 必要时转人工,并附带对话摘要

这比做一个“什么都能聊一点”的客服机器人更容易上线,也更容易复盘。

03.一条稳定的客服链路,通常由三层能力组成

1. 知识问答层

用于回答规则明确、知识库可覆盖的问题,例如:

  • 发货时间
  • 退款时效
  • 保修政策
  • 发票开具流程

这里的重点不是“回答得像不像真人”,而是答案能不能追溯到知识来源。

2. 事务查询层

用于执行确定性操作,例如:

  • 查询订单状态
  • 查询物流轨迹
  • 查询历史工单
  • 创建售后工单

这些动作不应该靠模型自由发挥,而应该由受限工具直接对接业务系统。

3. 人工接管层

用于处理这些情况:

  • 低置信度问题
  • 需要人工裁量的例外
  • 用户情绪明显升级
  • 涉及赔付、改价、退款审批等高风险动作

没有这第三层,客服 Agent 很容易在“回答不确定但还在硬答”的状态里越走越偏。

04.模型负责理解与组织,系统负责查证与执行

在客服场景里,一个比较稳的职责拆分是:

更适合模型处理的部分

  • 识别用户意图
  • 把口语化描述整理成结构化问题
  • 判断是否信息缺失
  • 生成更适合客服查看的摘要

更适合系统处理的部分

  • 查询订单、物流、工单
  • 校验用户身份
  • 执行退款、补单、改地址等高风险动作
  • 命中知识库后返回对应证据

如果让模型同时负责“判断 + 执行 + 编造解释”,最后最容易出问题的就是事务边界。

05.一个更实用的响应骨架

比较推荐的方式,是让模型先输出一个受限的处理计划,再由系统决定走哪条链路。

python snippetpython
from typing import Literal
from pydantic import BaseModel, Field


class SupportPlan(BaseModel):
    lane: Literal["faq", "order_lookup", "ticket", "handoff"]
    intent: str
    confidence: float
    requires_human: bool
    reply_outline: str
    needed_fields: list[str] = Field(default_factory=list)


def execute_support_plan(plan: SupportPlan, session_id: str, tools):
    if plan.lane == "faq":
        return tools.answer_from_kb(session_id=session_id, outline=plan.reply_outline)

    if plan.lane == "order_lookup":
        return tools.lookup_order_and_reply(session_id=session_id, outline=plan.reply_outline)

    if plan.lane == "ticket":
        return tools.create_ticket(session_id=session_id, summary=plan.reply_outline)

    return tools.handoff_to_human(session_id=session_id, summary=plan.reply_outline)

这个模式的核心价值在于:

  • 模型输出有 schema 约束
  • 是否查单、建单、转人工由系统显式控制
  • 后续可以直接对 laneconfidencerequires_human 做评估

06.对话状态不要贪大,但必须够用

客服 Agent 不需要把所有聊天内容永久记住,但有几类状态最好明确保存:

  • 用户身份与校验结果
  • 当前会话的主意图
  • 已采集到的订单号、商品名、时间等关键槽位
  • 最近一次系统动作
  • 是否已经触发过人工接管

这几类状态足够支撑大部分售后对话,也方便人工客服接手时快速理解上下文。

07.人工接管不是失败,而是能力边界

很多团队把“转人工”当成系统失败指标,这很容易把 Agent 推向危险方向,因为它会被激励去硬答更多本不该硬答的问题。

一个更健康的策略是把人工接管视为正常能力边界,并提前定义明确触发条件,例如:

  • 连续两轮仍然无法确定意图
  • 检索结果互相冲突
  • 用户要求例外处理
  • 用户情绪明显恶化
  • 即将执行高风险外部动作

同时,转人工时不要只丢一段聊天记录。更好的做法是附带一段摘要:

  • 用户诉求
  • 已完成查询
  • 当前证据
  • 未解决问题
  • 推荐的人工下一步

这会显著减少人工客服重新问一遍的成本。

08.客服 Agent 特别需要 guardrails

客服场景天然会碰到大量敏感信息和合规要求,所以 guardrails 往往比“语气拟人化”更重要。

至少要重点处理这几件事:

知识依据

没有命中知识依据时,宁可保守回答或转人工,也不要编造政策。

PII 保护

日志、trace、训练样本和质检数据里都要考虑手机号、地址、订单号等敏感字段脱敏。

工具审批

任何修改订单、执行赔付、发起退款的动作,都不适合无条件自动执行。

语义安全

恶意提示、辱骂文本、诱导越权操作,都要在用户输入和模型输出两侧做检测。

09.评估时不要只看“回复像不像人”

客服 Agent 的评估更应该围绕业务正确性和处理边界:

  • 问题分类是否正确
  • 知识回答是否有依据
  • 工具调用是否正确命中
  • 是否该转人工时及时转了
  • 转人工摘要是否完整

如果后面要做更细的在线指标,也可以继续看:

  • 一次解决率
  • 平均人工接管率
  • 高风险误承诺率
  • 用户重复描述率

这些指标比“模型语气是否更像客服”更有工程价值。

10.三个常见误区

1. 先做意图分类百科,再做系统集成

客服真正的难点不是多写几个意图标签,而是把知识、交易和人工接管连成一条可运行链路。

2. 让模型直接承诺业务动作

是否能退款、是否能补发、是否可以免审核,这些都应该由规则和系统决定,而不是模型口头承诺。

3. 转人工时不附带结构化上下文

如果人工客服拿到的只是原始对话记录,前面 Agent 积累的价值几乎就浪费了。

11.总结

客服 Agent 真正可交付的形态,不是一个“更会聊天”的机器人,而是一条更完整的客服处理链:

  • 能回答有依据的问题
  • 能调用受限工具查证事实
  • 能在边界外及时转人工
  • 能把上下文整理得更利于人工继续处理

只要先把这条链路做稳,再去扩更多场景和更自然的交互,系统就更有机会成为真实业务的一部分,而不是一个展示型 demo。

12.参考资料