• 与 OpenAI Chat Completions 完全兼容,是最通用的对话入口
  • 流式与非流式是同一个接口,区别只在请求体的 stream 字段
  • 默认流式返回,收到 data: [DONE] 结束;传 stream: false 则一次返回完整结果
POST/v1/chat/completions

认证

string必填

所有接口均使用 Bearer Token 进行认证。 获取 API Key:访问控制台 创建。 请求时在请求头中添加: ``http Authorization: Bearer YOUR_OAIRoute_KEY ``

请求参数

string必填

模型 ID。可先调用模型列表接口获取当前可用清单。

array必填

对话消息数组,按时间顺序排列。每个元素的结构见下列字段。

string必填

消息角色。取值 system 系统提示、user 用户输入、assistant 模型回复、tool 工具返回。

string必填

消息正文。多模态时可传内容块数组,元素含 type 与对应字段。

string可选

参与者名称,用于区分同一角色下的多个说话人。

string可选

role 为 tool 时必填,指向对应的工具调用 ID。

boolean可选

是否流式返回。默认 true,以 SSE 事件流逐块返回;传 false 则一次返回完整响应。两种模式共用同一套参数,只有响应形态不同。

boolean可选

是否在流的最后追加一条 usage 统计。

number可选

采样温度,取值 0 到 2。数值越低输出越确定。

number可选

核采样阈值,取值 0 到 1。建议不要与 temperature 同时调整。

integer可选

生成的最大 token 数。不同模型的上限不同,超出会被截断。

string | array可选

停止标记。命中其一即结束生成,且标记本身不计入输出。

number可选

存在惩罚,取值 -2 到 2。正值鼓励引入新话题。

number可选

频率惩罚,取值 -2 到 2。正值抑制重复用词。

integer可选

随机种子。相同种子与相同参数结果相近,但不保证完全一致。

array可选

可用工具清单,结构与 OpenAI 一致。

string必填

固定为 function。

string必填

函数名,模型会以此为标识发起调用。

string可选

函数用途说明。写得越清楚,模型选错的概率越低。

object必填

参数的 JSON Schema。

string | object可选

工具选择策略。auto 由模型决定,none 禁止调用,也可指定某个函数。

string可选

输出格式约束。text 为普通文本,json_object 要求返回合法 JSON。

integer可选

生成几条候选回复,默认 1。流式下固定为 1。

string可选

终端用户标识,用于按用户维度的统计与风控。

响应

stream: false 时返回单个完整对象,choices[].message 一次给全;stream: true 时返回 SSE 事件流,每个事件是一个 chat.completion.chunk,choices[].delta 只带增量。

string可选

本次请求的唯一标识。

string可选

流式为 chat.completion.chunk,非流式为 chat.completion,可按它判断该按哪种结构解析。

integer可选

生成时间戳,Unix 秒。

string可选

实际使用的模型。

array可选

候选回复数组。

integer可选

候选序号,从 0 开始。

object可选

流式增量对象,每个事件只带变化的部分,正文在 delta.content。非流式下不出现。

object可选

非流式完整回复,含 role 与 content,替代流式里的 delta。

string可选

结束原因。stop 正常结束,length 触达长度上限,tool_calls 发起工具调用,content_filter 被内容策略拦截。流式下在最后一个事件出现。

integer可选

输入 token 数。

integer可选

输出 token 数。

integer可选

两者之和。

流式返回示例

不传 stream 或传 stream: true 时,服务端以 SSE 逐块推送。每块是一个 chat.completion.chunk,正文在 delta.content 里,按顺序拼起来就是完整回复。

data: {"id":"chatcmpl-01KA","object":"chat.completion.chunk","created":1763088289,"model":"YOUR_MODEL_ID","choices":[{"index":0,"delta":{"role":"assistant","content":"你"},"finish_reason":null}]}
data: {"id":"chatcmpl-01KA","object":"chat.completion.chunk","created":1763088289,"model":"YOUR_MODEL_ID","choices":[{"index":0,"delta":{"content":"好"},"finish_reason":null}]}
data: {"id":"chatcmpl-01KA","object":"chat.completion.chunk","created":1763088289,"model":"YOUR_MODEL_ID","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]

每条 data: 后是一个完整 JSON,行与行之间以空行分隔。收到 data: [DONE] 表示流已结束,此时不要再等待更多数据。

非流式返回示例

传 stream: false 时一次返回完整对象,正文在 choices[0].message.content,object 为 chat.completion。适合后台任务、批处理与结构化抽取,不必处理分块拼装。

{
  "id": "chatcmpl-01KA040M0HP1GJWBJYZMKX1XS1",
  "object": "chat.completion",
  "created": 1763088289,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!有什么可以帮你的?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

非流式需要等模型输出完才返回,长文本时客户端等待更久。对首字延迟敏感的聊天界面建议用流式,其余场景用非流式更省事。

支持的模型列表

想按上下文长度、价格或能力标签挑选模型,可查阅 模型列表元数据接口,或直接读取 GET /api/pricing。

流式与非流式怎么选

两种模式的数据一样,区别在传输节奏与等待方式。按场景选即可,不需要为它换接口或换 SDK。

场景推荐关键构造
聊天界面、需要首字尽快出现流式不传 stream,逐块渲染 delta.content
后台任务、批量处理非流式传 "stream": false,直接读 message.content
结构化抽取、要解析 JSON非流式stream: false + response_format 为 json_object
边收边展示、最后再落库流式拼接 delta 得到全文后写入

使用示例

以下几种最常见的用法都基于同一个接口,差别只在 messages 的构造方式和 stream 参数。完整可复制的请求体见右侧代码栏,切换上方的场景页签即可对应查看。

场景关键构造对应右栏页签
基础对话<span class="cell-sub">单轮问答、摘要、翻译</span>只放一条 role: user 的消息基础对话
系统提示词<span class="cell-sub">设定模型身份与输出约束</span>在 messages 最前面加一条 role: system系统提示词
多轮对话<span class="cell-sub">需要模型接上文回答</span>把历史消息按时间顺序整体放进 messages多轮对话
流式输出<span class="cell-sub">聊天界面等首字要快</span>不传或传 "stream": true,响应变为 SSE 事件流流式输出
非流式输出<span class="cell-sub">一次性拿到完整结果</span>传 "stream": false,直接读 choices[0].message.content非流式输出
工具调用<span class="cell-sub">让模型调用你自己的函数</span>传 tools 声明函数,模型返回 tool_calls函数调用
结构化输出<span class="cell-sub">要求返回可解析的 JSON</span>设置 response_format 为 json_object结构化输出
图片输入<span class="cell-sub">让模型看图回答</span>content 传内容块数组,含 image_url图片输入

接口本身不保存会话状态,每一轮都要把完整历史重新提交。历史越长,每轮消耗的输入 token 越多,长期会话建议在客户端做摘要,只保留最近若干轮加一份摘要。

错误

HTTPtype说明
400invalid_request_error参数格式错误,或模型不支持某个字段
401authentication_errorKey 缺失或无效
402payment_required余额不足
429rate_limit_error触发限流,降低并发或稍后重试