开发文档

LLM Gateway 同时兼容 OpenAI 与 Anthropic 协议,一个 Key 即可访问 130+ 主流大模型。 本页是完整的接口参考,所有代码片段都可一键复制。

API v1 · 全球可用兼容 OpenAI / Anthropic SDK

概览

LLM Gateway 是一条聚合接入多家模型厂商的统一推理通道,同时兼容 OpenAI 的/v1/chat/completions 与 Anthropic 的 /v1/messages 协议。任何能接受自定义base_url 的 SDK 或 HTTP 客户端(OpenAI SDK、Anthropic SDK、Claude Code CLI 等), 都可以零代码改动切换到本网关。

下面三种集成方式选一种开始:

快速开始

三步走:拿到 Key、指向 Base URL、发一次请求。

1. 获取 API Key

  1. 打开 API Keys 控制台,登录或注册账号。
  2. 点击「创建密钥」,命名后复制生成的 sk-... 字符串。
  3. 在「额度」页面充值,确保账户有可用余额。
Key 仅展示一次
创建完成后 Key 仅明文展示一次。请妥善保存到密码管理器或服务端密钥存储,切勿提交到源码仓库或放入前端代码。

2. 验证连接

用你最熟悉的语言跑一次下面的代码,把 your_api_key 替换成真实 Key:

curl https://api.llm-gateway.cn/v1/chat/completions \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4",
    "messages": [{ "role": "user", "content": "你好" }]
  }'

成功响应长这样:

200 OK
{
  "id": "chatcmpl-9f2abc123",
  "object": "chat.completion",
  "created": 1716240000,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "你好!有什么可以帮你?" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 9, "completion_tokens": 11, "total_tokens": 20 }
}
常见报错
  • 401 通常是 Key 错误或已停用。
  • 404 一般是 Base URL 忘了 /v1 后缀。
  • 402 是余额不足,到控制台充值即可。

基础信息

参数类型必填说明
Base URLstring
https://api.llm-gateway.cn/v1
协议HTTPS
所有流量强制 TLS 1.2+。
编码UTF-8
请求 / 响应统一 UTF-8。
Content-Typeapplication/json
除流式响应为 text/event-stream 外均为 JSON。

鉴权

所有接口通过 HTTP Authorization 请求头携带 Bearer Token 鉴权:

Request Header
Authorization: Bearer your_api_key

Key 与账户强绑定,可在控制台随时轮换。推荐在服务端将 Key 放入环境变量, 通过后端代理请求,不要将 Key 下发到浏览器或移动端。

对话补全

LLM Gateway 的核心接口,schema 与 OpenAI 完全一致。

POSThttps://api.llm-gateway.cn/v1/chat/completions

请求参数

参数类型必填说明
modelstring
模型 ID,例如 gpt-5.4claude-opus-4-7gemini-3.1-pro-preview,完整列表见 模型目录
messagesarray
对话消息数组,每条包含 rolesystem/user/assistant/tool)与 content
temperaturenumber
采样温度,0–2。值越大输出越发散。
默认值:1
max_tokensinteger
输出 token 上限。推理类模型的隐藏思考 token 会占用该额度, 若上限过低可能返回空 contentfinish_reason="length"
streamboolean
设为 true 时响应为 SSE 流式增量。详见 流式输出
默认值:false
tools / tool_choiceobject
函数调用,schema 与 OpenAI 完全一致。详见 函数调用
top_p / stop / seed / response_format多种
其它 OpenAI /chat/completions 字段原样透传。

请求示例

curl https://api.llm-gateway.cn/v1/chat/completions \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-6",
    "messages": [
      { "role": "system", "content": "你是一个严谨的资深工程师。" },
      { "role": "user",   "content": "用一句话解释量子纠缠。" }
    ],
    "temperature": 0.5
  }'

响应结构

200 OK
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1738960610,
  "model": "claude-opus-4-6",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "两个粒子的量子态无论相距多远都会同步变化。" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }
}

流式输出

在请求体中设置 stream: true,响应即变为 Server-Sent Events 流。 每个 chunk 符合 OpenAI chat.completion.chunk 结构,最后以 data: [DONE] 结束。

