LLM API 成本控制实战:把 AI 账单从 $500 降到 $80 的 12 个方法

生产环境 LLM 成本优化全攻略,每个技巧都有实测数据

返回教程列表
进阶20 分钟

LLM API 成本控制实战:把 AI 账单从 $500 降到 $80 的 12 个方法

生产环境 LLM 成本优化全攻略,每个技巧都有实测数据

随着 AI 应用从 demo 走向生产,API 成本成为很多团队的头疼问题。本文总结 12 个经过实测的 LLM 成本优化方法,覆盖模型选择、Prompt 压缩、缓存策略、批处理等维度,平均可降低 60-80% 的 API 费用。

LLM成本API优化成本控制Prompt优化缓存Batch APIDeepSeek

LLM API 成本控制实战:把 AI 账单从 $500 降到 $80

先说数字

某 SaaS 产品优化前后对比:

指标优化前优化后降幅

月度 API 费用$520$8384% 平均响应时间4.2s1.8s57% 每次请求成本$0.026$0.00485%


第一类:模型选择(降低 50-70%)

方法 1:用对的模型做对的事

最常见的浪费:用 GPT-4o 做所有事情

python
def get_model(task_type: str) -> str:
    routing = {
        "classification": "gpt-4o-mini",     # $0.15/1M,GPT-4o的1/66
        "summarization": "gpt-4o-mini",
        "simple_qa": "gpt-4o-mini",
        "code_review": "claude-3-5-haiku-20241022",
        "complex_reasoning": "gpt-4o",
        "math": "o3-mini"
    }
    return routing.get(task_type, "gpt-4o-mini")


方法 2:DeepSeek API 替代(中文场景)

DeepSeek V3 API 约 ¥1/百万 token($0.14/1M);GPT-4o 为 $2.5/1M。中文任务用 DeepSeek,成本降 94%:

python
from openai import OpenAI
client = OpenAI(api_key="deepseek-key", base_url="https://api.deepseek.com")

接口兼容 OpenAI SDK,直接替换


第二类:Prompt 优化(降低 20-40%)

方法 3:压缩 System Prompt

python

冗余版(850 tokens)

"你是一个专业的客服助手,你的任务是帮助用户解决问题。

你应该保持友好、专业、耐心的态度..." (500字)

精简版(120 tokens,效果相同)

system = "中文客服助手。友好专业,不透露内部信息,不确定时承认不知道。"

方法 4:限制输出长度

python
response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    max_tokens=300,  # 不设置可能输出 2000+ token
)

方法 5:任务合并

python

一次请求替代三次

result = call_llm(""" 对以下文章执行三个任务:
  • 起一个吸引人的标题(20字以内)
  • 写一段100字摘要
  • 给出3-5个标签
  • 输出 JSON:{"title": "...", "summary": "...", "tags": [...]} """)


    第三类:缓存策略(降低 30-60%)

    方法 6:语义缓存

    python
    from sentence_transformers import SentenceTransformer
    import numpy as np

    model = SentenceTransformer("all-MiniLM-L6-v2") cache = {} # 生产用 Redis

    def cached_llm_call(query: str): query_emb = model.encode(query) for key, (cached_emb, response) in cache.items(): if np.dot(query_emb, cached_emb) > 0.95: return response # 缓存命中,0 API 费用 response = call_llm(query) cache[query] = (query_emb, response) return response

    方法 7:Claude Prompt Caching

    python
    response = anthropic.messages.create(
        model="claude-3-5-sonnet-20241022",
        system=[{"type": "text", "text": long_system_prompt,
                 "cache_control": {"type": "ephemeral"}}],  # 标记可缓存
        messages=user_messages
    )
    

    第二次调用相同 system,只收 10% 费用


    第四类:批处理(省 50%)

    方法 8:OpenAI Batch API

    python
    import json

    requests = [ {"custom_id": f"task-{i}", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-mini", "messages": [{"role": "user", "content": task}]}} for i, task in enumerate(tasks) ]

    with open("batch.jsonl", "w") as f: for req in requests: f.write(json.dumps(req) + "\n")

    batch_file = client.files.create(file=open("batch.jsonl","rb"), purpose="batch") batch = client.batches.create( input_file_id=batch_file.id, endpoint="/v1/chat/completions", completion_window="24h" # 24小时内返回,价格 50% off )


    第五类:监控与治理

    方法 9-12:追踪、限额、审计

    python
    

    追踪每个功能/用户的成本

    def track_cost(user_id, feature, tokens, model): costs = {"gpt-4o": 0.005, "gpt-4o-mini": 0.000075} cost = tokens / 1000 * costs.get(model, 0.001) db.insert("api_costs", {"user_id": user_id, "feature": feature, "cost": cost})

    设置每日用量上限

    MAX_TOKENS = 50000 def check_quota(user_id, requested): used = db.query("SELECT SUM(tokens) FROM usage WHERE user_id=? AND date=today()", user_id) return (used + requested) <= MAX_TOKENS

    每月审计检查清单

  • 哪些 System Prompt 可以精简?
  • 哪些任务可以降级到便宜模型?
  • 哪些高频查询适合加缓存?

  • 效果汇总

    方法难度预期降幅

    模型路由低40-60% DeepSeek 替代(中文)低80-94% System Prompt 精简低10-30% 语义缓存中30-60% Batch API中50% Prompt Caching中20-50%


    延伸阅读

  • OpenAI o3 实战指南
  • AI Agent 工作流自动化
  • RAG 知识库最佳实践
  • 相关工具

    OpenAIClaudeDeepSeekLlamaIndex