跳转到内容

自己封装请求

要自己写后端、脚本、Bot 或小工具,直接 HTTP 调模型,而不是用 Cherry / Claude Code / Cursor 这类现成客户端。

前提:

  1. 已有 Base URL 与 API Key(见 创建 API Key 与分组)
  2. 知道要用的模型名 {{MODEL_NAME}}(与定价页完全一致)
  3. 先弄清协议:见 协议说明

连通性可先跑 验证页的 curl。字段级 OpenAPI 以你网关文档为准;兼容 New API 一类网关时,下文端点与认证方式与其 AI 模型接口一致。

OpenAI 兼容调用通常把客户端 base_url / baseURL 设为:

{{API_BASE_URL}}/v1

请求头(多数 OpenAI 风格接口):

Authorization: Bearer sk-你的密钥
Content-Type: application/json

注意:

  • 不要把 .../v1/chat/completions 整段塞进 Base URL(除非你自己拼完整 URL)
  • Claude 原生接口除 Bearer 外,还需 anthropic-version;也可用 x-api-key
  • Gemini 原生可用查询参数 key= 或请求头 x-goog-api-key
  • Key 等同密码:不要写进公开仓库、截图、日志

仅列模型调用相关路径(不含后台管理接口)。服务端是否开通某能力,以你的分组 / 渠道为准。

能力 方法与路径 说明
聊天补全 POST /v1/chat/completions OpenAI Chat Completions;需 model、messages;支持 stream
Responses POST /v1/responses OpenAI Responses;支持工具、推理等
文本补全 POST /v1/completions 传统补全;需 model、prompt
Claude Messages POST /v1/messages Anthropic 格式;需 anthropic-version、max_tokens
Gemini 原生 POST /v1beta/models/{model}:{action} 如 generateContent、streamGenerateContent
Gemini 兼容 POST /v1/models/{model}:{action} /v1 前缀的 Gemini 风格
嵌入 POST /v1/embeddings 需 model、input
重排序 POST /v1/rerank 需 model、query、documents
内容审核 POST /v1/moderations 文本等安全检查
图像生成 POST /v1/images/generations 文生图
图像编辑 POST /v1/images/edits 图生图 / 编辑
语音转文字 POST /v1/audio/transcriptions Whisper 等
音频翻译 POST /v1/audio/translations 识别并译成英文文本(OpenAI 风格)
文字转语音 POST /v1/audio/speech TTS
实时语音 GET /v1/realtime(WebSocket) 如 wss://主机/v1/realtime?model=...
视频生成 POST /v1/video/generations 异步任务,返回 task_id 后再查状态
模型列表 GET /v1/models 默认 OpenAI 格式;带 Anthropic / Gemini 头时返回对应格式
模型详情 GET /v1/models/{model} 不存在时常见 model_not_found

网页游乐场专用 POST /pg/chat/completions 依赖登录会话,不适合自己封装的服务端调用,请用 /v1/...。

POST {{API_BASE_URL}}/v1/chat/completions

常见字段:model、messages(必填);temperature、top_p、max_tokens / max_completion_tokens、stream、tools 等可选。

curl {{API_BASE_URL}}/v1/chat/completions \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "messages": [
      {"role": "user", "content": "你好,请只回复:配置成功"}
    ]
  }'

成功时响应大致为 OpenAI 风格:choices[0].message.content,并带 usage。错误体常见:

{
  "error": {
    "message": "...",
    "type": "...",
    "code": "..."
  }
}

HTTP 400 / 401 / 429 等含义见 FAQ。

POST {{API_BASE_URL}}/v1/responses — Codex 等新链路常用。

curl {{API_BASE_URL}}/v1/responses \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "input": "你好,请只回复:配置成功"
  }'

POST {{API_BASE_URL}}/v1/messages — 需 anthropic-version;max_tokens 必填。

curl {{API_BASE_URL}}/v1/messages \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "x-api-key: sk-你的密钥" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "你好"}]
  }'

Python(Anthropic SDK):

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-你的密钥",
    base_url="{{API_BASE_URL}}",
)
msg = client.messages.create(
    model="{{MODEL_NAME}}",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
)
print(msg.content)
curl "{{API_BASE_URL}}/v1beta/models/{{MODEL_NAME}}:generateContent?key=sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{"contents":[{"parts":[{"text":"你好"}]}]}'

流式可用 :streamGenerateContent?alt=sse。

curl {{API_BASE_URL}}/v1/embeddings \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "input": "要向量化的文本"
  }'
curl {{API_BASE_URL}}/v1/images/generations \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "prompt": "一只在月球上的猫,插画风",
    "n": 1,
    "size": "1024x1024"
  }'
curl {{API_BASE_URL}}/v1/rerank \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "query": "什么是向量数据库",
    "documents": ["文档 A …", "文档 B …"],
    "top_n": 3
  }'
curl {{API_BASE_URL}}/v1/models \
  -H "Authorization: Bearer sk-你的密钥"
wss://你的主机/v1/realtime?model=gpt-4o-realtime

鉴权可用 Bearer,或按网关说明使用 WebSocket 子协议传 Key。这是双向实时通道,不是普通 REST POST。

# 创建任务
curl {{API_BASE_URL}}/v1/video/generations \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL_NAME}}",
    "prompt": "海浪拍打礁石,电影感"
  }'
# 响应示例:{"task_id":"...","status":"queued"}
# 再用网关提供的 GET 状态接口轮询
  • Chat Completions:"stream": true,响应为 SSE(data: {...} 行,结束常见 data: [DONE])
  • 自封装时请按行解析,不要当整段 JSON JSON.parse 一次
  • 反向代理 / CDN 可能缓冲 SSE,需关闭缓冲或设合适超时
  • Responses / Claude / Gemini 的流式字段与事件名不同,按对应协议解析
  1. Base URL 是否为 {{API_BASE_URL}} 或 {{API_BASE_URL}}/v1(按协议)
  2. Key 是否完整、已启用、分组含该模型
  3. 模型名是否与定价页一致
  4. Claude 是否带了 anthropic-version
  5. 流式客户端是否按 SSE 读

仍失败时对照 FAQ 与 协议说明。