Skip to content

OpenAI 兼容接口

Team-API 对外暴露 OpenAI 兼容 API:现有基于 OpenAI SDK 或任意兼容客户端的应用,只需替换 base_urlapi_key 即可无缝迁移。

OpenAI 新版 Responses API/v1/responses,含生命周期管理)已独立成篇,见 Responses API;平台还提供 Anthropic Claude 原生接口Gemini 原生接口,供 Claude / Gemini 系客户端直连。

接入说明

项目说明
Base URLhttps://your-domain(SDK 中填 https://your-domain/v1
认证方式Authorization: Bearer sk-xxxx
API Key租户控制台「Key 管理」中签发,格式 sk- 前缀
响应格式错误响应与 OpenAI 结构一致:{"error": {"type", "message", "code"}}

最小请求示例:

bash
curl https://your-domain/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

TIP

所有 AI 代理端点共用同一套 Key。除 Authorization: Bearer 外,也接受 x-api-key(Claude 客户端习惯)与 x-goog-api-key(Gemini 客户端习惯)请求头,方便不同生态的客户端零改造接入。

接口总览

方法路径说明
POST/v1/chat/completions对话补全(支持流式 SSE)
POST/v1/completions文本补全(旧版接口)
POST/v1/embeddings文本向量嵌入
POST/v1/images/generations图像生成(同步)
POST/v1/images/generations/async图像生成(异步任务)
GET/v1/images/generations/async/{task_id}查询异步图像任务
POST/v1/images/edits图像编辑
POST/v1/audio/speech文字转语音(TTS)
POST/v1/audio/transcriptions语音转文字(STT)
POST/v1/audio/translations语音翻译
POST/v1/rerank重排序
POST/v1/moderations内容审核
POST/v1/video/generations视频生成任务提交
GET/v1/video/generations/{task_id}查询视频生成任务
GET/v1/realtime实时通信(WebSocket)
GET/v1/models获取可用模型列表
GET/v1/models/{model_id}获取模型详情

INFO

OpenAI 新版 Responses API/v1/responses 创建 / 查询 / 取消 / 删除 / 会话压缩)与对话补全相互独立,接口细节见 Responses API

对话补全

bash
POST /v1/chat/completions

请求参数

参数类型必填说明
modelstring模型名,以 /v1/models 返回或控制台配置为准
messagesarray消息数组,role 支持 system / user / assistant / tool
streambooleantrue 时以 SSE 流式返回
temperaturenumber采样温度,0 – 2
top_pnumber核采样参数
max_tokensinteger最大生成 Token 数
toolsarray工具(Function Calling)定义
tool_choicestring / object工具选择策略
response_formatobject输出格式,如 {"type": "json_object"}
stopstring / array停止序列
ninteger生成候选数量
userstring终端用户标识,用于审计追踪

多模态输入:content 传数组时可在 image_url 中携带图片(视模型能力而定)。

非流式响应

json
{
  "id": "chatcmpl-xxxx",
  "object": "chat.completion",
  "created": 1730000000,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Hello! How can I help?"},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 7,
    "total_tokens": 16
  }
}

流式响应

"stream": true 时以 text/event-stream 返回,逐块推送 chat.completion.chunk

data: {"id":"chatcmpl-xxxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-xxxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

data: {"id":"chatcmpl-xxxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

流式结束时会解析真实 usage 并完成计费结算,用量可在请求日志中查看。

文本补全(旧版)

bash
POST /v1/completions

兼容旧版 OpenAI Completions 接口,参数与响应结构对齐 OpenAI 规范(prompt + choices[].text)。新应用建议使用对话补全或 Responses API

向量嵌入

bash
POST /v1/embeddings
参数类型必填说明
modelstring嵌入模型名,如 text-embedding-3-small
inputstring / array文本或文本数组
encoding_formatstringfloat(默认)/ base64
bash
curl https://your-domain/v1/embeddings \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "Team-API 是多租户大模型 API 网关"
  }'

图像生成

同步生成

bash
POST /v1/images/generations
参数类型必填说明
modelstring图像模型名
promptstring图像描述
ninteger生成数量,默认 1
sizestring尺寸,如 1024x1024
response_formatstringurl / b64_json

异步生成

耗时较长的图像模型可走异步任务,提交后立即返回 task_id,凭 task_id 轮询结果:

bash
# 提交异步图像任务
curl -X POST https://your-domain/v1/images/generations/async \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{"model": "wanx2.1-t2i-turbo", "prompt": "一只在月球上骑自行车的熊猫"}'

# 查询任务
curl https://your-domain/v1/images/generations/async/{task_id} \
  -H "Authorization: Bearer sk-xxxx"

图像编辑

bash
POST /v1/images/edits

multipart/form-data 请求,携带原图(image)与编辑指令(prompt),参数对齐 OpenAI 图像编辑接口。

语音接口

路径说明请求格式
/v1/audio/speech文字转语音(TTS)JSON:model / input / voice / response_format
/v1/audio/transcriptions语音转文字(STT)multipart/form-datafile / model / language
/v1/audio/translations语音翻译(译为英文)multipart/form-datafile / model
bash
curl https://your-domain/v1/audio/speech \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "今天天气怎么样?",
    "voice": "alloy"
  }' \
  --output speech.mp3

