从业者关于隐藏推理成本乘数的论述,附带 DigitalOcean Serverless Inference 的实测数据。跨提供商的模式普遍适用。以下DO特有数字来自在 inference.do-ai.run 上记录的API运行,而非营销宣传。
你在生产环境中的LLM账单很少等于 input_tokens × input_rate。提供商引用输入是因为它是较小的数字。生产流量为输出、隐藏的推理token、重复的前缀、非生产重放流量以及你在不知不觉中跨越的上下文层级付费。
团队根据定价页面做预算,然后在发票时感到惊讶。一旦你理解了下面的五个乘数,这种惊讶是可以预见的。这些乘数是叠加的。只修复其中一个而忽略其他,大部分差距仍然存在。
定价说明: 此处引用的Token费率反映2026年6月提供商文档和 DigitalOcean Inference 定价 中的标价。在预算前请确认实时费率。

Claude Sonnet 4.6 列出了每百万输入token $3.00,每百万输出token $15.00。DigitalOcean Serverless Inference 在撰写本文时列出了同样的拆分比例。
一个输入输出比为1:2的对话工作负载,在任何其他乘数应用之前,已经混合到 标称输入费率的3倍。查看你过去30天的使用情况。如果输出量是输入量的2倍或3倍,你的实际费率远不是定价页面上的数字。
具有扩展思考功能的模型(Claude自适应思考、OpenAI o3/o4-mini)会发出用户从未见过的token。提供商按输出费率计费。
在 Claude Opus 4.8 上,每百万输出token $25,500个可见输出token加上2,000个思考token的成本是仅500个可见token的 5倍。Opus 4.8和Opus 4.7需要自适应思考。你可以通过 effort 控制深度,而不是固定上限:
{
"model": "claude-opus-4-8",
"max_tokens": 16000,
"thinking": { "type": "adaptive" },
"output_config": { "effort": "low" },
"messages": [{ "role": "user", "content": "Classify this support ticket." }]
}
此请求向启用了自适应思考的Claude Opus 4.8发送一个简短分类提示,但将effort设置为low,使模型在回答前花费更少的隐藏推理令牌。Opus 4.8始终会思考;你无法关闭这一点,但可以根据任务匹配深度。工单标签不需要与多步骤智能体工作流相同的推理预算。将低努力与简单提示配对,可以防止不可见的思考令牌虚增账单,使账单保持在接近可见输出数量的水平。
检查每个响应上的usage。当effort默认较高时,推理模型在简单任务上往往占据主要开销。
CI管道在每次拉取请求时重放提示。预发布环境镜像生产环境。负载测试命中模型端点以验证应用规模,而非模型成本。没有环境标签,所有这些都像生产环境一样计费。
Speedscale的企业分析记录了团队在发票到达后才意识到非生产环境共享额度的案例。标记每一次调用:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MODEL_ACCESS_KEY"],
base_url="https://inference.do-ai.run/v1",
)
response = client.chat.completions.create(
model="anthropic-claude-4.6-sonnet",
messages=[{"role": "user", "content": "Summarize this log line."}],
extra_body={
"metadata": {
"environment": os.environ.get("APP_ENV", "local"),
"service": "ci-test-runner",
}
},
)
print(response.usage)
这个代码片段通过OpenAI兼容的SDK调用DigitalOcean Serverless Inference,并在每次请求中为environment和service附加metadata标签。这些标签放在extra_body中,这样你可以按来源——CI运行器、预发布环境、生产环境——切分使用日志,而不是把每个token都当作生产花费。打印response.usage可以得到token计数,在标记流量分组后与账单核对。
首次按环境拆分时,CI和预发布环境通常占总token量的30%到50%。
同一个分类提示词,在详细模型上会返回整段文字,在简洁模型上只返回一个标签。无论哪种方式,你都要为每个输出token付费。这就是模型选择的量通道:同样的任务,不同的输出token数量。
提示词约束(“只返回标签,不用解释”)在结构化任务上可削减60%到80%的输出。长期来看,应根据任务类型匹配模型的冗长度,并按端点而不是按模型目录条目衡量输出token。
GPT-5.5(OpenAI文档):输入token低于272K时,每百万输入/输出为$5/$30。输入超过272K时,整个会话每百万输入/输出涨至$10/$45。
Gemini 3.1 Pro Preview(Google定价):上下文不超过200K时,每百万token为$2/$12。超过200K时,请求中所有token按每百万$4/$18计费。
| 模型 | 标准费率(每百万输入/输出) | 阈值 | 长上下文行为 |
|---|---|---|---|
| GPT-5.5 | $5 / $30 | 输入>272K | 整个会话,输入2倍/输出1.5倍 |
| Gemini 3.1 Pro Preview | $2 / $12 | 输入>200K | 整个请求,每百万$4/$18 |

