跳到主要内容
OpenRouter 快速入门:统一接口调用 500+AI 模型 | 极客日志
Python AI
OpenRouter 快速入门:统一接口调用 500+AI 模型 OpenRouter 是一个 AI 模型 API 聚合平台,允许开发者通过单一 API 密钥和统一接口调用超过 500 个主流 AI 模型。它支持自动故障转移、成本优化及免费模型使用。教程涵盖注册流程、API 密钥获取及三种核心调用方式(OpenAI SDK、直接 API、官方 SDK)。包含免费模型调用、流式响应、多轮对话、代码生成等实战案例,并提供参数调优与工具调用指导。适合从原型开发到生产环境部署的多种场景。
CloudNative 发布于 2026/3/22 更新于 2026/4/23 1 浏览OpenRouter 快速入门:统一接口调用 500+AI 模型
一、OpenRouter 是什么?
OpenRouter 是一个AI 模型 API 聚合平台 ,它像一个"万能插座",让你用一个 API 密钥 和统一接口 调用来自 OpenAI、Anthropic、Google、Mistral 等 50+ 提供商的500+ 主流 AI 模型 ,包括 50+ 个可免费使用的模型。
核心优势:
统一接口 :无需适配不同厂商的 API 格式
灵活切换 :一行代码即可更换模型,便于对比测试
成本优化 :自动选择最经济的模型方案
自动故障转移 :主模型不可用时自动切换备用模型
免费模型 :提供多个免费模型,适合学习和原型开发
二、准备工作:注册与 API 密钥获取
1. 注册账号
访问官网:https://openrouter.ai
点击"Sign Up"注册,支持 Google 账号快速登录或邮箱注册
完成邮箱验证后登录
2. 启用免费模型(重要)
免费模型需要特殊的隐私设置,否则无法使用:
点击右上角头像 → Settings(设置)→ Privacy(隐私)
勾选"Agree to the free models data policy"(同意免费模型数据政策)
保存设置
3. 创建 API 密钥
点击右上角头像 → API Keys(密钥)
点击"Create Key"创建新密钥
输入密钥名称,可选设置额度限制
复制密钥并妥善保存 (仅显示一次)
三、三种核心调用方式(Python)
方式 1:使用 OpenAI SDK(推荐,兼容性最好)
OpenRouter 提供 OpenAI 兼容接口,可直接使用 OpenAI SDK 调用所有模型。
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
base_url="https://openrouter.ai/api/v1" ,
api_key=os.getenv("OPENROUTER_API_KEY" ),
default_headers={
"HTTP-Referer" : "https://your-website.com" ,
:
}
)
():
completion = client.chat.completions.create(
model= ,
messages=[{ : , : }]
)
(completion.choices[ ].message.content)
asyncio
asyncio.run(main())
"X-Title"
"Your App Name"
async
def
main
await
"openai/gpt-3.5-turbo"
"role"
"user"
"content"
"用一句话解释什么是人工智能?"
print
0
import
方式 2:直接 API 调用(无依赖,适合轻量场景) import requests
import os
import json
from dotenv import load_dotenv
load_dotenv()
url = "https://openrouter.ai/api/v1/chat/completions"
headers = {
"Authorization" : f"Bearer {os.getenv('OPENROUTER_API_KEY' )} " ,
"Content-Type" : "application/json" ,
"HTTP-Referer" : "https://your-website.com" ,
"X-Title" : "Your App Name"
}
data = {
"model" : "deepseek/deepseek-r1-distill-llama-70b:free" ,
"messages" : [{"role" : "user" , "content" : "推荐 3 本 Python 入门书籍" }]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
result = response.json()
print (result["choices" ][0 ]["message" ]["content" ])
方式 3:使用 OpenRouter Python SDK(Beta 版)
from openrouter import OpenRouter
import os
from dotenv import load_dotenv
load_dotenv()
client = OpenRouter(
api_key=os.getenv("OPENROUTER_API_KEY" ),
base_url="https://openrouter.ai/api/v1"
)
async def main ():
response = await client.chat.completions.create(
model="mistralai/mistral-7b-instruct:free" ,
messages=[{"role" : "user" , "content" : "什么是大语言模型?" }]
)
print (response.choices[0 ].message.content)
import asyncio
asyncio.run(main())
四、7 个实战案例,覆盖主流应用场景
案例 1:免费模型调用(零成本学习) OpenRouter 提供多个免费模型,名称通常带 ":free" 后缀:
async def free_model_demo ():
completion = await client.chat.completions.create(
model="mistralai/mistral-7b-instruct:free" ,
messages=[{"role" : "user" , "content" : "写一首关于程序员的短诗" }]
)
print ("免费模型结果:" )
print (completion.choices[0 ].message.content)
asyncio.run(free_model_demo())
案例 2:流式响应(实时显示结果) async def streaming_demo ():
print ("AI 正在思考,将实时显示结果:" )
stream = await client.chat.completions.create(
model="openai/gpt-3.5-turbo" ,
messages=[{"role" : "user" , "content" : "解释什么是流式响应?" }],
stream=True
)
async for chunk in stream:
if chunk.choices[0 ].delta.content:
print (chunk.choices[0 ].delta.content, end="" , flush=True )
asyncio.run(streaming_demo())
案例 3:多轮对话(上下文记忆) async def multi_turn_demo ():
messages = [
{"role" : "system" , "content" : "你是一个友好的助手,擅长解释技术概念" },
{"role" : "user" , "content" : "什么是 OpenRouter?" }
]
response = await client.chat.completions.create(
model="anthropic/claude-3-haiku" ,
messages=messages
)
assistant_msg = response.choices[0 ].message
print ("AI:" , assistant_msg.content)
messages.append(assistant_msg)
messages.append({"role" : "user" , "content" : "它和直接调用 OpenAI API 有什么区别?" })
response2 = await client.chat.completions.create(
model="anthropic/claude-3-haiku" ,
messages=messages
)
print ("AI:" , response2.choices[0 ].message.content)
asyncio.run(multi_turn_demo())
案例 4:代码生成与解释 async def code_generation_demo ():
prompt = """ 写一个 Python 函数,实现以下功能:
1. 接收一个列表作为输入
2. 计算列表中所有偶数的平方和
3. 返回结果
4. 添加详细注释
"""
response = await client.chat.completions.create(
model="deepseek/deepseek-coder-6.7b-instruct:free" ,
messages=[{"role" : "user" , "content" : prompt}],
temperature=0.3
)
print ("生成的代码:" )
print (response.choices[0 ].message.content)
asyncio.run(code_generation_demo())
案例 5:模型对比测试(一行代码切换模型) async def model_comparison_demo ():
prompt = "解释量子计算的基本原理,用简单易懂的语言"
models = ["openai/gpt-3.5-turbo" , "anthropic/claude-3-haiku" , "mistralai/mistral-7b-instruct:free" ]
for model in models:
print (f"\n===== {model} =====" )
response = await client.chat.completions.create(
model=model,
messages=[{"role" : "user" , "content" : prompt}]
)
print (response.choices[0 ].message.content[:200 ] + "..." )
asyncio.run(model_comparison_demo())
案例 6:参数调优(控制输出风格) async def parameter_tuning_demo ():
messages = [{"role" : "user" , "content" : "写一个关于太空探索的故事" }]
print ("=== 高随机性(temperature=0.9)===" )
response1 = await client.chat.completions.create(
model="openai/gpt-3.5-turbo" ,
messages=messages,
temperature=0.9 ,
max_tokens=200
)
print (response1.choices[0 ].message.content)
print ("\n=== 低随机性(temperature=0.1)===" )
response2 = await client.chat.completions.create(
model="openai/gpt-3.5-turbo" ,
messages=messages,
temperature=0.1 ,
max_tokens=200 ,
top_p=0.1
)
print (response2.choices[0 ].message.content)
asyncio.run(parameter_tuning_demo())
案例 7:工具调用(连接外部 API) 通过 MCP(Model Context Protocol)实现工具调用:
async def tool_calling_demo ():
tools = [{
"type" : "function" ,
"function" : {
"name" : "get_weather" ,
"description" : "获取指定城市的天气信息" ,
"parameters" : {
"type" : "object" ,
"properties" : {
"city" : {"type" : "string" , "description" : "城市名称" }
},
"required" : ["city" ]
}
}
}]
response = await client.chat.completions.create(
model="openai/gpt-3.5-turbo" ,
messages=[{"role" : "user" , "content" : "北京今天的天气怎么样?" }],
tools=tools,
tool_choice="auto"
)
tool_calls = response.choices[0 ].message.tool_calls
if tool_calls:
print ("需要调用工具:" , tool_calls[0 ].function.name)
asyncio.run(tool_calling_demo())
五、常见问题与最佳实践
常见问题
免费模型无法使用 :检查隐私设置是否启用了免费模型数据政策
API 调用失败 :
响应缓慢 :尝试切换到其他模型,或调整 max_tokens 减少输出长度
最佳实践
环境变量管理 :使用 dotenv 存储 API 密钥,避免硬编码
错误处理 :添加 try-except 捕获 API 调用异常
模型选择策略 :
原型开发:使用免费模型
生产环境:根据任务选择最合适的付费模型
成本敏感:选择性价比高的模型如 Mistral、DeepSeek
对话管理 :合理维护上下文,避免对话历史过长导致 token 消耗过多
监控与优化 :使用 OpenRouter 控制台查看调用统计,优化模型选择和参数设置
六、进阶方向
批量处理 :同时处理多个请求,提高效率
自定义路由 :根据任务类型自动选择最优模型
缓存机制 :缓存常见查询结果,减少 API 调用
多模态 :调用支持图像生成的模型(如 DALL-E、Stable Diffusion)
应用部署 :将 OpenRouter 集成到 Web 应用、桌面程序或移动应用中
总结 OpenRouter 让 AI 开发变得前所未有的简单,你只需专注于应用逻辑,无需关心底层模型的复杂性。通过本教程的 7 个案例,你已经掌握了从基础调用到高级功能的核心技能。现在,开始用一个 API 探索 500+AI 模型的无限可能吧!
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online