第03章:LLM API全攻略——OpenAI、Anthropic、国内大模型怎么选

第03章:LLM API全攻略——OpenAI、Anthropic、国内大模型怎么选

“选择正确的模型,不只是性能问题,还是成本和延迟的权衡。一个好的AI应用工程师,知道什么场景用什么模型。”


一、2025年的LLM格局

大语言模型(LLM)的格局在过去两年发生了剧烈变化,以下是当前最主要的选手:

国际主流:

  • OpenAI(GPT系列): 市场份额最大,生态最完善,但价格偏高
  • Anthropic(Claude系列): 代码能力强,遵从指令能力强,长上下文表现优秀
  • Google(Gemini系列): 多模态能力强,与Google生态深度集成
  • Meta(Llama系列): 开源,可本地部署,成本极低

国内主流:

  • DeepSeek: 技术实力强,API完全兼容OpenAI,价格极低(比OpenAI便宜90%+)
  • 通义千问(阿里): 中文能力优秀,企业级服务稳定
  • 文心一言(百度): 中文领域数据深
  • 讯飞星火: 语音+文本能力

二、关键API参数详解

理解这些参数,才能让LLM按你的预期工作:

temperature(温度)

控制随机性,范围0-2,默认通常是1

# temperature = 0:确定性最高,每次回复几乎相同
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "1+1等于几"}],
    temperature=0  # 数学计算用0
)

# temperature = 1:平衡创意和连贯性
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "写一个短故事"}],
    temperature=1  # 创意写作用1
)

# temperature = 1.5-2:高度随机,可能产生奇特回复
# 通常不推荐在生产应用中使用

使用指南:

  • 代码生成、数学计算、信息提取:temperature=0
  • 一般对话、问答:temperature=0.7
  • 创意写作、头脑风暴:temperature=1.0-1.2

max_tokens(最大输出长度)

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "写一篇1000字的文章..."}],
    max_tokens=2000  # 限制输出长度,防止超长回复和过度费用
)

注意: max_tokens不是字数,是Token数。中文约1个字=1-2个Token,英文约4个字母=1个Token。

top_p(核采样)

# top_p 控制候选词的范围
# top_p=0.9:只从概率总和达90%的词汇中采样
# 一般不需要同时调整temperature和top_p,选一个调整即可
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "你好"}],
    top_p=0.9
)

stop(停止序列)

# 遇到特定字符串时停止生成
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "列出步骤"}],
    stop=["5."]  # 生成到第5步时停止
)

三、主流模型对比(2025年初)

OpenAI模型

模型 特点 适用场景 成本(每1M tokens)
gpt-4o 最强综合能力,支持视觉 复杂推理、代码、分析 Input: $2.5, Output: $10
gpt-4o-mini 4o的精简版,性价比极高 大多数日常任务 Input: $0.15, Output: $0.6
o1 慢但思考深,数学推理最强 复杂数学、科学推理 Input: $15, Output: $60
gpt-3.5-turbo 老款,便宜但能力有限 简单任务 Input: $0.5, Output: $1.5

Anthropic模型

模型 特点 适用场景 成本(每1M tokens)
claude-3-5-sonnet 代码和分析最强,速度快 代码生成、文档分析 Input: $3, Output: $15
claude-3-5-haiku 速度最快,成本最低 高频简单任务 Input: $0.8, Output: $4
claude-3-opus 最强推理,但最慢最贵 最复杂任务 Input: $15, Output: $75

DeepSeek模型

模型 特点 适用场景 成本(每1M tokens)
deepseek-chat 综合能力强,兼容OpenAI 大多数任务 Input: ¥0.27, Output: ¥1.1
deepseek-reasoner 深度推理,类似o1 复杂推理 Input: ¥4, Output: ¥16

注意: 这些价格会随市场竞争持续下降,使用前以官方文档为准。


四、模型选择决策树

你的任务是什么?
│
├── 代码生成/调试 → Claude 3.5 Sonnet 或 GPT-4o
│
├── 复杂推理/数学 → o1(贵但准)或 DeepSeek-R1
│
├── 一般对话/问答 → GPT-4o-mini 或 DeepSeek-chat(便宜)
│
├── 高频低成本任务 → GPT-4o-mini 或 Claude Haiku
│
├── 中文内容为主 → 通义千问 或 DeepSeek-chat
│
├── 图片理解/多模态 → GPT-4o 或 Gemini Pro Vision
│
└── 本地部署/离线 → Llama 3(Meta开源模型)

