文档
如何降低 ChatGPT API 成本
最后更新:
ChatGPT API 的支出取决于请求量、输入与输出 token、模型选择和重复调用。下面讲的是初创公司和产品团队如何在不牺牲质量的前提下把成本降到几分之一。最快的一步,是用同样的模型只花一半的钱。
估算你的用量
用量计算器
选择相近的使用场景,或输入你自己的数值。
实际用量示例
下面的数值都可以调整
通过 ChatGPT API: $11.25 每月. 每月节省: $11.25.
预估预算
按官方价格
每月
$22.50
通过 ChatGPT API
每月
$11.25
每月节省
$11.25
每年节省
$135.00
计算使用所选模型的当前价格,不含 prompt 缓存。它展示成本量级,而非精确到分的未来账单。
先收集七天的数据
总账单说明不了什么。把用量记录在产品功能旁边:客服回复、文档处理、智能体步骤或报告生成。一周后就能看到哪个功能在吞噬预算,以及为什么。
const startedAt = performance.now();
const res = await client.chat.completions.create({
model,
max_completion_tokens: maxCompletionTokens,
messages,
});
analytics.track("llm_request", {
feature: "support_reply",
model: res.model,
input_tokens: res.usage.prompt_tokens,
output_tokens: res.usage.completion_tokens,
latency_ms: Math.round(performance.now() - startedAt),
});找到主要成本来源
不要一次重写所有 prompt。按花费给产品功能排序,从最上面的行开始。下表帮你选出第一个实验。
| 数据里看到什么 | 账单在哪里增长 | 先检查什么 |
|---|---|---|
| RAG 或聊天中的大 prompt | input_tokens | 检索、历史、prompt 缓存 |
| 回答比界面所需更长 | output_tokens | max_completion_tokens 与响应格式 |
| 一个动作触发多次调用 | 重试或 agent loop | 退避、停止条件、重复 |
| 一个模型服务所有任务 | 每个 token 的价格 | 路由到更便宜的模型 |
优化优先级
首先接入 ChatGPT API:这是立即将相同 token 成本降低 50% 的最简单方式。之后再优化模型选择、上下文、缓存和重试逻辑。
| 优先级 | 要做什么 | 难度 |
|---|---|---|
| 1 | 接入 ChatGPT API | 低 |
| 2 | 按任务复杂度选择模型 | 中 |
| 3 | 精简重复上下文 | 中 |
| 4 | 配置 prompt 缓存 | 高 |
| 5 | 限制回答长度 | 中 |
| 6 | 配置重试与停止条件 | 高 |
优化什么
1. 接入 ChatGPT API
使用 ChatGPT API 代替官方 OpenAI API。模型、prompt 和 token 用量保持不变,但费用降低 50%。切换时只需获取我们的 API 密钥并更换 endpoint。
接入 ChatGPT API2. 按任务复杂度选择模型
不要把分类、字段抽取和简单转换发给最贵的模型。在你自己的示例集上验证质量,只在更强模型确实能改善结果的任务上使用它。
const model = task.requiresDeepReasoning
? "gpt-5.6-sol"
: "gpt-5.4-mini";
const res = await client.chat.completions.create({
model,
max_completion_tokens: task.requiresLongAnswer ? 1200 : 300,
messages,
});3. 精简重复的上下文
不要在每次请求都发送整段对话和所有文档。保留相关片段、以往消息的摘要,以及当前步骤所需的指令。
未优化
- ●完整历史
- ●所有文档
- ●重复的指令
≈ 12,400 输入 token
优化后
- ●简短摘要
- ●3 个相关片段
- ●已缓存的指令
≈ 3,100 输入 token
本示例中输入 token 减少 75%
4. 使用 prompt 缓存
把稳定指令放在开头,把变化数据放在末尾。对于 GPT-5.6,请设置 prompt_cache_key,并在至少 1,024 token 的重复前缀后添加显式缓存断点。同时计算折扣后的缓存读取与按普通输入费率 1.25× 计费的缓存写入;只有前缀被重复使用时,缓存才真正省钱。
const res = await client.chat.completions.create({
model: "gpt-5.6-sol",
max_completion_tokens: 500,
prompt_cache_key: "support-policy-v1",
prompt_cache_options: { mode: "explicit" },
messages: [
{
role: "system",
content: [{
type: "text",
text: policyAndInstructions,
prompt_cache_breakpoint: { mode: "explicit" },
}],
},
{ role: "user", content: relevantChunks.join("\n\n") },
],
});5. 限制回答长度
设置合理的 max_completion_tokens,并要求模型按所需格式回答。该上限同时包括可见输出和 reasoning token。流式输出改善首 token 时间,但本身不会减少计费 token 数量。
const stream = await client.chat.completions.create({
model: "gpt-5.6-sol",
max_completion_tokens: 300, // cap, including reasoning tokens
stream: true,
stream_options: { include_usage: true },
messages: [
{ role: "system", content: "Return only compact JSON with fields summary and risk_level. No Markdown." },
...messages,
],
});
for await (const chunk of stream) {
if (chunk.usage) console.log(chunk.usage.completion_tokens); // billed output tokens
}6. 控制好重试
只对临时性错误重试,并使用指数退避。不要因界面错误或自身服务超时而重新运行一个已成功的请求。
确认省下的钱没有换来质量下降
一次只改一个变量,并在同一组请求上对比,否则无法判断效果来自哪一项改动。取某个昂贵功能的 30-100 个典型请求就够了。
- 1准备样本:某个功能的 30-100 个真实请求,不含个人数据。
- 2在该样本上测出下表各项指标的基线值。
- 3只改一个变量:endpoint、模型、上下文长度、缓存或响应上限。
- 4用同一组请求再跑一遍,并与基线对比。
| 指标 | 如何测量 | 满足什么条件才保留改动 |
|---|---|---|
| 单次动作成本 | token 花费 ÷ 成功动作次数 | 明显下降,而不是只降几个百分点 |
| 质量 | 通过你的校验或人工评审的回答占比 | 与基线持平 |
| 延迟 | 响应时间 p95 | 面向用户的流程没有变慢 |
| 错误 | 4xx/5xx 与重试调用占比 | 改动后没有上升 |
降低 ChatGPT API 成本的常见问题
怎样最快降低 ChatGPT API 成本?
首先接入 ChatGPT API:只需更换 API 密钥和 endpoint,即可立即将相同 token 的价格降低 50%。然后按产品功能统计用量,精简上下文和回答、配置缓存,并把简单任务路由到更便宜的模型。
Streaming 会降低 API 成本吗?
不会。Streaming 只改善首 token 时间,计费仍取决于实际处理的输入和生成的输出。请使用 max_completion_tokens 和紧凑的响应格式控制成本。
Prompt 缓存在什么情况下真正省钱?
当大量请求重复使用同一个长前缀时。对于 GPT-5.6,可缓存前缀至少需要 1,024 token。请比较 cached_tokens 与 cache_write_tokens;缓存写入比普通输入更贵,因此一次性或经常变化的前缀可能不会省钱。
如何确认优化没有降低质量?
保存 30–100 个不含个人数据的代表性请求,每次只改一个变量,并在同一数据集上比较成本、质量、延迟和错误。只有结果质量仍可接受时才保留改动。
下一步
先做最省事的一步:同样的模型只要一半价格,而且无需改写代码。之后再对比价格,为每类任务挑选合适的模型。