温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。
作者:刘峒杉 (浙江大学)
邮箱:liutongshacheryl@163.com
Source:Pipal, C., Vogel, E.-M., Wack, M., & Esser, F. (2026). Researchers waste 80% of LLM annotation costs by classifying one text at a time. arXiv:2604.03684. Link, PDF, Replication
- Title: LLM 文本标注成本降 80%:一次放几条、一次问几个变量?
- Keywords: 大语言模型, 文本标注, 文本分类, 批量提示, 变量堆叠, 自动内容分析, 提示词
1. 你可能正在多花八倍的钱
假设你要用 LLM 给 10 万条文本编码 4 个变量。如果按目前多数论文的做法——一次提交一条文本、一次只问一个变量——你需要发起 40 万次 API 调用。如果改成每次提交 25 条文本、4 个变量一次问完,调用次数降到 4000 次,token 成本下降八成以上,而准确率通常只损失不到 2 个百分点。
这两个数字来自 Pipal et al. (2026)。该文用 8 个商业模型对 3962 条带专家标签的推文做了 96 万余次分类,系统检验了两个几乎每个 LLM 标注项目都要面对、却极少被讨论的实施选择:
- 文本批量处理(item batching):一次调用里放多少条文本;
- 变量堆叠(variable stacking):一次调用里同时问多少个变量。
围绕 LLM 标注,方法学文献已经讨论了提示词设计、模型选择及其对下游统计结论的影响 (Baumann et al., 2025; Carlson & Burbano, 2026)。但"一次放几条、一次问几个"通常被当成纯粹的工程细节,既不检验,也不报告。
先把该文的结论摆出来,再解释它为什么成立、什么时候不成立:
- 在短英文推文这类任务上,多数模型在每批 25–100 条的区间内保持稳定,token 成本节省八成以上;
- 一次堆叠不超过 10 个编码维度,结果与逐个变量编码接近;
- 堆叠导致的性能下降来自"同时管理多套分类规则",而不是提示词变长;
- 批量与堆叠的损失是相加的,不会相互放大;
- 在这个区间内,模型选得对不对,比批量取 25 还是 50 更重要。
需要立刻加一句限定:这个「安全区间」来自单一领域的短英文推文,不是普适定律。文本长度、语言、任务复杂度、模型版本都会改变它。本文最后一节会给出把它迁移到自己项目上的标定办法。
这两种做法的差别,可以用一张图概括:
图 1:同一批标注任务,两种调用方式。上半部分(红)是目前的普遍做法:编码手册 + 1 条文本 + 1 个变量换回 1 个标签,10 万条文本、4 个变量就要重复 40 万次,同一套编码手册也跟着发送 40 万次。下半部分(蓝)把 25 条文本和 4 个变量合进一次调用,每次返回 100 个标签,总调用次数降到 4000 次。
读图要点:两幅图里那本"编码手册"的体积是一样的,变的只是它被发送了多少次------这正是成本下降的全部来源,也是 §2.3 要用公式说清的事。底部三行是本文要回答的核心问题:调用次数降 99% 之后,token 成本和准确率各自付出了什么代价。
2. 两种效率选择:省的到底是什么
2.1 文本批量处理:一次提交多条文本
批量处理是指在一次 API 调用中提交多条待分类文本,要求模型按原有顺序返回对应标签。以批量大小 b=25b=25 为例,每次提交 25 条,而不是 1 条。
省钱的机制很直白:编码手册、任务定义、标签说明和少样本示例,在一次调用里只需发送一次。批量越大,这些固定提示词就被越多样本分摊。
2.2 变量堆叠:一次编码多个维度
变量堆叠是指在同一个提示词中给出多套编码规则,要求模型同时判断多个变量。例如对一条政策文本,一次性输出政策工具、政策方向、适用对象和实施时间,而不是分四次调用。
堆叠复用的是输入文本和共有背景说明,但代价不同:模型要同时理解多套分类标准,守住各变量之间的边界,还要按规定的数据结构完整返回。因此堆叠的真正约束可能不是提示词有多长,而是模型一次要管理多少项彼此不同的判断任务。后文 §4.4 会看到,这个猜测被一个专门设计的对照组证实了。
2.3 成本从哪里省下来:一个简单的分解
先看调用次数。设待标注文本数为 NN、变量数为 KK。"单文本—单变量"基准下,
C0=N×K(1)C0=N×K(1)
若一次处理 bb 条文本并把 KK 个变量合并到同一次调用,则
C1=⌈Nb⌉(2)C1=⌈bN⌉(2)
N=100000N=100000、K=4K=4、b=25b=25 时,调用次数由 40 万降至 4000,减少 99%。在。
但调用次数不等于成本。计费按 token 走,把总输入 token 拆开看更清楚。设 PP 为一次调用中固定不变的提示词部分 (任务说明、编码手册、少样本示例),tˉtˉ 为单条文本的平均 token 数,则批量方案的总输入 token 约为
T≈⌈Nb⌉P+Ntˉ(3)T≈⌈bN⌉P+Ntˉ(3)
式 (3) 右边第二项 NtˉNtˉ 是文本本身,无论怎么批量都省不掉;输出 token 同理,N×KN×K 个标签一个都不能少。唯一被压缩的是第一项,而它随 bb 以 1/b1/b 衰减。这解释了为什么节省率有上限,也解释了为什么收益很快就见顶:
| 批量 bb | 1 | 5 | 10 | 25 | 50 | 100 | 250 | 1000 |
|---|---|---|---|---|---|---|---|---|
| 固定提示词开销已消除的比例 1−1/b1−1/b | 0% | 80% | 90% | 96% | 98% | 99% | 99.6% | 99.9% |
从 b=1b=1 到 b=25b=25,固定开销已经消掉 96%;再从 25 加到 100,只多消掉 3 个百分点;加到 1000,只多消掉不到 1 个百分点。所以后文的结论——安全区间在 25–100、没必要冒险上 250 以上——不是经验巧合,而是这条曲线的必然:风险随批量单调上升,收益却早已趋于饱和。
计算机科学文献此前已表明,小批量提示可以在标准 NLP 基准上降低推理成本 (Cheng et al., 2023; Lin et al., 2024)。但这些研究没有回答编码手册驱动的社会科学分类任务能否照做,也没有检验批量与堆叠是否会相互放大损失。
3. 数据与实验设计
3.1 数据与编码任务
该文使用 Gilardi et al. (2023) 的公开复现数据 (经 Harvard Dataverse 发布),包含 3962 条与社交媒体内容审核有关的英文推文,采集时间为 2020 年 1 月至 2021 年 4 月。每个变量由两名训练过的研究助理独立编码,分歧经裁决后形成真值标签 (ground-truth labels)。
| 变量 | 样本量 | 类别数 | 任务特点 |
|---|---|---|---|
| 相关性 (relevance) | 3179 | 2 | 判断推文是否与内容审核相关;类别占比约 59% 与 41% |
| 问题/解决方案 (problem/solution) | 1500 | 3 | 三类较均衡,约 30%、32%、38% |
| 立场 (stance) | 783 | 3 | 严重不平衡,"支持"类仅 35 条,占 4.5% |
| 主题 (topic) | 611 | 6 | 名义 6 类,但 "Twitter Support" 仅 6 条、"Other" 在评估样本中为 0 条,实际有效类别只有 5 类 |
各变量样本量不同,是因为原始人工编码采用级联设计:只有被判定为相关的推文才继续编码问题/解决方案和主题;立场变量来自另一组针对美国《通信规范法》第 230 条的推文,与其他变量无重叠。
人工编码者之间的 Cohen's κκ 从立场的 0.63 到相关性的 0.88。这意味着本研究所用的"真值"本身也建立在人类编码与分歧裁决之上,而非无误差的客观标签——这一点在 §4.5 的比较中很关键。
3.2 模型设置
该文测试了 4 家提供商的 8 个生产环境模型,括号内为论文测算时的百万 token 输入/输出报价 (美元):
| 提供商 | 模型 |
|---|---|
| Anthropic | Claude Haiku 4.5 (1.00 / 5.00) |
| OpenAI | GPT-5-mini (0.25 / 2.00)、GPT-5-nano (0.20 / 1.25) |
| Gemini 3 Flash (0.50 / 3.00)、Gemini 3.1 Flash-Lite (0.25 / 1.50)、Gemini 2.5 Flash-Lite (0.10 / 0.40) | |
| Alibaba | Qwen 3.5 Plus (0.40 / 2.40)、Qwen 3.5 Flash (0.10 / 0.40) |
模型版本与价格变动很快,上表仅用于理解后文费用测算的量级,实际估算请以调用当日的价目为准。
除两个 OpenAI 模型外,其余模型温度均设为 0 并关闭推理模式,以尽量提高输出确定性。GPT-5-mini 和 GPT-5-nano 的温度锁定为 1,无法设为 0;推理强度设为 "low",也不能完全关闭。这一设置差异对理解后文的极端批量结果非常重要:不能把这两个特定模型的表现推广到同一提供商的所有模型。
所有提示词均要求模型以 JSON 数组返回标签,便于程序自动解析并与原文顺序对齐。
3.3 研究一:改变每批文本数量
研究一保持每次只编码一个变量,考察 9 种批量:
b∈{1,5,10,25,50,100,250,500,1000}b∈{1,5,10,25,50,100,250,500,1000}
每个变量单独编写提示词,并从 Gilardi et al. (2023) 的编码手册中为每个类别选取两个少样本示例,因此相关性、问题/解决方案、立场、主题的提示词分别含 4、6、6、12 个示例。所有批量与模型共用同一组示例。研究一共 9×4×8=2889×4×8=288 个实验条件。
3.4 研究二:改变同时编码的变量数量
研究二设置 k∈{4,10,25}k∈{4,10,25} 三种堆叠水平,并在 b=25b=25 与 b=250b=250 两种批量下运行。
这里要特别说明 kk 的含义。k=4k=4 是四个有人工真值的原始变量;k=10k=10 和 k=25k=25 在此之外分别加入 6 个和 21 个"看起来合理但没有真值"的模拟变量 (如情感、讽刺、行动号召)。作者只评估四个原始变量的准确率,新增变量仅用于抬高模型需要同时管理的任务数量。
因此,研究二直接回答的是:当提示词里同时存在更多编码任务时,四个已知任务的表现会怎样变化。它并没有验证新增的 6 个或 21 个变量本身是否也能被准确编码。
所有堆叠条件共享 28 个示例,即研究一各变量示例的并集,每个示例都标注提示词中出现的全部维度。四种设计成分如下:
| 设计部分 | 设置 | 目的 |
|---|---|---|
| 变量堆叠 | k=4,10,25k=4,10,25 (提示词约 2300 / 3300 / 5700 tokens) | 检验同时管理更多编码任务是否降低准确率 |
| 批量大小 | b=25,250b=25,250 | 检验批量与堆叠是否相互放大损失 |
| 位置变体 | 真值变量置于编码手册开头、中间或末尾 | 考察变量位置是否影响结果 |
| 长度控制组 | 只保留 4 个真值变量,用背景文字把提示词补到约 5700 tokens | 区分提示词长度与任务复杂度 |
主堆叠实验 48 个条件,位置实验增加 32 个,长度控制增加 8 个。两项研究合计 376 个条件,产生 963,151 次分类,来自 96,065 次 API 调用,总费用约 152 美元。
数据以固定随机种子seed=42打乱一次,各条件下文本顺序保持一致。主要指标是准确率,即模型标签与裁决后人工标签相同的比例;置信区间用 500 次 bootstrap 重抽样计算。作者也报告了 macro F1,模式一致,但因立场变量类别严重不平衡而更不稳定。
温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。