五、多模态:图片和视觉理解

现代LLM支持处理图片:

# 发送图片给GPT-4o
import base64

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

# 方式一:发送本地图片(Base64编码)
image_base64 = encode_image("screenshot.png")

response = client.chat.completions.create(
    model="gpt-4o",  # 需要支持视觉的模型
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{image_base64}"
                    }
                },
                {
                    "type": "text",
                    "text": "这张图里有什么内容?"
                }
            ]
        }
    ]
)

print(response.choices[0].message.content)

六、结构化输出(JSON模式)

让LLM直接返回JSON,方便你的代码处理:

from pydantic import BaseModel
from typing import List

# 定义你期望的输出结构
class ProductInfo(BaseModel):
    name: str
    price: float
    features: List[str]
    rating: float

# 使用Structured Outputs
response = client.beta.chat.completions.parse(
    model="gpt-4o-mini",
    messages=[
        {
            "role": "user",
            "content": "提取以下产品信息:iPhone 15 Pro,8999元,主要特性:A17 Pro芯片、钛金属机身、USB-C接口,评分4.8"
        }
    ],
    response_format=ProductInfo  # 直接传入Pydantic模型
)

product = response.choices[0].message.parsed
print(f"产品名:{product.name}")
print(f"价格:{product.price}")
print(f"特性:{', '.join(product.features)}")
print(f"评分:{product.rating}")

结构化输出极大地简化了后续的数据处理,是生产级AI应用的最佳实践。


七、成本估算和监控

实时监控Token使用:

# 成本追踪工具函数
def estimate_cost(usage, model="gpt-4o-mini"):
    # 以gpt-4o-mini价格为例(每1M tokens)
    prices = {
        "gpt-4o-mini": {"input": 0.15, "output": 0.60},
        "gpt-4o": {"input": 2.50, "output": 10.00},
        "claude-3-5-sonnet-20241022": {"input": 3.00, "output": 15.00},
    }
    
    if model not in prices:
        return "未知模型"
    
    price = prices[model]
    input_cost = (usage.prompt_tokens / 1_000_000) * price["input"]
    output_cost = (usage.completion_tokens / 1_000_000) * price["output"]
    total_cost = input_cost + output_cost
    
    return f"费用:${total_cost:.6f}(输入${input_cost:.6f} + 输出${output_cost:.6f})"

# 在调用中使用
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "解释RAG技术"}]
)

print(estimate_cost(response.usage, "gpt-4o-mini"))

本章小结

  1. 2025年LLM格局:OpenAI/Anthropic/Google三巨头,DeepSeek为性价比最佳的国内选项。
  2. 关键参数:temperature控制随机性(代码用0,创意用1),max_tokens防止超长输出。
  3. 模型选择:日常任务用GPT-4o-mini或DeepSeek(便宜),代码用Claude Sonnet,复杂推理用o1。
  4. 结构化输出(response_format=PydanticModel)让AI直接返回结构化数据,大幅简化后续处理。
  5. 监控Token使用是控制成本的基础,每次调用都应该追踪和记录。

核心行动建议: 今天用三个不同的temperature值(0、0.7、1.5)对同一个创意写作问题发起请求,观察输出的差异。这个实验会让你直观理解这个参数的含义。


本章提示词模板

模型选型顾问

我正在开发一个AI应用,以下是具体需求:
- 应用类型:[描述]
- 主要任务:[代码生成/文本分析/对话/内容生成等]
- 预期调用频率:[每天/每小时大约多少次]
- 预算:[每月大约多少美元/人民币]
- 是否需要中文能力:[是/否]
- 是否在中国大陆部署:[是/否]
- 延迟要求:[对响应速度有多敏感]

请帮我推荐:
1. 最合适的主力模型
2. 备选模型(价格更低或特定场景更好)
3. 预期每月费用估算
4. 模型切换的风险点

→ 继续阅读:第04章——提示词工程实战:让AI准确理解你的意图