用免费额度跑完 474 个文档分类:蚂蚁百灵实测打法 + OpenRouter 选型思路
大家做过“文档分类”就懂:看起来简单,真跑起来全是坑。
- 类目一多就乱
- 内容一长就贵
- 结果一飘就没法上线
最近看到一个很有意思的信号:蚂蚁百灵在免费额度内跑完 474 个文档分类,速度还不慢,性价比很顶。再看 OpenRouter 的 token 消耗份额,国产模型的消耗量已经压过美国“三巨头”。
别急着激情下单,咱们把这事拆成可执行的教程:你要真想把分类系统落地,应该怎么做。
你需要的不是“一个模型”,而是一套分类流水线
很多人上来就问:用哪个模型更准?
问题是:分类任务的准确率,模型只占一半,另一半是你的流程。
一个能跑起来的分类流水线,至少包含这几块:
- 标签体系(474 类怎么定义才不互相打架)
- 输入裁剪(不裁剪就等着账单起飞)
- 提示词策略(让模型“只做分类”,别写小作文)
- 置信度与兜底(别把不确定的答案硬塞给业务)
- 评测集与回归(改一次 prompt,别把整体效果改崩)
你把这些搭好,换模型才有意义。否则你用再贵的模型也照样翻车。
场景:474 个类的文档分类,怎么拆才不痛苦?
想象一下常见的公司场景:
- 法务合同、研发文档、客服工单、制度流程、财务票据
- 你老板一句话:全给我按类归档,越快越好 😅
474 个类这种规模,建议别“一步到位”。更稳的做法是分层:
1)做成两段式分类:先粗分,再细分
- 第 1 段:大类(比如 15~30 个)
- 第 2 段:细类(每个大类下面再分 10~30 个)
好处很现实:
- 模型更容易选对范围
- prompt 更短
- 每次只给它一小份候选类,准得多
2)每个类都要写“边界说明”
474 类最怕的不是模型不聪明,是标签本身互相重叠。
你要给每个类补两句话:
- 收什么(正例)
- 不收什么(反例/排除项)
这一步做完,你的准确率通常会明显提升。
提示词怎么写:让模型别废话,直接出结果
分类 prompt 的核心就一句:输出必须结构化。
这里给你一个通用模板(你可以直接抄):
你是企业文档分类器。
任务:从候选类别中选择最匹配的 1 个。
要求:
- 只输出 JSON,不要解释。
- 如果信息不足,返回 "unknown"。
输入文档:
《{title}》
{content_excerpt}
候选类别(JSON 数组):
{candidate_labels_json}
输出 JSON 格式:
{
"label": "...",
"confidence": 0-1,
"reason": "不超过 20 字"
}
几个小技巧:
- content_excerpt 只放前 800~1500 字。很多文档后面是附录,放进去纯烧钱。
reason限字数。你要的是分类,不是作文比赛。- 必须加
unknown。否则模型会“硬猜”,你线上就开始背锅。
省钱提速:免费额度能跑完的关键在“控 token”
想用免费额度跑大批量分类,靠的就是三个动作:
1)只给候选集合,不给“全量 474 类”
如果你每次把 474 类都塞进去:
- prompt 直接膨胀
- 模型注意力发散
- 花钱买错答案
更好的做法:
- 用关键词规则 / 向量检索(embedding)先召回 TopK(比如 20 个)
- 再让 LLM 在这 20 个里选 1 个
2)输出格式短小
- 不要“请详细说明选择理由”
- 不要“输出该类目定义”
你就是要一个 label + 置信度。
3)失败重试要有策略
别无脑重试三次。
- 第一次:正常分类
- 如果
confidence < 0.55:扩大候选集(Top20 → Top50)再跑一次 - 如果还不行:打
unknown,进人工队列
这套策略很像“把钱花在刀刃上”:
- 大部分文档一次过
- 少数疑难杂症再加算力
评测怎么做:别被“感觉很准”骗了
分类任务最怕一句话:我感觉还行。
你需要一个小而精的评测集:
- 每个大类至少 20 条样本
- 高频细类再加样本
- 专门留一批“容易混淆”的对照样本(这批最值钱)
建议你盯这 3 个指标:
- Top1 准确率(主指标)
- unknown 命中率(该 unknown 的时候能不能 unknown)
- 混淆矩阵(哪些类老互相串门)
一旦混淆高,别急着换模型,优先:
- 改类目边界
- 给混淆类加反例
- 限制候选集合
OpenRouter 份额怎么看:这是强信号,但别当“唯一依据”
OpenRouter 的 token 消耗份额很直观:国产模型用量上来了。
这说明啥?
- 价格/性能比有优势,大家真在用
- 工程可用性在变强(否则不会持续烧 token)
但落到你自己项目里,别只看“份额”或“口碑”。你要按任务做选型:
- 你要的是分类:速度、稳定、成本、JSON 服从性
- 你要的是客服:多轮对话、拒答策略、幻觉率
同一个模型在不同任务里,表现可能两极分化。
一套你可以照做的落地步骤(按这个走不容易翻车)
- 整理标签体系:大类/细类 + 边界说明
- 准备评测集:真实数据,带混淆样本
- 搭两段式分类:粗分 → 召回候选 → LLM 精分
- 写强约束 prompt:只出 JSON + unknown
- 加置信度策略:低置信度扩候选/转人工
- 做回归测试:每改一次 prompt 或候选策略都要跑评测集
- 再谈换模型:同一套流程下对比成本/速度/准确率
避坑清单(真的是血泪经验)
- 把 474 类全塞进 prompt:贵、慢、还不准
- 没有 unknown:线上一定会出现“胡乱归类”
- 只看平均准确率:混淆类会把你折磨疯
- 类目定义不写排除项:标签越多,越乱
- 评测集用“干净样本”:上线就被真实数据暴打
你该怎么开始(最低成本的第一步)
你今天就能做的事:
- 随便挑一个业务线(比如“客服工单”)
- 做 30 个大类内的二段式分类
- 抽 200 条真实数据做评测
- 用免费额度跑一轮,算清楚:每 1000 条文档大概多少钱、多久能跑完
你会立刻知道:
- 这个项目能不能落地
- 钱烧在哪里
- 哪些类目在互相打架
如果你愿意,把你的类目结构(大类/细类示例)和 5 条典型文档(脱敏后)发我,我可以按你的场景把“候选召回 + prompt + 置信度阈值”这套配置直接给你一版可用的。