开发文档
LLM Gateway 同时兼容 OpenAI 与 Anthropic 协议,一个 Key 即可访问 130+ 主流大模型。 本页是完整的接口参考,所有代码片段都可一键复制。
概览
LLM Gateway 是一条聚合接入多家模型厂商的统一推理通道,同时兼容 OpenAI 的/v1/chat/completions 与 Anthropic 的 /v1/messages 协议。任何能接受自定义base_url 的 SDK 或 HTTP 客户端(OpenAI SDK、Anthropic SDK、Claude Code CLI 等), 都可以零代码改动切换到本网关。
下面三种集成方式选一种开始:
任何能发 HTTPS 请求的语言都能直接调用。
查看示例 →OpenAI 与 Anthropic 官方 SDK 都可直接接入,只需改一行 base_url。
查看 SDK →Claude Code、Codex、VS Code 等终端 Agent 一键接入。
查看配置 →快速开始
三步走:拿到 Key、指向 Base URL、发一次请求。
1. 获取 API Key
- 打开 API Keys 控制台,登录或注册账号。
- 点击「创建密钥」,命名后复制生成的
sk-...字符串。 - 在「额度」页面充值,确保账户有可用余额。
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": "你好" }]
}'成功响应长这样:
{
"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 URL | string | 是 | https://api.llm-gateway.cn/v1 |
协议 | HTTPS | 是 | 所有流量强制 TLS 1.2+。 |
编码 | UTF-8 | 是 | 请求 / 响应统一 UTF-8。 |
Content-Type | application/json | 是 | 除流式响应为 text/event-stream 外均为 JSON。 |
鉴权
所有接口通过 HTTP Authorization 请求头携带 Bearer Token 鉴权:
Authorization: Bearer your_api_keyKey 与账户强绑定,可在控制台随时轮换。推荐在服务端将 Key 放入环境变量, 通过后端代理请求,不要将 Key 下发到浏览器或移动端。
对话补全
LLM Gateway 的核心接口,schema 与 OpenAI 完全一致。
https://api.llm-gateway.cn/v1/chat/completions请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | |
messages | array | 是 | 对话消息数组,每条包含 role(system/user/assistant/tool)与 content。 |
temperature | number | 否 | 采样温度,0–2。值越大输出越发散。 默认值: 1 |
max_tokens | integer | 否 | 输出 token 上限。推理类模型的隐藏思考 token 会占用该额度, 若上限过低可能返回空 content 且 finish_reason="length"。 |
stream | boolean | 否 | 设为 true 时响应为 SSE 流式增量。详见 流式输出。默认值: false |
tools / tool_choice | object | 否 | 函数调用,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
}'响应结构
{
"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)chunk.id,断线后重建连接并忽略已展示的 token,避免重复输出。函数调用
通过 tools 字段声明可调用的函数集合,模型返回 tool_calls 后由你的业务代码执行再把结果回传:
{
"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"
}模型列表
https://api.llm-gateway.cn/v1/models返回当前账号可用的模型清单,结构与 OpenAI 一致:
{
"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" }
]
}图像生成
https://api.llm-gateway.cn/v1/images/generations400。| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 例如 dall-e-3、gpt-image-1。 |
prompt | string | 是 | 图像描述文本。 |
size | string | 否 | 如 1024x1024、1792x1024。默认值: 1024x1024 |
n | integer | 否 | 生成张数。 默认值: 1 |
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 openaifrom 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 openaiimport 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-7、claude-sonnet-4-6 等)。
pip install anthropicfrom 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)npm install @anthropic-ai/sdkimport 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 两种协议任选其一:
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"}] }'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_URL 与 ANTHROPIC_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/status,确认 Anthropic base URL 指向网关; 再到控制台「调用日志」查看刚才的请求是否出现。Codex / VS Code
Codex CLI 及其 VS Code 插件读取 OPENAI_BASE_URL 与 OPENAI_API_KEY:
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"
codexsettings.json 中把 codex.baseUrl 填为https://api.llm-gateway.cn/v1,codex.apiKey 填入你的 Gateway Key 即可。错误码参考
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
400 | Bad Request | 否 | 请求体格式错误、未知模型或参数不被支持。核对模型 ID 是否区分大小写。 |
401 | Unauthorized | 否 | API Key 无效、缺失或已被撤销。请前往控制台检查 Authorization 头。 |
402 | Payment Required | 否 | 余额不足。到「额度」页面充值后重试。 |
404 | Not Found | 否 | Base URL 不正确。典型原因是漏写了 /v1 后缀。 |
429 | Too Many Requests | 否 | 触发速率限制。建议指数退避,或把负载分散到多个模型。 |
500 / 502 / 504 | Server Error | 否 | 上游模型或网关暂时不可用,建议重试或切换模型。 |
速率限制
每个 API Key 有独立的并发与 RPM 配额,具体额度在控制台「密钥详情」中查看。 超出配额时返回 429,响应头携带:
X-RateLimit-Limit-Requests: 600
X-RateLimit-Remaining-Requests: 0
X-RateLimit-Reset-Requests: 12
Retry-After: 12客户端应读取 Retry-After(秒)进行退避,再发起下一次请求。
x-request-id 响应头发给 技术支持,我们会按单排查。