用 Python 3 分钟对接 5 家大模型 API:不切账号的懒人方案
本文适合:正在用或准备用 AI API 的 Python 开发者 阅读时间:5 分钟 | 代码可直接复制运行
痛点:你是不是也在这样切账号?
写代码用 Claude,聊天用 GPT,长文档丢给 Gemini,推理任务交给 DeepSeek……
然后你的项目里就出现了这种东西:
from openai import OpenAI
from anthropic import Anthropic
import google.generativeai as genai
openai_client = OpenAI(api_key="sk-xxx")
anthropic_client = Anthropic(api_key="sk-ant-xxx")
genai.configure(api_key="AIza-xxx")
# 三个 SDK,三套认证,三份账单
# 还没算 DeepSeek 和 Mistral...
每加一个模型,就多一个 SDK、一个 API Key、一份账单。项目越大越乱。
有没有一种方式,一个 Key 搞定所有模型?
有。用 API 网关。
思路:API 网关 = AI 的菜鸟驿站
你不会每个快递公司都注册一个账号,你用菜鸟驿站统一收件。
API 网关做的事一样:
你的代码 → API 网关 → OpenAI / Anthropic / Google / DeepSeek / ...
你只需要对接网关,网关帮你转发到各家 API。一个 Key,一个 base_url,一份账单。
市面上有不少选择(OpenRouter、Requesty 等),这篇用 Crazyrouter 做演示——539 个模型,按量付费,不用月费。
实战:5 个模型,同一套代码
准备工作
pip install openai
没错,只需要 OpenAI 的 SDK。因为网关兼容 OpenAI 格式,所有模型都用同一个接口。
from openai import OpenAI
client = OpenAI(
base_url="https://crazyrouter.com/v1", # 改这一行
api_key="你的网关 Key" # 改这一行
)
# 搞定。下面所有模型都用这个 client
示例 1:GPT-4o-mini — 日常对话
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "用一句话解释什么是 API 网关"}],
max_tokens=60
)
print(response.choices[0].message.content)
返回:
API 网关是一个管理、路由和处理 API 请求的中间层,提供安全、监控和负载均衡等功能。
示例 2:Claude Sonnet 4 — 写代码
response = client.chat.completions.create(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "Python 快速排序,5行以内"}],
max_tokens=150
)
print(response.choices[0].message.content)
返回:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
return quicksort([x for x in arr if x < pivot]) + [x for x in arr if x == pivot] + quicksort([x for x in arr if x > pivot])
注意:代码完全一样,只改了 model 参数。
示例 3:DeepSeek-R1 — 推理任务
response = client.chat.completions.create(
model="deepseek-r1",
messages=[{"role": "user", "content": "一个房间里有100个人,99%离开了,还剩几个人?"}],
max_tokens=100
)
print(response.choices[0].message.content)
DeepSeek-R1 擅长逻辑推理,这类"陷阱题"它能正确回答:剩 1 个人。
示例 4:Gemini 3 Pro — 长上下文
response = client.chat.completions.create(
model="gemini-3-pro",
messages=[{"role": "user", "content": "概括 Python 的 GIL 问题,50字以内"}],
max_tokens=60
)
print(response.choices[0].message.content)
Gemini 3 Pro 支持超长上下文窗口,适合丢整份文档进去做摘要。
示例 5:DALL-E 3 — 生成图片
response = client.images.generate(
model="dall-e-3",
prompt="一只戴着程序员帽子的猫在写 Python 代码,赛博朋克风格",
size="1024x1024"
)
print(response.data[0].url)
同一个 client,不只能聊天,还能生图。这是大多数网关做不到的——它们只支持 LLM 文本补全。
算一笔账
| 模型 | 官方价格 (输入/1M tokens) | 网关价格 | 省多少 |
|---|---|---|---|
| GPT-4o-mini | $0.15 | ~$0.08 | 47% |
| Claude Sonnet 4 | $3.00 | ~$1.65 | 45% |
| DeepSeek-R1 | $0.55 | ~$0.30 | 45% |
| Gemini 3 Pro | $1.25 | ~$0.69 | 45% |
| DALL-E 3 | $0.04/张 | ~$0.02/张 | 50% |
假设你每月用 500 万 tokens(中等用量):
- 直接对接官方:~$25-40
- 通过网关:~$14-22
- 每月省 120-216
量越大省越多。而且你省掉的不只是钱,还有管理 5 个账号的时间。
进阶玩法
流式输出
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "讲个程序员笑话"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
用 Anthropic SDK 格式
如果你的项目已经用了 Anthropic SDK,也不用改:
from anthropic import Anthropic
client = Anthropic(
base_url="https://crazyrouter.com", # Anthropic 格式不加 /v1
api_key="你的网关 Key"
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=100,
messages=[{"role": "user", "content": "hello"}]
)
封装一个多模型调用函数
def ask(model: str, prompt: str, **kwargs) -> str:
"""一行调用任意模型"""
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
**kwargs
)
return r.choices[0].message.content
# 用法
print(ask("gpt-4o-mini", "写个正则匹配邮箱"))
print(ask("claude-sonnet-4-20250514", "review 这段代码有没有 bug"))
print(ask("deepseek-r1", "证明根号2是无理数"))
FAQ
Q: 延迟会增加多少? A: 网关转发增加约 5-20ms,对大多数场景可忽略。流式输出首 token 延迟基本无感。
Q: 数据安全怎么样? A: 网关只做转发,不存储对话内容。和你直接调官方 API 一样,数据直达模型提供商。
Q: 和 OpenRouter 有什么区别? A: OpenRouter 在官方价格上加价 10-30%,而且只支持 LLM 文本。Crazyrouter 价格低于官方,且支持图片生成、语音、视频等多模态模型。
Q: 支持哪些模型? A: 539+ 个模型,覆盖 OpenAI、Anthropic、Google、DeepSeek、Mistral、Meta 等主流厂商。完整列表见 模型定价页。
Q: 怎么注册? A: 打开 crazyrouter.com,注册后在控制台生成 API Key,充值即用。没有月费,纯按量计费。
总结
| 对比项 | 直接对接各家 API | 通过 API 网关 |
|---|---|---|
| SDK 数量 | 每家一个 | 1 个 (openai) |
| API Key | 每家一个 | 1 个 |
| 账单 | 每家一份 | 1 份 |
| 切换模型 | 改 SDK + 认证 | 改 model 字符串 |
| 价格 | 官方原价 | 约 55% |
| 多模态 | 各家各的接口 | 统一接口 |
如果你只用一个模型,直接对接官方没问题。但如果你像大多数开发者一样,需要在多个模型之间切换——API 网关能帮你省掉大量胶水代码和管理成本。
觉得有用的话点个赞 👍 收藏一下,以后对接新模型不用再翻文档了。