OpenRouter 教程:用 Python 调用免费大模型 API

OpenRouter 教程:用 Python 调用免费大模型 API

AI 模型越来越多,逐个平台注册、接接口、付订阅费,对开发者和爱好者都不友好。OpenRouter 是一个 AI 模型聚合平台,把几十家提供商的几百个模型统一到一套 OpenAI 兼容的接口后面,一次接入即可切换调用。

官网:https://openrouter.ai/

一、平台特点

  • 统一接口:一套 API 格式调用多个模型,不用为每个模型单独对接;
  • 按量计费:除订阅外也支持按调用量付费,适合开发测试阶段控制成本;
  • 免费模型:平台提供一批免费额度的模型(模型名带 :free 后缀),适合学习和轻量实验;
  • 透明度:可查看各模型的延迟、吞吐量等公开指标,以及基准测试评分,辅助技术选型。

说明:免费模型的种类与可用额度会随平台政策调整,以 OpenRouter 官网实时页面为准。

二、筛选免费模型

  1. 注册并登录 OpenRouter 账号;
  2. 进入”模型”页面,使用”即时定价”筛选功能,把价格滑块拖到”免费”档位;
  3. 挑选需要的模型(如 DeepSeek、Gemma、NVIDIA Nemotron 等系列),点击模型名查看上下文长度、响应速度等参数。

三、Python 接入实战

1. 环境准备

新建项目文件夹,用 VS Code 打开并新建 new.py。确保已安装 Python:

1
pip install openai

2. 创建 API 密钥

在 OpenRouter 后台创建一个 API 密钥。密钥只显示一次,复制后保存在安全位置。建议通过环境变量传递密钥,不要硬编码在代码里,示例中为演示方便直接填写,实际使用请替换为你自己的密钥。

3. 示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from openai import OpenAI

client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="填入你自己的 API 密钥",
)

response = client.chat.completions.create(
model="openai/gpt-oss-120b:free",
messages=[
{"role": "user", "content": "How many r's are in the word 'strawberry'?"}
],
extra_body={"reasoning": {"enabled": True}},
)

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

模型 ID(如 openai/gpt-oss-120b:free)以平台实时列表为准,免费模型可能下线或更名,调用前先在官网确认。

4. 运行

1
python new.py

5. 常见问题

  • SDK 版本:pip install --upgrade openai 保持 SDK 为最新版;
  • 依赖报错:按终端提示补装缺失的包后重试。

四、多轮对话示例(Nemotron)

下面是一个带上下文记忆的多轮对话示例,模型以 NVIDIA Nemotron 为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from openai import OpenAI

client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="填入你自己的 API 密钥",
)

history = [
{"role": "system", "content": "你是一个有用的 AI 助手,擅长详细推理。"}
]

print("--- 对话已启动!输入 'quit' 退出 ---")

while True:
user_text = input("\n你: ")
if user_text.lower() == 'quit':
break

history.append({"role": "user", "content": user_text})

try:
response = client.chat.completions.create(
model="nvidia/nemotron-3-super-120b-a12b:free",
messages=history,
extra_body={"reasoning": {"enabled": True}},
)
ai_message = response.choices[0].message
print(f"AI: {ai_message.content}")
history.append({"role": "assistant", "content": ai_message.content})
except Exception as e:
print(f"发生错误: {e}")

五、总结

OpenRouter 把多模型接入收敛到一套兼容接口,对需要对比、切换模型的开发测试场景比较友好。免费档适合学习练手,正式项目按实际调用量评估成本即可。


说明:本文基于 OpenRouter 官方版本流程整理,模型列表与免费政策以官网实时页面为准。