Appearance
OpenRouter 兼容 OpenAI API,可直接使用 OpenAI 官方 SDK 接入:TypeScript 用 npm i openai,Python 用 pip install openai,将 baseURL(或 base_url)设为 https://openrouter.ai/api/v1,传入 OpenRouter API key 即可。已有 OpenAI 代码库可用 Grit 工具(npx @getgrit/launcher openrouter)自动批量迁移。
OpenRouter 提供 OpenAI 兼容的 API,可以直接使用 OpenAI 官方 SDK 接入,只需修改 baseURL 和 API key。
TypeScript / JavaScript
bash
npm install openaitypescript
import OpenAI from "openai"
const openai = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: "<OPENROUTER_API_KEY>",
defaultHeaders: {
"HTTP-Referer": "<YOUR_SITE_URL>", // 可选,用于 openrouter.ai 排名统计
"X-OpenRouter-Title": "<YOUR_SITE_NAME>", // 可选,用于 openrouter.ai 排名统计
},
})
async function main() {
const completion = await openai.chat.completions.create({
model: "openai/gpt-4o",
messages: [
{ role: "user", content: "Say this is a test" }
],
})
console.log(completion.choices[0].message)
}
main();完整 TypeScript 示例:GitHub
Python
bash
pip install openaipython
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="<OPENROUTER_API_KEY>",
)
completion = client.chat.completions.create(
model="anthropic/claude-sonnet-4.6",
messages=[
{"role": "user", "content": "Hello!"}
],
extra_headers={
"HTTP-Referer": "<YOUR_SITE_URL>",
"X-OpenRouter-Title": "<YOUR_SITE_NAME>",
}
)
print(completion.choices[0].message.content)完整 Python 示例:GitHub
自动迁移现有代码
如果你已有使用 OpenAI API 的代码库,可以用 Grit 工具自动批量迁移:
bash
npx @getgrit/launcher openrouterGrit 会扫描代码库,自动将 OpenAI 的 baseURL 和 api_key 替换为 OpenRouter 的配置。
可选请求头说明
| 请求头 | 说明 |
|---|---|
HTTP-Referer | 你的站点 URL,用于 openrouter.ai 使用排名统计 |
X-OpenRouter-Title | 你的站点名称,同上 |
这两个请求头是可选的,不影响 API 功能。如果你希望在 OpenRouter 的 Usage Rankings 中显示你的应用,可以填入。
常见问题
Q: 用 OpenAI SDK 接入 OpenRouter 和使用 OpenRouter 专用包有什么区别?
A: 用 OpenAI SDK 是最简单的接入方式,对大多数场景已经够用。如果需要使用 OpenRouter 的专有功能(如 Provider 路由、备用模型配置、Prompt Caching 等),建议使用专门针对 OpenRouter 优化的框架集成包,如 @openrouter/ai-sdk-provider 或 @langchain/openrouter。
Q: 如何在 Python 中传入 OpenRouter 的 Provider 路由参数?
A: 通过 extra_body 参数传入:
python
completion = client.chat.completions.create(
model="anthropic/claude-sonnet-4.6",
messages=[{"role": "user", "content": "Hello!"}],
extra_body={
"provider": {
"order": ["Anthropic", "AWS Bedrock"]
}
}
)Q: 我的模型 ID 格式和 OpenAI SDK 的不一样,会有问题吗?
A: 不会。OpenRouter 使用 provider/model-name 格式(如 anthropic/claude-sonnet-4.6),直接作为 model 参数传入即可,SDK 不会对模型 ID 格式做校验。