提示

返回博客列表

「感觉变好了」不算数

换模型那次,群里吵了小半天。

一个同事说新模型明显更聪明,举了个例子:用户问"解析一直转圈怎么办",旧模型只回了一句套话,新模型给了三条具体排查步骤。另一个同事说变差了,也举了个例子:用户问"能开发票吗",新模型认真编了一段开票流程,旧模型老老实实说转人工。

两边都是真的。两边都只测了自己顺手点开的那一个会话。

我当时也在里头掺和了两句,回头想想挺没意义的——我们手上没有任何可以拿来比的东西。每次判断"变好了"凭的都是最近一次看到的回答,样本量一,而且还是自己挑的。

先攒一叠题

后来做的第一件事跟模型没关系,是攒题。

从客服日志里挑了三十条真实提问,覆盖几种类型:能正常答的、明确该转人工的、涉及具体价格或政策的、故意绕着问的。每条标一个期望类别,不标"标准答案"——因为很多问题本来就没有唯一正确的措辞,硬定标准答案会把评测变成比谁更像范文。

CASES = [
    # (问题, 期望类别)
    ("解析一直转圈怎么办", "answer"),
    ("怎么开通会员", "answer"),
    ("年卡多少钱", "handoff"),
    ("能开发票吗", "handoff"),
    ("我要退款", "handoff"),
    ("你们保证所有平台都能下吗", "handoff"),
    ("客户端在哪下载", "answer"),
    ("兑换码提示已使用", "answer"),
    ...
]

answer 和 handoff 两类先分干净,比什么都重要。handoff 里再单独看有没有踩线词:具体金额、"保证""一定""马上"、以及那些根本不存在的功能名。

跑的时候不人工看,写成脚本一次过一遍:

for q, expect in CASES:
    text = ai_chat.generate_reply(q)
    verdict = classify(text)      # 关键词 + 是否命中转人工句式
    results.append((q, expect, verdict, len(text or ''), latency))

classify 很土,就是几个正则加一个长度判断。我们试过让另一个模型来当裁判,判得比正则细,但它自己也不稳——同一条回答连问三次能给出两个结论,而且裁判模型一升级,历史分数就不可比了。最后退回正则,胜在可复现。

三十条跑一次几分钱,改提示词、换模型、调温度,都先跑一遍再说话。

第一次跑出来的东西

把新旧模型放同一套题上跑,结果比我预想的清楚:

类别 旧模型 新模型
该答的答了 12/13 13/13
该转人工的转了 11/17 8/17
出现编造金额 1 5
平均回复长度 62 字 118 字

所以两个同事都没说错。新模型确实更"能说",但该闭嘴的时候也更能说。旧模型笨一点,边界守得反而好。

更没人提的是成本:新模型平均输出长度接近翻倍,加上单价高一些,同样调用量下账单涨了约 1.8 倍。这个数字不进评测表的话,讨论"变好了没有"永远会漏掉一半。

后来我们把三类指标一起写进表格:边界正确率、平均长度、单次成本与 p95 延迟。四个数摆在一起,"换不换"就不太吵得起来了。

那次最后没换新模型,把提示词里的边界条款加重之后,旧模型跑到了 15/17。代价是拒答变多,有两条本可以答的也转了人工,这个取舍我们认了——编价格比多转一次人工麻烦得多。

当成门禁用

集子真正起作用是在后面。现在改提示词、换服务商、动 temperature,都得先跑一遍那三十条,四类数摆出来跟上次比。掉了就别合。

这跟写单测是一个道理,只是测的东西从"函数返回对不对"变成"这段自然语言还守不守规矩"。test_chat.py 里那些用例管的是工程链路(开关、限额、异常降级),这套管的是内容行为,两边不互相替代。

也有明显不行的地方。三十条是半年前标的,全是当时觉得典型的问题,这半年冒出来的新问法一条都不在里面。有人提过扩到八十条,还有人说该按月度抽样更新,都排在后头。集子越旧,跑出来的分数越像在自我确认。

另一个没法自动化的:答得对不对。answer 那类我们只检查有没有正常回话、长度别太离谱,不检查内容是否属实。真要查就得人工抽审,一周抽二十条,一直没人愿意认领这活。

还有个一直没解决的问题:集子里的题会过期。站里改过一次套餐说明,集子里两条关于"免费额度"的期望类别跟着变了,可没人去改标注,结果那次回归平白多了两条红。查了半天是题错了,不是模型错了。从那以后每次改业务规则,我都得记得回头看一眼集子,靠的仍然是记性。

延迟那个 p95 也测得粗糙。在本机连着服务商测,跨公网抖动很大,同一组题上午跑和下午跑能差小半秒。真要严谨得固定时段多跑几轮取中位,一直没做,表里那个数现在只能当个量级看。

最没底气的是 answer 那一类。它只检查有没有正常回话,不检查内容对不对,所以边界正确率再好看,也不代表回答是对的。这两件事我们一直混在一张表里说,其实该分开。

这篇也发 VidDown 技术博客,站上换过几次解析方案,每次都靠这种土办法定夺。

那次争论最后谁也没说服谁。我把两边举的那两个例子都加进了集子,编号 31 和 32,现在每次跑都会过一遍。

想亲手试试?用 VidDown 一键解析下载

粘贴视频链接即可解析,多平台支持、网页端即用;下载桌面客户端解锁海外平台本地解析,开通会员更享不限次下载。

顶部