New API 手册 / OpenAI 兼容接口

OpenAI 兼容接口

网关完整兼容 OpenAI 的 REST 形状,绝大多数 OpenAI SDK / 工具改 base_url 即可直接用。

对话补全 /v1/chat/completions

最核心的接口。关键请求参数:

参数类型说明
modelstring模型名,必填
messagesarray消息数组,含 role(system/user/assistant/tool) 与 content
temperaturenumber0–2,越大越发散,默认 1
top_pnumber核采样,与 temperature 二选一调节
max_tokensint限制输出长度
streambooltrue 时以 SSE 流式返回
stopstring/array遇到即停止生成
toolsarray函数/工具定义(function calling)
tool_choicestring/object是否强制调用工具
response_formatobject如 {type:'json_object'} 结构化输出
presence_penalty / frequency_penaltynumber话题新鲜度 / 重复惩罚
seedint尽量可复现(视上游支持)
curl https://ai.moespark.dev/v1/chat/completions \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "写一句 slogan"}],
    "temperature": 0.8,
    "max_tokens": 64
  }'

流式输出(stream=true)

流式返回是一串 data: 行(SSE),以 data: [DONE] 结束。逐块读取 choices[0].delta.content 拼接即可。

import openai
client = openai.OpenAI(api_key="sk-...", base_url="https://ai.moespark.dev/v1")
stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "讲个长一点的故事"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta
    if delta and delta.content:
        print(delta.content, end="", flush=True)
注意
SSE 需要客户端保持长连接;反向代理需关闭缓冲。本站 nginx 已对 AI 路径关闭 proxy_buffering。

其它 OpenAI 风格接口

接口用途
POST /v1/completions传统文本补全(面向 base 模型)
POST /v1/embeddings文本向量化,输入文本数组,返回向量
POST /v1/images/generations文生图(若渠道支持)
POST /v1/audio/transcriptions语音转写(Whisper 类)
POST /v1/audio/speech文本转语音
POST /v1/moderations内容审核
POST /v1/rerank重排序(配合检索使用)
GET /v1/models列出可用模型

多模态(图片输入)

用 content 数组承载文本与图片(URL 或 base64):

{
  "model": "gpt-4o-mini",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "这张图里是什么?"},
      {"type": "image_url", "image_url": {"url": "https://example.com/a.png"}}
    ]
  }]
}

函数调用(tools)

定义工具后,模型可能返回 tool_calls;你执行函数再把结果以 role:"tool" 回传。详见 高级用法。