第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"))
本章小结
- 2025年LLM格局:OpenAI/Anthropic/Google三巨头,DeepSeek为性价比最佳的国内选项。
- 关键参数:
temperature控制随机性(代码用0,创意用1),max_tokens防止超长输出。 - 模型选择:日常任务用GPT-4o-mini或DeepSeek(便宜),代码用Claude Sonnet,复杂推理用o1。
- 结构化输出(
response_format=PydanticModel)让AI直接返回结构化数据,大幅简化后续处理。 - 监控Token使用是控制成本的基础,每次调用都应该追踪和记录。
核心行动建议: 今天用三个不同的temperature值(0、0.7、1.5)对同一个创意写作问题发起请求,观察输出的差异。这个实验会让你直观理解这个参数的含义。
本章提示词模板
模型选型顾问
我正在开发一个AI应用,以下是具体需求:
- 应用类型:[描述]
- 主要任务:[代码生成/文本分析/对话/内容生成等]
- 预期调用频率:[每天/每小时大约多少次]
- 预算:[每月大约多少美元/人民币]
- 是否需要中文能力:[是/否]
- 是否在中国大陆部署:[是/否]
- 延迟要求:[对响应速度有多敏感]
请帮我推荐:
1. 最合适的主力模型
2. 备选模型(价格更低或特定场景更好)
3. 预期每月费用估算
4. 模型切换的风险点
→ 继续阅读:第04章——提示词工程实战:让AI准确理解你的意图