stream = client.chat.completions.create(
    model=class="tok-str">"gpt-class="tok-num">5.4",
    messages=[{class="tok-str">"role": class="tok-str">"user", class="tok-str">"content": class="tok-str">"写一首关于大海的短诗"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[class="tok-num">0].delta.content
    if delta:
        print(delta, end=class="tok-str">"", flush=True)
断线处理
SSE 长连接可能受网络或代理影响中断。建议客户端记录最后一次 chunk.id,断线后重建连接并忽略已展示的 token,避免重复输出。

函数调用

通过 tools 字段声明可调用的函数集合,模型返回 tool_calls 后由你的业务代码执行再把结果回传:

request.json
{
  "model": "gpt-5.4",
  "messages": [{ "role": "user", "content": "上海现在天气怎么样?" }],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "根据城市名返回天气",
        "parameters": {
          "type": "object",
          "properties": { "city": { "type": "string" } },
          "required": ["city"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}

模型列表

GEThttps://api.llm-gateway.cn/v1/models

返回当前账号可用的模型清单,结构与 OpenAI 一致:

200 OK
{
  "object": "list",
  "data": [
    { "id": "gpt-5.4",                "object": "model", "owned_by": "openai" },
    { "id": "claude-opus-4-7",        "object": "model", "owned_by": "anthropic" },
    { "id": "claude-sonnet-4-6",      "object": "model", "owned_by": "anthropic" },
    { "id": "gemini-3.1-pro-preview", "object": "model", "owned_by": "google" },
    { "id": "deepseek-v4-pro",        "object": "model", "owned_by": "deepseek" }
  ]
}

图像生成

POSThttps://api.llm-gateway.cn/v1/images/generations
正在灰度上线
当前线上已部署的模型以「对话补全」为主,图像生成接口仍在灰度。完整可用列表以 模型广场 中标记为「在线」的条目为准;离线模型调用会返回 400
参数类型必填说明
modelstring
例如 dall-e-3gpt-image-1
promptstring
图像描述文本。
sizestring
1024x10241792x1024
默认值:1024x1024
ninteger
生成张数。
默认值:1
cURL
curl https://api.llm-gateway.cn/v1/images/generations \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-1",
    "prompt": "一只穿着宇航服的柴犬,赛博朋克风格",
    "size": "1024x1024"
  }'

Python SDK

直接使用 OpenAI 官方 openai 包,把 base_url 指向网关即可:

安装
pip install openai
app.py
from openai import OpenAI

client = OpenAI(
    api_key=class="tok-str">"your_api_key",
    base_url=class="tok-str">"https://api.llm-gateway.cn/v1",
)

resp = client.chat.completions.create(
    model=class="tok-str">"claude-opus-class="tok-num">4-class="tok-num">6",
    messages=[{class="tok-str">"role": class="tok-str">"user", class="tok-str">"content": class="tok-str">"你好"}],
    stream=True,
)
for chunk in resp:
    if chunk.choices[class="tok-num">0].delta.content:
        print(chunk.choices[class="tok-num">0].delta.content, end=class="tok-str">"", flush=True)

Node.js SDK

安装
npm install openai
app.mjs
import OpenAI from class="tok-str">"openai";

const client = new OpenAI({
  apiKey: process.env.LLM_GATEWAY_KEY,
  baseURL: class="tok-str">"https:class="tok-cmt">//api.llm-gateway.cn/v1",
});

const resp = await client.chat.completions.create({
  model: class="tok-str">"gemini-class="tok-num">3.1-pro-preview",
  messages: [{ role: class="tok-str">"user", content: class="tok-str">"用中文介绍一下 RAG" }],
});
console.log(resp.choices[class="tok-num">0].message.content);

Anthropic SDK

想保留 Anthropic 的原生消息格式(system 顶层字段、content 数组、stop_reason 等)?把官方 anthropic SDK 的 base_url 指向 https://api.llm-gateway.cn/v1/messages,模型名走我们目录的 ID (claude-opus-4-7claude-sonnet-4-6 等)。

Python 安装
pip install anthropic
claude.py
from anthropic import Anthropic

client = Anthropic(
    api_key=class="tok-str">"your_api_key",
    base_url=class="tok-str">"https://api.llm-gateway.cn/v1/messages",
)

msg = client.messages.create(
    model=class="tok-str">"claude-opus-class="tok-num">4-class="tok-num">7",
    max_tokens=class="tok-num">1024,
    messages=[{class="tok-str">"role": class="tok-str">"user", class="tok-str">"content": class="tok-str">"你好"}],
)
print(msg.content[class="tok-num">0].text)
Node.js 安装
npm install @anthropic-ai/sdk
claude.mjs
import Anthropic from class="tok-str">"@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.LLM_GATEWAY_KEY,
  baseURL: class="tok-str">"https:class="tok-cmt">//api.llm-gateway.cn/v1/messages",
});

const msg = await client.messages.create({
  model: class="tok-str">"claude-sonnet-class="tok-num">4-class="tok-num">6",
  max_tokens: class="tok-num">1024,
  messages: [{ role: class="tok-str">"user", content: class="tok-str">"用一句话解释提示缓存" }],
});
console.log(msg.content[class="tok-num">0].text);

也可直接 POST https://api.llm-gateway.cn/v1/messages(同 Anthropic 公网协议,带anthropic-version: 2023-06-01 头)。流式请求加上 stream: true, 返回的是 Anthropic 风格的 message_start / content_block_delta / message_delta 事件。

cURL / 任意语言

只要能发 HTTPS 请求,任何语言都可调用,OpenAI 与 Anthropic 两种协议任选其一:

OpenAI 协议
curl https://api.llm-gateway.cn/v1/chat/completions \
  -H "Authorization: Bearer $LLM_GATEWAY_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "gpt-5.4", "litellm_session_id": "chat-20260728-001", "messages": [{"role":"user","content":"Hi"}] }'
Anthropic 协议
curl https://api.llm-gateway.cn/v1/messages \
  -H "Authorization: Bearer $LLM_GATEWAY_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{ "model": "claude-opus-4-7", "litellm_session_id": "chat-20260728-001", "max_tokens": 1024, "messages": [{"role":"user","content":"Hi"}] }'

多轮对话请在每次请求中复用同一个 litellm_session_id;调用审计会按该值筛选并回放完整会话。 不传时仍按无会话的单次调用记录。

Claude Code CLI

Claude Code CLI 可通过 ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN接入 LLM Gateway。推荐同时设置 ANTHROPIC_MODEL,模型名填写模型广场里的 API ID。

$env:LLM_GATEWAY_KEY = "sk-your_api_key"
$env:ANTHROPIC_AUTH_TOKEN = $env:LLM_GATEWAY_KEY
$env:ANTHROPIC_BASE_URL = "https://api.llm-gateway.cn/v1/messages"
$env:ANTHROPIC_MODEL = "claude-sonnet-4-6"

claude
Windows 验证
进入 Claude Code 后运行 /status,确认 Anthropic base URL 指向网关; 再到控制台「调用日志」查看刚才的请求是否出现。

Codex / VS Code

Codex CLI 及其 VS Code 插件读取 OPENAI_BASE_URLOPENAI_API_KEY

~/.zshrc
export LLM_GATEWAY_KEY="sk-your_api_key"
export OPENAI_API_KEY="$LLM_GATEWAY_KEY"
export OPENAI_BASE_URL="https://api.llm-gateway.cn/v1"

codex
在 VS Code 中
安装 Codex 扩展后,在 settings.json 中把 codex.baseUrl 填为https://api.llm-gateway.cn/v1codex.apiKey 填入你的 Gateway Key 即可。

错误码参考

参数类型必填说明
400Bad Request
请求体格式错误、未知模型或参数不被支持。核对模型 ID 是否区分大小写。
401Unauthorized
API Key 无效、缺失或已被撤销。请前往控制台检查 Authorization 头。
402Payment Required
余额不足。到「额度」页面充值后重试。
404Not Found
Base URL 不正确。典型原因是漏写了 /v1 后缀。
429Too Many Requests
触发速率限制。建议指数退避,或把负载分散到多个模型。
500 / 502 / 504Server Error
上游模型或网关暂时不可用,建议重试或切换模型。

速率限制

每个 API Key 有独立的并发与 RPM 配额,具体额度在控制台「密钥详情」中查看。 超出配额时返回 429,响应头携带:

Response Header
X-RateLimit-Limit-Requests: 600
X-RateLimit-Remaining-Requests: 0
X-RateLimit-Reset-Requests: 12
Retry-After: 12

客户端应读取 Retry-After(秒)进行退避,再发起下一次请求。

还有问题?
任何字段或行为与 OpenAI 官方文档存在差异时,本文档为准。遇到无法解释的错误, 可以把 x-request-id 响应头发给 技术支持,我们会按单排查。