FisherHub Blog

OpenAI API 成本优化实战:Token 计算与缓存策略

每 1000 个请求能省多少钱?从 Prompt 瘦身到语义缓存,降低 API 费用的 5 个方法

Token 是什么

Token 是 LLM 计费的基本单位。中文约 1 字 ≈ 1.5-2 token,英文约 1 词 ≈ 1.3 token。

定价参考(2026)

模型输入 (每 1M token)输出 (每 1M token)
GPT-4o$2.50$10.00
GPT-4o-mini$0.15$0.60
Claude 4 Sonnet$3.00$15.00

优化策略

1. 选对模型

// 简单任务用 mini
const summary = await openai.chat.completions.create({
  model: 'gpt-4o-mini', // 便宜 16 倍
  messages: [{ role: 'user', content: text }],
});

// 复杂推理用 full
const analysis = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [{ role: 'user', content: complexQuery }],
});

2. Prompt 瘦身

// ❌ 啰嗦
const prompt = `你是一个专业的助手,请你帮我分析一下这段代码...`;

// ✅ 精简
const prompt = `Review this code for bugs:`;

每减少 10 个 token,就是实打实的省钱。

3. 语义缓存

const cache = new Map<string, string>();

async function cachedCompletion(prompt: string) {
  const key = prompt.slice(0, 100); // 用前 100 字符做 key
  if (cache.has(key)) return cache.get(key);

  const res = await openai.chat.completions.create({
    model: 'gpt-4o-mini',
    messages: [{ role: 'user', content: prompt }],
    temperature: 0, // 确定性输出,提升缓存命中率
  });

  cache.set(key, res.choices[0].message.content);
  return cache.get(key);
}

4. 批量处理

// 合并多个小请求
const results = await Promise.all([
  analyze(code1),
  analyze(code2),
  analyze(code3),
]);
// 而不是串行等待

5. 流式输出

const stream = await openai.chat.completions.create({
  model: 'gpt-4o',
  stream: true, // 用户体验更好,但费用不变
  messages: [...],
});

成本估算

一个使用 gpt-4o-mini 的独立开发者,每月典型用量:

  • 100 次聊天对话,每次约 2000 token 输入 + 500 token 输出
  • 月费:$0.03 + $0.03 = $0.06(几乎免费)

用 gpt-4o 同样用量:

  • 月费:$0.50 + $0.50 = $1.00

结论:除非需要复杂推理,否则用 mini 型号,成本可以忽略不计。