现场是这样的。每轮对话先调一次 gpt-4o 做意图分类再走检索,单轮多出 900 输入 token,日活 3000 时成本从 40 美元涨到 130 美元,分类准确率只有 0.86。

中间走过弯路,把「每轮都分类,闲聊轮次也照跑一次」当成主因,改完现象没变。

排查方向其实有限,先把可能性排一排。分类时把全量历史都带上,其实只需要最近一句;分类提示词里塞了完整业务规则,没有做裁剪;用大模型做有限标签分类,成本与收益不匹配。

先统计分类请求在总成本里的占比

python -c "print(round(900*3000*30/1e6*2.5,2))"

接着分类输入压到最近一句加标签表

python -c "print(len('退款怎么申请'),len('退款怎么申请'*5))"

然后换小模型做初筛并对比输出

python -c "from openai import OpenAI;print(OpenAI().chat.completions.create(model='gpt-4o-mini',messages=[{'role':'user','content':'意图:退款'}]).choices[0].message.content)"

等前面都确认过,再加规则短路,关键词命中直接返回

python -c "import re;print(bool(re.search('退款|发票','我要开发票')))"

恢复的判定其实很直接。分类那一步每轮 token 降到 120 以内,成本回落到 60 美元以下,分类准确率不低于 0.86。

容易忽略的是,规则加小模型的组合在标签稳定后几乎总比纯大模型便宜,但新增标签时要记得补回归那批规则。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189