晴天技术
AI7 min read

AI API 成本优化:如何省钱又高效地使用大模型

AI API 成本优化:如何省钱又高效地使用大模型

AI成本API优化省钱技巧大模型

AI API 按 token 计费,用不好一个月几千块。本文分享实用的成本优化技巧。

AI API 定价

主流模型价格

模型输入价格输出价格单次对话成本
GPT-4o$2.5/1M tokens$10/1M tokens~$0.05
Claude Sonnet$3/1M tokens$15/1M tokens~$0.06
Claude Haiku$0.25/1M tokens$1.25/1M tokens~$0.005
GPT-3.5 Turbo$0.5/1M tokens$1.5/1M tokens~$0.01
DeepSeek$0.14/1M tokens$0.28/1M tokens~$0.003

成本计算

每日调用 1000 次,每次 1000 tokens 输入 + 500 tokens 输出
使用 GPT-4o:
- 输入:1000 × 1000 × $2.5/1M = $2.5/天
- 输出:1000 × 500 × $10/1M = $5/天
- 总计:$7.5/天 = $225/月

成本优化策略

1. 选择合适的模型

# 不是所有任务都需要最贵的模型

简单任务(分类、提取)→ GPT-3.5 / Haiku
中等任务(问答、翻译)→ Sonnet
复杂任务(推理、创作)→ GPT-4o / Opus

2. 减少输入 Token

精简 Prompt

# 差的 Prompt(~200 tokens)
你是一个专业的 Java 开发专家,拥有 10 年以上的经验,
精通 Spring Boot、微服务、数据库优化等领域。
请根据你的专业知识,帮我分析以下代码的问题,
并给出详细的改进建议,包括代码示例。
代码如下:...

# 好的 Prompt(~50 tokens)
审查 Java 代码,指出问题并给改进建议:
...

使用缩写和简写

# 差
"Please analyze the following Java code and provide suggestions for improvement"

# 好
"Review Java code, suggest improvements"

3. 减少输出 Token

# 限制输出长度
Prompt:用 100 字以内回答:什么是微服务?

# 指定格式
Prompt:用 bullet point 列出 Spring Boot 的 5 个优势,每个不超过 20 字

4. 缓存常见查询

import hashlib
import json

cache = {}

def cached_ai_call(prompt, model="gpt-4o"):
    cache_key = hashlib.md5(prompt.encode()).hexdigest()
    
    if cache_key in cache:
        return cache[cache_key]
    
    result = ai_call(prompt, model)
    cache[cache_key] = result
    return result

5. 批量处理

# 差:多次调用
for item in items:
    result = ai_call(f"分析:{item}")

# 好:批量调用
items_text = "\n".join(items)
result = ai_call(f"分析以下项目:\n{items_text}")

6. 使用更便宜的模型

def smart_model_selection(task_type, complexity):
    if task_type == "classification" and complexity == "low":
        return "gpt-3.5-turbo"  # 最便宜
    elif task_type == "qa" and complexity == "medium":
        return "claude-sonnet"   # 中等
    else:
        return "gpt-4o"         # 最强

实际优化案例

案例 1:客服机器人

优化前:

  • 使用 GPT-4o
  • 每次对话包含完整历史
  • 月成本:$500

优化后:

  • 简单问题用 GPT-3.5
  • 只保留最近 5 轮对话
  • 缓存常见问题
  • 月成本:$80

案例 2:代码审查

优化前:

  • 每次提交都调用 AI
  • 传输整个文件
  • 月成本:$300

优化后:

  • 只审查变更部分
  • 使用 diff 而不是完整文件
  • 简单规则用 linter
  • 月成本:$50

案例 3:内容生成

优化前:

  • 使用 Claude Opus
  • 每次生成完整文章
  • 月成本:$800

优化后:

  • 大纲用 Haiku
  • 内容用 Sonnet
  • 润色用 Opus
  • 月成本:$200

本地模型省钱

用 Ollama 替代

# 简单任务用本地模型
ollama run qwen2:7b

# API 调用
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2",
  "messages": [{"role": "user", "content": "你好"}]
}'

混合使用

def ai_call(prompt, complexity="medium"):
    if complexity == "low":
        # 用本地模型
        return ollama_call(prompt)
    elif complexity == "medium":
        # 用便宜的云端模型
        return openai_call(prompt, model="gpt-3.5-turbo")
    else:
        # 用最强模型
        return claude_call(prompt, model="claude-sonnet")

监控和预算

设置预算告警

# OpenAI 预算设置
# 在 platform.openai.com 设置月度预算

# 代码中监控
daily_cost = 0
DAILY_LIMIT = 10  # $10/天

def ai_call_with_budget(prompt):
    global daily_cost
    estimated_cost = estimate_cost(prompt)
    
    if daily_cost + estimated_cost > DAILY_LIMIT:
        raise Exception("超出每日预算")
    
    result = ai_call(prompt)
    daily_cost += estimated_cost
    return result

成本分析

Prompt:分析以下 AI API 调用日志,找出成本最高的场景:
[粘贴调用日志]

给出优化建议。

Token 计算

估算 Token 数

import tiktoken

def count_tokens(text, model="gpt-4o"):
    encoding = tiktoken.encoding_for_model(model)
    return len(encoding.encode(text))

# 中文大约 1 个字 = 1.5 tokens
# 英文大约 1 个单词 = 1 token

减少 Token 的技巧

  1. 删除无用信息:注释、空行、格式化
  2. 使用缩写:常见术语用缩写
  3. 分批处理:不要一次传太多
  4. 压缩历史:对话历史摘要而不是全文

成本对比

场景优化前优化后节省
客服机器人$500/月$80/月84%
代码审查$300/月$50/月83%
内容生成$800/月$200/月75%
数据分析$200/月$40/月80%

总结

AI API 成本优化的核心:

  1. 选对模型:不是所有任务都需要最贵的模型
  2. 减少 Token:精简 Prompt 和输出
  3. 缓存复用:常见查询缓存
  4. 本地替代:简单任务用本地模型
  5. 监控预算:设置告警,避免超支

做好这些优化,AI 成本可以降低 70-80%。