在相当一部分请求中,RAG流水线和多轮智能体会跨过这些阈值。请对照各提供商的层级边界,审计p95和p99的输入上下文长度。
上述乘数与提供商无关。本节数据来自在https://inference.do-ai.run/v1上的实时API运行,记录于使用Inference Router实现多模型API成本治理(截至2026年6月16日)。方法:固定提示词、temperature=0、从响应中的usage读取token计数、按运行时的已发布DigitalOcean Inference费率计算成本。
模型选择通过两个独立通道影响成本:模型收取的每token费率,以及它产生的输出量(冗长度,乘数#4)。第一项测量单独考察费率通道。同一个分类提示词、三个模型、token形状完全相同(94 input / 80 output)——输出比(乘数#1)和冗长度(乘数#4)保持不变,因此唯一变量是价格:
| 模型 | 每请求成本(2026年6月16日运行) | 与最便宜路径对比 |
|---|---|---|
openai-gpt-oss-20b |
$0.00004070 | 基准 |
openai-gpt-5 |
$0.00091750 | 22.5倍 |
anthropic-claude-4.6-sonnet |
$0.00148200 | 36倍 |
openai-gpt-oss-20b的计算:(94 × $0.05 + 80 × $0.45) / 1,000,000 = $0.00004070。
当openai-gpt-oss-20b已满足准确率要求时,仍将每次分类调用发送给Sonnet,相当于每请求多付36倍的税——这纯粹是费率上的代价,冗长度还尚未计入。按每月70万次分类请求计算,仅路由一项的差距就是$28.49 vs $1,037.40。任何用量折扣都无法弥补模型不匹配的问题。
这与Serverless Inference中真正重要的指标中的更广泛DO基准一致:在同一提供商上,每个已完成答案的成本在模型目录中波动约230倍。提供商标价的变化只影响几个百分点,而模型选择的影响则相差几个数量级。
同一提供商,不同任务,6月16日实时运行:
| 路径 | 模型 | Token(输入/输出) | 每请求成本 |
|---|---|---|---|
| 分类 | openai-gpt-oss-20b |
94 / 80 | $0.00004070 |
| 客户问答 | anthropic-claude-4.6-sonnet |
412 / 292 | $0.00445200 |
| 推理 | openai-gpt-5 |
891 / 3,411 | $0.03417625 |
推理路径每次请求的成本比分类高出约840倍($0.03417625 vs $0.00004070)。GPT-5的输入费率($1.25/M)低于Sonnet($3.00/M),因此这不是费率通道效应——账单之所以激增,是因为推理生成了3,411个输出token,而分类只有80个。这就是乘数#2,以及乘数#1在数值上的容量通道:输出量(包括在可见答案之前计费的思考token)主导了成本。
使用你自己的模型访问密钥运行此命令。它会记录你进行成本归属所需的usage块:
curl -s -X POST "https://inference.do-ai.run/v1/chat/completions" \
-H "Authorization: Bearer $MODEL_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai-gpt-oss-20b",
"temperature": 0,
"messages": [
{"role": "system", "content": "Classify the ticket. Reply with one word: billing, bug, how-to, or account."},
{"role": "user", "content": "I was charged twice for my subscription last month."}
]
}' | python3 -c "import sys,json; u=json.load(sys.stdin)['usage']; print(u)"
这个单行命令使用temperature=0向openai-gpt-oss-20b发送固定的分类提示词,并打印响应的usage块。使用您的模型访问密钥运行它,可以查看DigitalOcean计费所依据的确切prompt_tokens和completion_tokens。使用相同的提示词对anthropic-claude-4.6-sonnet重复相同的调用,使用量差异就是您的账单目前承担的模型选择税——相同的任务形态,但每令牌费率不同。
完整的路由器设置、任务策略以及x-model-router-selected-route响应头,请参阅Inference Router 操作指南和成本治理教程。
大多数计费仪表板显示总令牌数和总支出。它们省略了环境拆分、缓存命中率、思考与可见输出、长上下文层级暴露以及按任务的输出分布。
没有这种细分,您就是在盲目优化。下面的脚本使用DigitalOcean/Anthropic公布的价格,根据使用计数器估算混合成本。将其连接到您的推理日志:
#!/usr/bin/env python3
"""Estimate blended LLM cost from token usage counters."""
from dataclasses import dataclass
@dataclass
class ModelRates:
input_per_m: float
output_per_m: float
cache_read_per_m: float = 0.0
RATES = {
"anthropic-claude-4.6-sonnet": ModelRates(3.00, 15.00, 0.30),
"openai-gpt-oss-20b": ModelRates(0.05, 0.45),
}
def estimate_cost(model, input_tokens, output_tokens, cache_read_tokens=0, thinking_tokens=0):
rates = RATES[model]
billable_output = output_tokens + thinking_tokens
input_cost = (input_tokens / 1_000_000) * rates.input_per_m
cache_cost = (cache_read_tokens / 1_000_000) * rates.cache_read_per_m
output_cost = (billable_output / 1_000_000) * rates.output_per_m
total = input_cost + cache_cost + output_cost
headline = (input_tokens / 1_000_000) * rates.input_per_m
return {
"total_usd": round(total, 4),
"input_only_usd": round(headline, 4),
"multiplier_vs_input_rate": round(total / headline, 2) if headline else 0.0,
}
# 1M input, 2M output, 500K thinking: multiplier ~13.5× vs input-only estimate
print(estimate_cost("anthropic-claude-4.6-sonnet", 1_000_000, 2_000_000, thinking_tokens=500_000))
该辅助工具将原始令牌计数器转换为包含输出令牌和思考令牌(而不仅仅是输入令牌)的美元估算值。multiplier_vs_input_rate字段揭示了定价页面数学计算与实际支付之间的差距:底部的示例——100万输入、200万输出、50万思考令牌——相对仅输入估算产生了约13.5倍的乘数。将其接入你的推理日志,以标记综合成本偏离预算的端点。
提示缓存降低了重复前缀的成本。Anthropic的缓存读取费用为基础输入的10%(定价文档)。一个100万令牌的系统提示词,在80%缓存命中率下,会显著改变输入经济性。机制细节:高级提示缓存。
批量推理为异步工作负载提供约50%的折扣,并提供24小时SLA。如果你的任务可以容忍延迟,而你仍在调用同步端点,那你等于放弃了最容易获得的折扣。
用量折扣在月度支出较高时生效。许多符合条件的团队从未主动询问过。
模型路由是当流量混合简单和复杂任务时最大的杠杆。上面6月16日的DO实况运行显示,相同分类提示词的成本差异高达36倍。Inference Router可在inference.do-ai.run上自动化任务到模型的调度,无需应用端路由逻辑。在70万/25万/5万的分类/问答/推理流量分布下,根据每次请求的测量数据,文档化的路由方案比仅用Sonnet的基线降低了39.6%的月度成本,比仅用Opus降低了63.7%(完整的流量模型参见成本治理教程)。
乘数#3(非生产环境泄漏)是一个可观测性问题。按令牌计费在共享API密钥下默认不会区分环境。你可以通过在请求元数据中添加标签,以及一个按environment分组usage的仪表板来解决这一问题。DigitalOcean Serverless Inference的计费与API返回的usage块一致,因此你的日志管道和账单共享同一个数据源。
模型选择同时驱动乘数#4(冗长度)和费率差异,这两者都是架构问题。当一个前沿模型同时处理分类和推理任务时,你会通过两条渠道为单词标签支付前沿价格:更高的每令牌费率(实测36倍的分类溢价),以及对于更健谈的模型,在同一任务上更高的输出量。
按任务复杂度进行路由可保持平均成本与任务价值成比例。分类流量保持在openai-gpt-oss-20b上。问答流量保持在Sonnet上,并通过会话固定来保持KV缓存的热度。推理流量仅在输出量证明费率合理时才升级到GPT-5。这种架构直接针对乘数#1、#2和#4。它不能替代针对乘数#3的环境标签。
关于托管模式的权衡(当按令牌计费的serverless让位于按GPU小时计费的专用实例时),参见Serverless与专用与批量推理的对比和规模化时的专用与Serverless推理。DigitalOcean基础设施上的缓存命中率基准测试在serverless基准测试管道中单独跟踪。
你也可以参考下面这个生产环境推理系列的其他文章:
——
一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。