批处理 API:作为行业标准的五折优惠 本节摘要:每个主要厂商都提供带 50% 折扣、约 24 小时周转的异步批处理 API。OpenAI、Anthropic、Google,以及大多数推理平台(Fireworks 批处理层、Together batch)都实现了同一模式。把批处理与提示缓存叠加,夜间流水线能降到同步未缓存成本的约 10%。规则简单到残酷:不是交互的,就该走批处理。内容生成流水线、文档分类、数据抽取、报告生成、批量标注、目录打标——任何能容忍 24 小时延迟的工作负载,在迁到批处理前都是把账单留在桌上。2026 的生产模式是把每个新 LLM 工作负载分进三条道:交互(同步 + 缓存)、半交互(异步队列 + 回落)、批处理(夜间、缓存输入叠加)。
本节摘要:每个主要厂商都提供带 50% 折扣、约 24 小时周转的异步批处理 API。OpenAI、Anthropic、Google,以及大多数推理平台(Fireworks 批处理层、Together batch)都实现了同一模式。把批处理与提示缓存叠加,夜间流水线能降到同步未缓存成本的约 10%。规则简单到残酷:不是交互的,就该走批处理。内容生成流水线、文档分类、数据抽取、报告生成、批量标注、目录打标——任何能容忍 24 小时延迟的工作负载,在迁到批处理前都是把账单留在桌上。2026 的生产模式是把每个新 LLM 工作负载分进三条道:交互(同步 + 缓存)、半交互(异步队列 + 回落)、批处理(夜间、缓存输入叠加)。最浪费的是那些「装作交互、其实能容忍几分钟延迟」的工作负载。
对应原课程:Phase 17 · Lesson 15 ·
15-batch-apis(原英文phases/17-infrastructure-and-production/15-batch-apis/docs/en.md)。
阅读完本节,你应当能够:
你的团队上线了一条夜间报告生成流水线。5 万份文档,各做摘要,聚类摘要,起草高管简报。同步跑要 4 小时,每晚 2000 美元。你听说了批处理 API。
批处理给你五折。你还在系统提示(5 万调用共享)上开了提示缓存。叠加后,账单降到每晚约 180 美元——基线的约 9%。同一流水线,三处配置改动。
批处理是 LLM 成本工具箱里最便宜却没人拉的杠杆。原因多是组织性的:团队想着「实时」,实际 SLA 是「明早前」。本节就是讲别把 90% 账单留在桌上。
OpenAI Batch API:上传 JSONL 文件含请求列表。承诺 24 小时周转(实践常 2~8 小时)。输入输出 token 五折。/v1/batches 端点。可缓存输入还叠加缓存输入定价。
Anthropic Message Batches:JSONL 上传。24 小时周转。五折。支持 cache_control——缓存写显式,读在批处理内自动。
Google Vertex AI Batch Prediction:BigQuery 或 GCS 输入。Gemini 类似五折。与 Vertex 流水线集成。
批处理是「我承诺 24 小时内返回」——不是「这会花 24 小时」。典型 P50 是 2~6 小时。厂商在你批处理时调度到 off-peak 窗口,GPU 库存利用率不高。
5 万文档摘要 + 同一 4K token 系统提示:
叠加:批处理 + 缓存 ≈ 同步未缓存账单的 10%。任何夜间跑、有共享系统提示的工作负载都该用。
交互 —— 用户等响应。TTFT 关键。同步调用 + 提示缓存。不能批。
半交互 —— 用户提交任务,几分钟回来查。异步队列 + 批处理不可用时回落同步。想中等量 RAG 索引。
批处理 —— 用户期待「明早」或「下小时」结果。内容流水线、规模化分类、离线分析。永远批处理、永远叠缓存。
常见错误:因为流水线是生产级就全归交互。生产不是延迟规格——SLA 才是。
有些特性看着交互,其实能忍 5~10 分钟。例:夜间客户健康报告带「刷新」按钮。用户点刷新,等 10 分钟没问题。团队做成同步,50 个并发刷新的成本是「批处理后邮件投递」的 10 倍。
要问的问题:「24 小时对这个用户意味着什么?」若答「他们不会注意到」,就批。
批处理文件格式各厂商不同:
跨厂商写「一个批处理客户端」意味着每厂商一套适配代码。宣传多厂商批处理的网关(Portkey、LiteLLM 部分层级)仍是薄包原始格式。
原课程 code/main.py 跨同步、同步+缓存、批处理、批处理+缓存,为 5 万文档工作负载算成本,报告美元与百分比节省。下面给最小可读骨架。
def pipeline_cost(num_docs, sys_tokens, out_tokens, fresh_in_per_m, out_per_m, cached_in_per_m, mode="sync_uncached"): """估算一条文档处理流水线的成本。 mode: 'sync_uncached' / 'sync_cached' / 'batch_uncached' / 'batch_cached' """ cached = "cached" in mode batch = "batch" in mode in_rate = cached_in_per_m if cached else fresh_in_per_m discount = 0.5 if batch else 1.0 in_cost = num_docs * sys_tokens * in_rate / 1e6 * discount out_cost = num_docs * out_tokens * out_per_m / 1e6 * discount return round(in_cost + out_cost, 2) # 案例:5 万文档,4000 系统提示,200 输出 base = pipeline_cost(50000, 4000, 200, 3.0, 15.0, 0.30, "sync_uncached") stacked = pipeline_cost(50000, 4000, 200, 3.0, 15.0, 0.30, "batch_cached") print(f"同步未缓存 ${base} → 批处理+缓存 ${stacked} ({stacked/base*100:.0f}%)") # 这正是『三处配置改动,账单降到 10%』的算术
💡 分道不是技术决策,是产品决策。拉着产品经理逐特性过一遍「这个真的需要 < 1 分钟吗?」,你会惊讶有多少能进批处理道——而每迁一个,成本就降一档。
| 厂商 | 输入格式 | 折扣 | 周转 | 缓存叠加 |
|---|---|---|---|---|
| OpenAI Batch | JSONL /v1/batches |
五折 | 24h(典型 2~8h) | 是(自动) |
| Anthropic Message Batches | JSONL | 五折 | 24h | 是(cache_control 显式) |
| Vertex AI Batch Prediction | BigQuery/GCS/TFRecord | ~五折 | 24h | 是 |
| Fireworks/Together batch | 各自 JSONL | ~五折 | 24h | 依引擎 |
心法:三家厂商模式一致(五折 + 24h),差异在文件格式。跨厂商要用网关(Portkey/LiteLLM)抹平,或写适配层。批处理 + 缓存叠加是夜间工作负载的默认。
本节产出 outputs/skill-batch-triager.md(原课程目录)。给定工作负载特性,它分进交互/半交互/批处理并估节省:
跑通模拟器:运行 code/main.py。对 10 万文档、3K 系统提示、500 输出的流水线,算全栈(批处理 + 缓存)vs 同步基线的节省。
真实产品分道:挑一个你熟悉的真实产品的三个特性,各分进交互/半交互/批处理。
抱怨判断:某用户抱怨报告花了 3 小时。这是批处理误分道,还是合理交互?写出判定准则。
SLA 沟通:你的批处理 API 返回 SLA 是 24h 但 P99 是 20h。你如何向用户沟通?边界情况下下游系统行为是什么?
盈亏平衡:在多长的共享前缀下,批处理 + 缓存变得比在你自己预留 GPU 上跑一整夜更便宜?
下一节,我们看降本的另一块拼图——模型路由:如何用一个便宜的小模型处理大多数请求,只把难的交给前沿大模型,把平均成本砍掉一大截。