三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

客服 Agent 的拒答能力怎么工程化?置信度阈值、证据阈值与人工接管规则

客服 Agent 的拒答能力怎么工程化?置信度阈值、证据阈值与人工接管规则

做客服 Agent 的工程师大概率都遇到过这个场景:评测集上准确率 92%,上线一周用户投诉「机器人瞎编退款时间」。问题不在于模型,而在于你把「每个问题都答」当成了目标函数。本文从工程视角,把「拒答能力」拆成可落地的阈值设计、触发逻辑、评估集 schema 和政策版本模型,附可直接改的伪代码。

核心结论先行:客服 Agent 最该先建的能力不是「回答」,而是「在证据不足时可控地拒答 + 转人工 + 记录缺口」。拒答不是失败,是知识库下一轮建设的「需求采样器」。

一、为什么「高回答率」是反指标

主流 Demo 把高回答率当智能证明——每个问题都蹦出一段完整答案,现场效果很好。但生产系统真正需要的能力相反:在证据不足时拒答、转人工、记录。

原因在根因。用户绕开 AI 客服,表面是「没有活人感、听不懂需求、胡说八道」,根子落在知识库与产品数据不健全上:

  • 没有活人感不是语气问题,是识别问题:用户要的是「你记得我买过什么、卡在哪、说过什么」,Agent 却把每位用户当空白对话框,因为它没接入订单、物流、历史工单。
  • 听不懂需求是接不住上下文:用户说「杯子碎了要退」,背后至少三件事——识别 SKU、判断退换期、决定退款或补发;Agent 却当成退货政策咨询,因为它没有把「一句话」映射到「一堆系统事实」的能力。
  • 胡说八道最伤信任:模型在证据不足时编造退款时效、优惠券、物流时间;一条自信的谎言毁掉的好感比百条正确答复都多。

工程上,这三种翻车可以统一归因为一件事:在「没有足够证据」时仍强行生成答案。而「证据够不够」由两个数据底座决定。

二、根因拆解:文档 ≠ 知识,字段 ≠ 数据

2.1 知识库不健全:把文档当知识

常见做法:把 PDF、Excel、聊天记录直接塞向量库,宣布知识库建好。但真实业务里政策会变——退换货规则在 618 与平时不同、在美国站与中国站不同、对不同类目不同。若知识库没有生效日期、适用范围、优先级、冲突裁决,检索到的可能是去年上传、已过期的条款。它「知道」的越多,犯错底气越足。

2.2 产品数据不健全:把字段当数据

客服高频问题大量关于具体商品:有没有货、哪个变体还有尺寸、某邮区能否送达、广告位价格是否最新。这些问题需要实时、结构化、可追溯的商品事实——ASIN、变体、库存、邮区价格、广告位状态。靠人工搬运或滞后几小时的爬虫,Agent 永远只能回「大概」「可能」。用户要的是确定。

2.3 没有订单/工单系统实时接入

很多 Agent 只有「读」能力,没有「查」和「改」。读得到政策,查不到这笔订单真实状态;说得出流程,触发不了工单和退款。于是「半知情」下用猜测填空——这是幻觉主源。要消除幻觉,先让它在该查系统时能查到系统。

独家判断:评价客服 Agent 值不值得信,先问「它在不知道时有没有老实说不知道」,而不是「答对多少」。前者衡量生产可靠性,后者衡量演示效果。

三、拒答三件套:置信度阈值 + 证据阈值 + 人工接管规则

拒答不能靠模型「自觉」,要靠工程规则。下面给一套可编码的设计。

3.1 检索证据评分(证据阈值)

defretrieve_evidence(query,ctx):# 返回命中证据列表,每条带 source / effective_date / scope / priorityhits=vector_store.search(query,top_k=5,filters={"site":ctx.site,# 适用站点"product_scope":ctx.asin,# 产品范围"effective_date__lte":ctx.now,# 生效日期约束})# 冲突裁决:同一 scope 多版本取 priority 最高且生效中的resolved=resolve_conflicts(hits)returnresolved

3.2 置信度阈值 + 动作裁决

