Demo 阶段花了 50 美元,规模化之后发现账单是 5 万美元——这不是特例,这是大多数 LLM 项目的成长烦恼。
Token 计费模式让 LLM 的成本变得非常难预测。不像传统服务是固定的服务器费用,LLM 成本随着使用量、上下文长度、模型选择呈非线性增长。不管理好这件事,你的产品可能越受欢迎越亏钱。
Token 经济学基础
计费模式
主流 LLM API 按 Token 计费,Input Token 和 Output Token 分开计价(Output 通常更贵)。
主流模型价格对比(2025年数据):
| 模型 | Input(per 1M tokens) | Output(per 1M tokens) | 适用场景 |
|---|---|---|---|
| GPT-4o | $2.50 | $10.00 | 复杂推理、高质量生成 |
| GPT-4o-mini | $0.15 | $0.60 | 简单任务、高并发 |
| Claude 3.5 Sonnet | $3.00 | $15.00 | 长文档处理、代码生成 |
| Claude 3 Haiku | $0.25 | $1.25 | 轻量级任务 |
| Gemini 1.5 Flash | $0.075 | $0.30 | 高性价比选择 |
| DeepSeek-V3 | ¥0.001 | ¥0.002 | 极高性价比 |
以上为撰写时的公开定价,模型厂商会不定期调整价格(通常是降价),使用前请查阅官方文档。
一个典型 RAG 应用的月成本估算
场景:1万用户,每天10次查询,RAG 检索返回3个文档片段,每个500 token。
每次查询的 Token 消耗: System Prompt:200 token 检索文档上下文:3 × 500 = 1500 token 用户问题:50 token Input 合计:1750 token 模型输出(回答):300 token
月 Token 消耗(100,000次/天 × 30天): Input:5250M token Output:900M token
使用 GPT-4o 的月成本:约 $22,125使用 GPT-4o-mini 的月成本:约 $1,327(节省约 94%!)这个对比揭示了成本优化最简单的一条路:对不需要 GPT-4o 的任务,用 GPT-4o-mini。
成本优化五板斧
板斧一:模型路由(LLM Gateway)
不是所有任务都需要最强的模型:
简单问答(FAQ类) → GPT-4o-mini / DeepSeek-V3代码生成 → Claude 3.5 Sonnet长文档分析(>50K字) → Gemini 1.5 Pro(长上下文优势)中文内容生成 → 通义千问 / 文心一言复杂多步推理 → GPT-4o / Claude 3.5 SonnetLiteLLM:统一 100+ 模型的调用接口
from litellm import completion
# 统一接口调用不同模型,只需改 model 参数def call_llm(prompt: str, model: str = "gpt-4o-mini") -> str: response = completion( model=model, messages=[{"role": "user", "content": prompt}], ) return response.choices[0].message.content
# 调用 GPT-4o-miniresult = call_llm("帮我写一个 Python 排序函数", model="gpt-4o-mini")
# 调用 Claude(接口完全相同)result = call_llm("帮我写一个 Python 排序函数", model="claude-3-haiku-20240307")
# 调用本地 Ollama 模型(接口还是一样)result = call_llm("帮我写一个 Python 排序函数", model="ollama/qwen2.5:7b")基于任务类型的智能路由:
from enum import Enumfrom litellm import completion
class TaskComplexity(Enum): SIMPLE = "simple" # FAQ、关键词提取、简单分类 MEDIUM = "medium" # 普通问答、文本总结 COMPLEX = "complex" # 代码生成、复杂推理、长文档分析
ROUTING_CONFIG = { TaskComplexity.SIMPLE: {"model": "gpt-4o-mini", "max_tokens": 500}, TaskComplexity.MEDIUM: {"model": "gpt-4o-mini", "max_tokens": 1500}, TaskComplexity.COMPLEX: {"model": "gpt-4o", "max_tokens": 4000},}
def estimate_task_complexity(prompt: str, context_length: int = 0) -> TaskComplexity: if context_length > 10000 or len(prompt) > 2000: return TaskComplexity.COMPLEX code_keywords = ["写代码", "实现", "debug", "函数", "class"] if any(kw in prompt.lower() for kw in code_keywords): return TaskComplexity.COMPLEX 本文作者:Elazer (石头)
原文链接:https://ss-data.cc/posts/llm-cost-optimization
版权声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
未在播放
0:00 0:00