跳到正文

更多文章

影响力日常操作系统:21天习惯养成计划 从技能雇佣者到价值创造者 互惠账户的运营 影响力的三层架构 组织的注意力经济学
LLM成本控制与优化

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 Sonnet

LiteLLM:统一 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-mini
result = 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 Enum
from 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

MAX 会员专属

本文为 MAX 会员专属内容,升级到 MAX 即可阅读全文。

MAX ¥498/年 · 全部专属文章 + 2300+ 知识文档 + 1v1 咨询

Elazer (石头)
Elazer (石头)

11 年数据老兵,从分析师到架构专家。用真实经历帮数据人少走弯路。

加入免费社群

和数据从业者一起交流成长

了解详情 →

成为会员

解锁全部内容 + 知识库

查看权益 →
← 上一篇 AI数据工程师岗位解析:和传统数据工程师究竟有什么不同 下一篇 → 私域流量的商业价值:品牌直连消费者的数字化重构