EVIDENCE_THRESHOLD=1# 至少命中 1 条有效证据CONFIDENCE_THRESHOLD=0.7# 可回复的最低置信度defdecide(query,ctx):evidence=retrieve_evidence(query,ctx)conf=scorer.score(query,evidence,ctx)iflen(evidence)>=EVIDENCE_THRESHOLDandconf>=CONFIDENCE_THRESHOLD:# ① 证据足且置信够 → 带引用的建议回复returnReplyWithCitation(answer=generate(query,evidence),citations=[e.idforeinevidence],audit=ctx.trace())iflen(evidence)==0orhas_conflict(evidence):# ② 检索不到 / 冲突 → 说明不足 + 转人工 + 写缺失字段missing=infer_missing_fields(query,ctx)write_missing_fields(missing)# 写入缺失字段清单returnEscalateToHuman(reason="insufficient_or_conflicting_evidence",missing_fields=missing,wait_est="2min")ifctx.order_statusisNoneornotctx.order_verified:# ③ 订单状态不全 → 拒绝对外结论,只给流程 + 重试查单retry_order_lookup(ctx.order_id)# 触发订单系统只读查询重试returnFlowOnlyAnswer(flow=return_flow(ctx),note="订单状态未核验,暂不给出结论")ifrequires_write_permission(query):# 退款 / 改工单# ④ 超权限 → 不执行 + 生成待审批草稿 + 留审计draft=build_draft(query,ctx)push_for_approval(draft,approver=ctx.owner)returnPendingApproval(draft_id=draft.id,audit=ctx.trace())returnEscalateToHuman(reason="fallback")

3.3 触发表(可直接照搬进需求文档)

触发条件Agent 行为后端动作
检索到证据,置信度 ≥ 阈值生成建议回复,标注引用来源记录执行轨迹,供抽检
检索不到证据 / 证据冲突明确说明信息不足,转人工写入「缺失字段」清单
订单状态不全 / 无法核验拒答具体结论,仅给流程指引触发订单系统只读查询重试
动作超出权限(退款、改工单)不执行,生成待审批草稿推送人工审批,留审计

关键原则:能答的必须出示证据;答不了的必须说清缺什么、转给谁。把「答」和「拒」都做成可解释、可审计动作,系统才在用户心里建立信任。

四、政策版本模型:让冲突可被裁决

把政策从「文档」升级为「带元数据的知识对象」,是拒答可靠的前提。建议 schema:

{"policy_id":"return_window","version":"2026-618-v3","effective_date":"2026-06-01","expiry_date":"2026-06-20","site":["US","CN"],"product_scope":["HOME","KITCHEN"],"priority":90,"owner":"aftersales@brand.com","content":"大促期间支持 30 天无理由退货","conflicts_with":["return_window:base-v1"]}

裁决逻辑:resolve_conflictssiteproduct_scope命中且effective_date <= now < expiry_date的多版本中,取priority最高者;若仍冲突,回落人工并写缺失字段。没有这套元数据,向量库检索永远是「谁被召回谁算数」,不可控。

五、评估集 schema:200 条对话怎么变成第一版回归样本

别一上来追求全自动。可落地的试点从 200 条真实对话开始,五步:

  1. 取近 30 天 200 条售后对话,人工标三类:direct_answer/needs_system_lookup/must_human_judge
  2. 为每条政策补生效日期、适用站点、产品范围、负责人,让版本冲突可被裁决。
  3. Agent 只生成建议回复,零写权限(不退款、不改工单)。
  4. 低置信度问题 + 人工改写内容结构化保存成评估集
  5. 每周复盘拒答率、采纳率、错误升级率、新增知识项,再决定是否开放查单工具。

评估集建议字段:

{"case_id":"c_0001","user_query":"我收到的杯子碎了想退","evidence_used":["policy:return_window:base-v1","order:ORD-8821"],"agent_answer":"...","confidence":0.62,"human_decision":"must_human_judge","human_rewrite":"已为您补发同款,订单 ORD-8821 处理中","final_outcome":"refund_or_reship","missing_fields":["logistics_track"],"reusable_knowledge":true}

这一步目的不是「尽快替代人」,而是先把低风险可验证部分托住,让人工腾出手处理例外;同时把散落在老员工脑子里的判断,沉淀成可检查、可回归测试的业务资产。评估集跑通、采纳率稳定,再谈开放事务性工具。

六、反常识指标:别单独追「自动解决率」

上线后盯「自动解决率」最容易被误导——它只告诉你拦下多少,不告诉你拦下的是对是错,更不告诉你有没有把错误悄悄放大。

应追踪「错误没有被自动化放大」,由以下指标共同刻画:

指标衡量为何重要
高质量拒答率该拒的有没有拒对直接反映生产可靠性
错误升级率答错的里多少被转人工补救衡量「猜」的风险敞口
人工接管后处理时长转人工有没有真的省时间体现是否减轻人工负担
可复用知识比例人工修改里多少回流成知识衡量系统自我进化
客户复联率被拒后用户是否还愿意回来信任的最终标尺

七、数据层接入:Pangolinfo 补「外部 Amazon 数据层」

产品数据不健全是幻觉一大来源。Pangolinfo 适合补齐「外部 Amazon 数据层」,而非把企业内部系统打包成现成 Agent:

  • Amazon Review API:评论与 Customer Says 真实反馈,接客服/产品/营销分析;
  • Amazon Scraper API:商品、搜索、榜单、类目、广告位等结构化事实,让 Agent 答「这个 SKU 现在什么状态」有据可依;
  • 当从「写代码调用接口」转向「让 Agent 直接取数」时,Amazon Data MCP提供面向 Agent 的工具入口,Amazon Scraper Skill把常用亚马逊数据任务放进对话式工作流。

订单、退款、ERP、工单仍须企业自集成——这一层谁也替不了。把 Amazon 数据采集与解析做短做稳,客服 Agent 才有资格在「知道」时开口,在「不知道」时闭嘴。

八、上线前自检清单(工程视角)

阈值与证据规则不能写死在业务代码里,建议全部抽成可配置项,从配置中心热更新:

  • 阈值可热更EVIDENCE_THRESHOLDCONFIDENCE_THRESHOLD必须可动态调整。大促期间政策变动频繁,置信门槛应可临时上调,宁可多转人工,也不要把过期条款当答案。
  • 缺失字段有 owner:每次写入missing_fields必须带负责人与期望补全时间,否则它会永远躺在表里没人管,采样器就失效了。
  • 审计覆盖「拒答」:很多团队只记录「答了什么」,不记录「拒了什么、为什么拒」。后者才是生产可靠性的核心证据——没有拒答日志,你无法复盘高质量拒答率。
  • 写权限默认关闭:第一阶段requires_write_permission分支必须全部走PendingApproval,任何直连退款 / 改工单的旁路都要有 code review 卡点和审批留痕。
  • 评估集随政策回滚:政策expiry_date到期后,依赖它的 case 应自动标记为 stale,避免用过期基线验收新模型,出现「分数涨了、实际错了」的假象。
  • 订单重试有上限retry_order_lookup必须设最大重试次数与退避策略,避免订单系统抖动时 Agent 卡死在查单循环,反而拖慢人工接管。

判断句:能把「拒答」也写进审计与评估集的团队,才真正具备生产级 Agent 的运维能力。没有拒答日志的客服 Agent,等于蒙眼开车。

九、把拒答当一等公民来观测

很多团队把「拒答」当成兜底失败,只在客诉来了才翻日志。生产级做法相反:把拒答当成一等公民,和建设回答准确率同等投入。具体落地上,每周复盘会议的第一张表就应该是缺失字段清单——它直接告诉团队下周该补哪条政策、接哪个订单字段、修哪类语义映射。当缺失字段数量逐周下降、可复用知识比例逐周上升,说明系统真的在自我进化;反之,说明反馈闭环断在了「记录」这一步。拒答率本身不是越低越好,关键看「高质量拒答率」是否稳定、错误升级率是否收敛。把这套观测建起来,客服 Agent 才从「能对话的机器人」变成「会自我改进的业务系统」,而不是又一个上线即停滞的演示项目。

收尾提醒

最后一句给工程团队:拒答不是能力的退让,而是可靠性的前提。把「该拒时闭嘴」当成功能来做,而不是当成 bug 来修,客服 Agent 的上线才真正安全,也才经得起真实流量的检验。

结论

用户躲 AI 客服,本质是躲「不懂装懂」的对话。解法不靠更大模型,而靠先把知识库与产品数据打牢,再让 Agent 学会最关键也最被忽略的一课:证据不足时,说「我不知道」,并把它变成下一次更好的答案。当拒答成为可解释、可记录、可回访的动作,客服 Agent 才从演示品变成可托付的生产系统。

完整触发表、评估集 schema 与落地细节见子篇:客服 Agent 拒答能力:为什么用户宁愿排队,也不信 AI 客服。


*外部参考:Salesforce Agentforce Security、Agent-in-the-Loop 研究(arXiv)

← 返回列表