Skip to content

兼容协议

网关同时对外暴露三套主流协议入口,客户端可以用各自熟悉的 SDK 接入。网关内部会按需把客户端协议转换为上游渠道的协议(例如客户端用 Claude 协议,上游是 OpenAI 渠道时自动转换)。

OpenAI 协议

最常用,入口在 /v1 前缀下。直接把 base_url 指向 https://your-platform.example.com/v1,用 Authorization: Bearer sk-... 认证。

python
from openai import OpenAI
client = OpenAI(api_key="sk-your-key",
                base_url="https://your-platform.example.com/v1")
client.chat.completions.create(model="gpt-4o", messages=[...])

支持 /chat/completions/completions/responses/images/generations

Claude(Anthropic Messages)协议

入口为 POST /v1/messages,认证使用 x-api-key,与 Anthropic SDK 兼容。

python
import anthropic
client = anthropic.Anthropic(
    api_key="sk-your-key",
    base_url="https://your-platform.example.com",
)
client.messages.create(
    model="claude-sonnet-4",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
)

TIP

即使后端上游是 OpenAI 类型渠道,只要平台为该模型配置了渠道,网关也能把 Claude 协议请求转换过去。具体可用模型以平台配置为准。

Gemini 协议

入口为 POST /v1beta/models/{model}:{action}(也支持 /v1/models/...),认证使用查询参数 ?key=sk-...,与 Google 官方 SDK 的调用形式一致。

bash
curl "https://your-platform.example.com/v1beta/models/gemini-pro:generateContent?key=sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{ "parts": [{ "text": "你好" }] }]
  }'

其中 {action} 通常是 generateContentstreamGenerateContent

认证方式对照

不同协议的客户端习惯不同的密钥传递方式,网关三种都接受,互不冲突:

协议习惯方式网关请求头/参数
OpenAIBearer TokenAuthorization: Bearer sk-...
ClaudeAPI Key 头x-api-key: sk-...
GeminiURL 参数?key=sk-...

你也可以混用,例如用 Bearer 调 Claude 端点,只要密钥有效即可。

协议转换说明

  • 网关根据请求入口判断客户端协议,根据目标模型所在渠道的类型判断上游协议;
  • 两者不一致时执行转换(请求体与响应体双向转换,包括流式);
  • 计费始终以最终命中的真实模型与其 usage 为准,与使用哪套协议无关。

基于 MIT 协议发布(社区版)