Notes · 2026-06-22

降低 AI API 成本的 10 个实用技巧

为什么需要关注 API 成本?

AI API 的费用增长速度往往超出预期。计费本质是:

总费用 = 输入 Token 数 × 输入单价 + 输出 Token 数 × 输出单价

(Token 是什么、怎么估算,见同系列 什么是 Token?。)

一个日活 1,000 人的聊天应用,如果每次对话平均消耗 2,000 Token、每人每天 5 轮,按 GPT-4o 量级粗算,月开销可能到 数百~上千美元。以下 10 个技巧从模型选型、Prompt、架构、运维四个方向压成本;节省比例因业务而异,表格里的数字是常见区间,不是承诺。

先认识几个词

术语白话
输入 Token你发过去的内容(系统提示、历史、RAG 文档等)
输出 Token模型生成的回答
System Prompt每次请求都会带上的系统指令
RAG先检索相关资料,再让模型回答
上下文缓存对重复的长输入打折计费
模型路由简单问题用小模型,复杂问题用大模型

技巧一:为任务匹配合适的模型

不是每个任务都需要最贵的模型。 根据任务复杂度选择对应层级:

任务类型推荐模型(示例)输出单价量级 / 1M Token
简单分类、提取、格式转换GPT-4o Mini、Claude Haiku、DeepSeek 等小模型约 $0.6~$2
常规对话、摘要、代码补全Claude Sonnet、GPT-4o约 $10~$15
复杂推理、长文创作、高难度 AgentClaude Opus、GPT 旗舰档约 $60~$75+

潜在节省:70%~94%(相对「全部用最贵模型」)

怎么判断该用哪档?

信号倾向小模型倾向大模型
任务是否有标准答案分类、抽取、翻译模板开放创作、多步推理
错误代价低(可人工复核)高(法律、医疗等)
是否需要长链工具调用单步即可多步 Agent

实践上可以用 100~200 条真实样本 先在小模型上跑,看准确率是否达标;达标就不必上旗舰。


技巧二:精简系统提示词(System Prompt)

系统提示词在每次请求中都会重复发送。它写得越长,每一通电话都在为多出来的 Token 买单

将 500 Token 的系统提示精简到 200 Token,若日均 10,000 次调用、输入单价 $2.50/1M:

节省 ≈ 300 × 10,000 × 30 / 1,000,000 × $2.50 ≈ $225/月

精简技巧

  • 关键词列表代替完整句子描述角色
  • 示例从 5 个减到 2~3 个最有代表性
  • 去掉模型已默认遵守的常识(「请用中文」「不要违法」等除非业务真需要)
  • 很少变的长文档挪到 RAG 或缓存,不要塞进 System Prompt

精简前后对比(示意)

❌ 冗长(~120 tokens):
你是一个非常专业、经验丰富、耐心的客服助手。在用户提问时,
你需要首先理解用户情绪,然后礼貌地回答……(后面还有三段)

✅ 精简(~40 tokens):
角色:客服助手。
规则:仅根据【知识库】回答;无依据则说「不清楚」并建议转人工。
格式:先结论,后步骤,≤150 字。

改完务必用固定测试集对比质量,别为省 Token 把关键约束删没


技巧三:限制输出 Token 数

输出单价通常比输入更贵,且模型容易「话多」。要从参数提示词两侧同时约束。

response = client.chat.completions.create(
    model="gpt-4o",
    max_tokens=200,  # 硬性上限:到数就停
    messages=[{
        "role": "user",
        "content": "用 3 句话总结以下文章……"  # 软性要求
    }]
)
方式作用
max_tokens / max_completion_tokensAPI 级硬封顶,防失控
提示词里写「≤100 字」「只输出 JSON」引导风格,更省但非硬保证
结构化输出(JSON schema)减少废话和重复解释

潜在节省:30%~60%(尤其对摘要、分类、提取类任务)


技巧四:利用上下文缓存(Prompt Caching)

OpenAI、Anthropic、Google 等均提供对重复长输入的缓存计费:同一段前缀(常见是 System Prompt、长文档、少样本示例)在缓存命中时,按折扣价计费。

服务商缓存折扣(示意,以官网为准)
OpenAI(GPT-4o 等)缓存输入约 50% off
Google(Gemini)最高约 75% off
Anthropic(Claude)缓存输入约 90% off

适合缓存什么?

  • 固定的 System Prompt(几百~几千 Token)
  • 不变的少样本示例(few-shot)
  • 同一产品文档前缀被大量用户共享

不适合什么?

  • 每条请求用户问题都不同、前缀几乎无重复
  • 需要实时更新的动态上下文

实施难度:⭐⭐——要按各平台文档配置 cache breakpoint,并保证前缀字节级一致。


技巧五:批量处理(Batch API)

不要求秒级响应的任务(批量翻译、离线标注、日报生成),使用各家的 Batch API,通常有 ~50% 折扣,且不占实时配额。

