OhMyGPT

从 OpenRouter 迁移

只改 base URL 和 Key,就能把 OpenRouter 上的代码切到 OhMyGPT,SDK 代码照常运行。

切换只需改两处:base URL 和 Key。你的 OpenAI SDK 代码、流式输出、工具调用、结构化输出、provider 对象和应用归属请求头都能原样继续工作。切换之后,每个响应都会写明这次的确切花费;免费的 ohmygpt/mock 模型还能让你在花钱之前先验证切换是否成功。

1. 修改 base URL 和 Key

切换前切换后
Base URLhttps://openrouter.ai/api/v1https://api.ohmygpt.com/v1
KeyOpenRouter 的 Key在 API Key 页面获取的 OhMyGPT Key
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://api.ohmygpt.com/v1",
    api_key=os.environ["OHMYGPT_API_KEY"],
)

completion = client.chat.completions.create(
    model="ohmygpt/mock",
    messages=[{"role": "user", "content": "Hello"}],
)
print(completion.choices[0].message.content)
This is a mock reply from OhMyGPT. Your integration works; switch to a real model when ready.

mock 模型免费,账户完成充值后即可使用。它能正常回复,就说明 URL 和 Key 都配置对了。

2. 设置模型 ID

模型 ID 同样是 creator/model 格式。很多 ID 完全相同;有些则是厂商名不同,或版本号里用连字符:

OpenRouterOhMyGPT
openai/gpt-5.4-nanoopenai/gpt-5.4-nano
anthropic/claude-sonnet-4.6anthropic/claude-sonnet-4-6
x-ai/grok-4.7xai/grok-4.7
z-ai/glm-5.3zhipu/glm-5.3
moonshotai/kimi-k2.6moonshot/kimi-k2.6

列出所有 ID:

curl -s https://api.ohmygpt.com/v1/models | jq -r '.data[] | select(.available) | .id'

价格见模型页面。ID 写错时会返回 404,并指出是哪个 ID:

{
  "error": {
    "message": "The model `anthropic/claude-sonnet-4.6` does not exist. List available models with `GET /v1/models`.",
    "type": "not_found_error",
    "param": "model",
    "code": "model_not_found"
  }
}

照常可用的功能

  • provider 对象:在 Chat Completions 和 Responses 上可用,支持 order、only、ignore 和 sort(price、latency 或 throughput)。供应商标识用 GET /v1/models 中每个模型 providers[].provider 下列出的值。详见供应商路由。
  • 应用归属请求头:HTTP-Referer、X-OpenRouter-Title(或 X-Title)和 X-OpenRouter-Categories 都会原样读取。详见应用归属。
  • 流式输出、工具调用和结构化输出(带 JSON schema 的 response_format),均为标准的 OpenAI 格式。
  • 非流式响应都带用量。 Chat Completions 的流与 OpenAI 一致,设置 "stream_options": {"include_usage": true} 后返回用量。

需要换一种写法的请求选项

OpenRouter 请求中的写法OhMyGPT 中的写法
模型后缀 :floor"provider": {"sort": "price"}
模型后缀 :nitro"provider": {"sort": "throughput"}
其他模型后缀直接用原始模型 ID
models 备用模型列表不用传。一个模型有多家供应商时,OhMyGPT 已经会把失败的请求转给下一家;如果想回退到另一个模型,用那个模型的 ID 重试即可。详见可靠性
usage: {"include": true}不用传。非流式响应总是带用量;Chat Completions 的流改用 "stream_options": {"include_usage": true}
Chat Completions 上的 reasoning: {"effort": "low"}"reasoning_effort": "low"
transforms、route不用传
order、only、ignore、sort 以外的 provider 字段不用传。如果某个字段会影响路由,400 响应会在 param 中指出该字段

查看每个请求的费用

每个响应都带有 X-Request-ID。非流式响应还带有 X-Cost-Credits,即以 Credits 计的确切费用;流式响应则在最后一个事件之前以 SSE 注释行 : x-cost-credits: N 发送。用量页面列出每个请求及其费用,Credits 的说明见费用。

也可以用 Anthropic 和 Gemini 的 SDK

同一个 Key 也能调用 /v1/messages 上的 Anthropic Messages API,以及 /v1/models/{model}:generateContent 上的 Gemini API。为 Anthropic 或 Google SDK 编写的代码不用改格式就能调用 OhMyGPT。各 SDK 的 base URL 见协议表。

本页目录