Claude 与 Gemini 协议适配
除了 OpenAI 兼容,网关还原生适配 Anthropic Claude 与 Google Gemini 的协议,方便把已有的原生 SDK 直接指向本站。
Claude(Anthropic Messages)
接口:POST https://ai.moespark.dev/v1/messages,请求体沿用 Anthropic 规范。
curl https://ai.moespark.dev/v1/messages \
-H "x-api-key: sk-你的令牌" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet",
"max_tokens": 512,
"system": "你是一个严谨的助手。",
"messages": [{"role": "user", "content": "解释一下 REST 与 RPC 的区别"}]
}'
主要字段:model、max_tokens(必填)、system、messages、temperature、stream、tools。响应为 Anthropic 的 content 块数组。
# Anthropic 官方 SDK
from anthropic import Anthropic
client = Anthropic(api_key="sk-...", base_url="https://ai.moespark.dev")
msg = client.messages.create(
model="claude-3-5-sonnet", max_tokens=256,
messages=[{"role": "user", "content": "你好"}],
)
print(msg.content[0].text)
Gemini(generateContent)
接口:POST https://ai.moespark.dev/v1beta/models/<model>:generateContent?key=sk-...
curl "https://ai.moespark.dev/v1beta/models/gemini-1.5-pro:generateContent?key=sk-你的令牌" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "用三句话介绍量子计算"}]}
],
"generationConfig": {"temperature": 0.7, "maxOutputTokens": 300}
}'
流式用 :streamGenerateContent;多轮把历史放进 contents,role 取 user/model。
协议差异速览
| 维度 | OpenAI | Claude | Gemini |
|---|---|---|---|
| 鉴权头 | Authorization: Bearer | x-api-key | ?key= |
| 对话路径 | /v1/chat/completions | /v1/messages | /v1beta/models/...:generateContent |
| 系统提示 | role=system 消息 | 顶层 system 字段 | systemInstruction |
| 输出长度 | max_tokens(可选) | max_tokens(必填) | generationConfig.maxOutputTokens |
| 流式 | stream=true | stream=true | 流式方法路径 |
提示
选择哪套协议只看你的现有代码。三套都可指向同一个令牌、同一套额度;网关负责在内部转换到上游真实协议。