适合 Batch不适合 Batch
夜间跑数据清洗在线聊天
大批量 eval交互式 Copilot
文档批处理强实时客服

提交前把任务设计成「可重试、可幂等」,Batch 完成时间可能是数小时级。


技巧六:实现本地缓存层(语义缓存)

聊天、FAQ 场景里,用户常问相似问题。在调用模型前加一层 Redis / 内存缓存

用户问题 → 归一化 / 向量相似度 → 命中则直接返回 → 未命中再调 API
策略说明
精确匹配同一问题字符串完全一致才命中,实现简单
语义缓存.embedding 相似度 > 阈值即命中,命中率更高,要防「近似但意图不同」
命中率 30% → 约节省 30% 的 API 调用费

注意:缓存要有 TTL版本号——产品或 Prompt 升级后应失效旧答案。


技巧七:用 RAG 代替整库塞进 Prompt

把整本手册、全部 FAQ 一次性塞进 Prompt,输入 Token 爆炸,还更容易超窗口。

检索增强生成(RAG) 的标准做法:

  1. 文档切片(chunk)写入向量库
  2. 用户提问时检索最相关的 3~5 段
  3. 只把这几段放进 Prompt

Prompt 长度常可减少 60%~70%,且答案更贴资料——省 Token 和质量可以兼得

控费相关参数:

参数过大过小
chunk 大小每段占 Token 多上下文不完整
top_k检索片段多、输入长漏关键信息

建议对 RAG 链路开 trace(如 LangSmith),看「检索到了什么、最终 prompt 多长」。


技巧八:监控和分析使用模式

没有用量数据,优化是盲目的。至少每周看:

  • 按功能 / 接口 谁消耗的 Token 最多?
  • 输入 vs 输出 比例是否异常(输出占比过高 → 检查是否话多或未限长)
  • 是否有 bug 循环调用(重试风暴、Agent 死循环)
  • P95 延迟 与 Token 是否同向飙高

工具:OpenAI Usage Dashboard、LangSmith、自建日志(记录 model, input_tokens, output_tokens, user_id, route)。

一次真实案例:某接口把完整对话历史无截断回传,30 天后输入 Token 线性涨到初期的 20 倍——加「只保留最近 10 轮」立刻降 40%+。


技巧九:评估官方价 vs 聚合渠道

除官方 API 外,一些聚合/中转服务通过批量采购提供更低单价。若考虑这类渠道:

  • 是否与官方同源模型、SLA 和隐私条款
  • 对比输入/输出是否分开计价、是否有隐藏最低消费
  • 生产环境先小流量 A/B 测延迟与错误率

可用 APIS 价格对比工具 等站点做横向参考(第三方工具,自行甄别)。

潜在节省:因渠道而异,不宜默认比官方可靠;合规场景(金融、医疗、政企)优先官方或私有化。


技巧十:混合模型路由

在应用里加一层 Router,按任务复杂度分发:

用户输入 → 规则 / 小分类模型 → 简单 → Mini(便宜)
                              → 复杂 → 旗舰(质量)
                              → 不确定 → 先 Mini,置信度低再升级
路由信号(示例)路由结果
消息长度 < 50 且意图=查订单小模型
含「写方案」「架构设计」大模型
小模型回答「不确定」fallback 到大模型

业界经验:约 70%~80% 的请求可由小模型处理,整体成本降 50%~70% 并不少见。

路由本身也有成本(一次额外分类调用或规则维护),要用总账单验证,不是越复杂越省。


常见误解

误解实际情况
用最贵模型才专业大量任务是抽取、分类、短答,小模型足够
流式输出更便宜流式只影响体验,总 Token 不变
RAG 一定比长 Prompt 贵检索几段往往比塞整库省输入 Token
缓存万能只对重复前缀有效;用户问题各异时帮助有限
省 Token 可以牺牲所有示例few-shot 示例删光可能准确率骤降,要测

小结

技巧预估节省实施难度
匹配合适模型70%~94%
精简 System Prompt10%~30%
限制输出长度30%~60%
上下文缓存50%~90%(命中部分)⭐⭐
批量处理~50%⭐⭐
本地语义缓存20%~40%⭐⭐
RAG 替代长上下文60%~70%⭐⭐⭐
监控与分析10%~20%⭐⭐
聚合渠道因渠道而异
混合模型路由50%~70%⭐⭐⭐

控费没有银弹,通常是组合拳:先上监控找大户,再模型分级 + 限输出 + 精简 Prompt;有固定长前缀再加缓存;知识型应用优先 RAG。

建议落地顺序:

  1. 接用量统计,知道钱烧在哪
  2. 非核心路径换小模型 + max_tokens
  3. 精简 System Prompt 并做回归测试
  4. 有重复前缀再开 Prompt Caching
  5. 文档类场景上 RAG,别整库硬塞

延伸阅读