Skip to content

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 openai
typescript
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 openai
python
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 openrouter

Grit 会扫描代码库,自动将 OpenAI 的 baseURLapi_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 格式做校验。