重排序

bash
POST /v1/rerank

对一组文档按与查询的相关性重排,兼容 Cohere / Jina 风格请求:

json
{
  "model": "rerank-v2",
  "query": "什么是多租户隔离?",
  "documents": ["行级租户隔离……", "双独立用户体系……"],
  "top_n": 3
}

内容审核

bash
POST /v1/moderations

对输入文本进行违规内容审核,返回各类别的违规概率与判定结果:

json
{
  "model": "text-moderation-latest",
  "input": "待审核文本"
}

视频生成

视频生成为异步任务接口,提交后返回 task_id,凭 task_id 轮询状态与结果:

bash
# 提交视频生成任务
curl -X POST https://your-domain/v1/video/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{"model": "wan2.2-t2v-plus", "prompt": "城市夜景延时摄影"}'

# 查询任务
curl https://your-domain/v1/video/generations/{task_id} \
  -H "Authorization: Bearer sk-xxxx"

任务状态为 succeeded 时,响应中返回生成视频的下载地址。支持的可视频模型以控制台渠道配置为准。

实时通信(Realtime)

bash
GET /v1/realtime

WebSocket 端点,协议对齐 OpenAI Realtime API:连接后通过 JSON 事件帧双向通信(session.updateinput_audio_buffer.appendresponse.create 等)。

  • 浏览器客户端走 Subprotocol: realtime
  • 跨源浏览器连接受 REALTIME_ALLOWED_ORIGINS 环境变量白名单限制,非浏览器客户端(SDK / 服务端)不受影响;
  • 鉴权与其他端点一致,使用 Authorization: Bearer sk-xxxx

模型列表

bash
GET /v1/models
GET /v1/models/{model_id}

返回当前 Key 可用的模型列表(受租户启用、成员权限、Key 范围三层过滤):

json
{
  "object": "list",
  "data": [
    {"id": "gpt-4o-mini", "object": "model", "owned_by": "system"},
    {"id": "claude-sonnet-4-5", "object": "model", "owned_by": "system"}
  ]
}

WARNING

即使上游是 Anthropic / Gemini 渠道,只要配置了对外模型名,就会出现在该列表中 —— 模型名与渠道解耦,详见管理后台 · 渠道配置

通用响应头

响应头说明
X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-ResetKey 级限流信息(QPS / 并发限额时返回)
X-Request-Id请求唯一标识,贯穿网关日志与计费流水,排障必备
Deprecation / Sunset / Link模型标记弃用时返回下线日期与替代模型

SDK 接入示例

Python

python
from openai import OpenAI

client = OpenAI(
    base_url="https://your-domain/v1",
    api_key="sk-xxxx",
)

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)

Node.js

javascript
import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://your-domain/v1',
  apiKey: 'sk-xxxx',
})

const resp = await client.chat.completions.create({
  model: 'gpt-4o-mini',
  messages: [{ role: 'user', content: 'Hello!' }],
})
console.log(resp.choices[0].message.content)

流式调用

python
stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "写一首关于网关的诗"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

错误响应

错误结构与 OpenAI 一致:

json
{
  "error": {
    "type": "quota_error",
    "message": "insufficient quota: project budget exceeded",
    "code": "quota_project_exceeded"
  }
}

各协议错误格式的差异(OpenAI / Claude / Gemini)与完整错误码见错误码说明

基于 AGPL-3.0 许可发布