SupaNexus

示例中的 <BASE_URL> 请从 接入点 选择并替换。

POST /v1/chat/completions 请求参数说明。

必需

参数类型说明
modelstringGET /v1/models 中的模型 id
messagesarrayOpenAI 聊天消息;content 可为字符串,也可为 content part 数组(文本 + 图片 / 视频等)

常用可选参数

SupaNexus 在模型支持范围内 透传 OpenAI 标准参数。可用性取决于模型 — 见模型对象的 supported_parameters

参数类型说明示例
streamboolean是否逐字流式返回;聊天界面通常设为 true,批处理可设为 false"stream": true
temperaturenumber随机程度:越高越发散、越有创意;越低越稳定、越可重复。日常对话常用 0.7,事实问答可降到 00.3"temperature": 0.7
top_pnumber另一种控制随机性的方式(核采样),一般与 temperature 二选一微调即可"top_p": 0.9
max_tokensinteger回复长度上限(token 数),防止一次生成过长或超出预算"max_tokens": 1024
frequency_penaltynumber少重复同一用词:越高越不爱「车轱辘话」"frequency_penalty": 0.5
presence_penaltynumber鼓励聊新内容:越高越不容易一直卡在同一个话题上"presence_penalty": 0.3
stopstring 或 array模型生成到这些停止词时结束;可用来截断列表、段落等"stop": ["\n\n", "END"]
toolsarray告诉模型可以调用哪些函数(如查天气、查订单);需模型支持 Function Calling见下方示例
tool_choicestring 或 object是否必须调工具:"auto" 由模型决定,"none" 禁止,"required" 必须调"tool_choice": "auto"
response_formatobject要求模型按指定格式输出,例如只要合法 JSON"response_format": {"type": "json_object"}
userstring终端用户 id(你的 App 里每个用户的标识),便于滥用追踪;OpenAI 模型还可提高 Prompt Cache 命中率"user": "user-42"

tools 示例(简化):

"tools": [
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "查询指定城市的当前天气",
      "parameters": {
        "type": "object",
        "properties": {
          "city": { "type": "string", "description": "城市名,如 上海" }
        },
        "required": ["city"]
      }
    }
  }
]

多模态输入

当模型支持视觉或视频时,messages[].content 可为 content part 数组(OpenAI 兼容格式)。

先通过 GET /v1/models 确认 architecture.input_modalities:含 "image" 可发图,含 "video" 可发视频。纯文本模型(仅 ["text"])不接受媒体。

图片(image_url

URL 图片示例

{
  "model": "google/gemini-2.5-flash",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "请描述这张图片的内容"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://example.com/photo.jpg"
          }
        }
      ]
    }
  ]
}

Base64 图片示例

image_url.url 设为 data URI:

{
  "type": "image_url",
  "image_url": {
    "url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
  }
}

Base64 会使请求体体积膨胀约 33%。默认请求体上限为 64 MB,超限返回 413error.code = request_too_large)。大图建议使用公网可访问的 URL。

视频(video_url

input_modalities 包含 "video"(例如 minimax/minimax-m3moonshot/kimi-k2.6)时,可使用 video_url content part。

Whale 第一版约定

允许不允许
公网 http:// / https:// 视频 URL(上游自行拉取)data:(base64)、file://blob:、厂商私有引用(如 mm_file://ms://

非法 video_url 网关返回 400,不会转发到上游。视频勿用 data URI 过网关,以免占用平台带宽。

公网视频 URL 示例

{
  "model": "minimax/minimax-m3",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "总结这个视频的主要内容"},
        {
          "type": "video_url",
          "video_url": {
            "url": "https://example.com/demo.mp4",
            "detail": "default"
          }
        }
      ]
    }
  ]
}

部分上游还支持 fps 等抽帧字段,在模型支持范围内会透传。

限制:Anthropic 上游模型

用 OpenAI 客户端(POST /v1/chat/completions)调用 anthropic/* 时,网关会做协议转换并将消息压成纯文本,图片会被静默丢弃且不报错。发图请用 POST /v1/messages

建议:发图时客户端协议与上游一致——anthropic/*/v1/messages,其余用 /v1/chat/completions

请求处理说明

识别的字段

  • model — 本次调用的模型 id
  • stream — 是否返回 SSE 流式响应

流式 usage

stream: true 时,响应末尾可能包含 usage 对象(取决于模型支持情况)。

其它参数

请求体中其余 JSON 字段在体积限制内按 OpenAI 兼容方式处理。

请求体大小限制

默认最大 64 MBGATEWAY_OPENAPI_MAX_REQUEST_BODY_BYTES)。

超限返回 413error.coderequest_too_large。大图可用 data URI;大视频必须用公网 URL,不要把视频 base64 塞进请求体。

模型默认参数

GET /v1/models 中的 default_parameters 为建议默认值,客户端可在请求中覆盖。

相关