接口说明
POST /v1/chat/completions 通用协议
接口地址
POST /v1/chat/completions请求体、响应体格式与 OpenAI 官方 Chat Completions 接口保持一致,支持非流式和流式(SSE)两种调用方式。
全部对话模型(glm、qwen、deepseek、minimax、doubao 等系列)共用本页协议,当前可用模型见模型列表。GPT 系列上游为 OpenAI 官方实现,支持完整的 OpenAI 参数集(多模态输入、结构化输出、工具调用等);Gemini 系列经协议转换接入,参数支持有差异;推理模型(DeepSeek-R1 系列)与通用协议的差异见推理模型。
请求参数
平台处理的字段
以下字段会被平台读取或改写,行为如下:
| 字段 | 类型 | 必填 | 平台行为 |
|---|---|---|---|
model | string | 是 | 缺失或为空 → 400 invalid_request;不在该 key 的模型白名单内 → 403 model_not_allowed;平台没有该模型 → 404 model_not_found |
messages | array | 是 | 必须为非空数组;单条消息的 content 支持字符串或多模态数组(多模态数组中平台取其中的 text 块用于估算用量);缺失或不合法 → 400 invalid_request |
stream | boolean | 否,默认 false | 为 true 时走 SSE 流式响应 |
max_tokens | integer | 否 | 参与请求发起前的费用预扣估算 |
stream_options | object | 否 | 流式请求下,平台会自动注入 include_usage: true(与你传入的值合并),使流的末尾必定返回 usage |
透传参数
以下参数上游网关已适配,平台原样透传;具体是否生效、取值边界仍以所选模型的实际行为为准:
| 参数 | 类型 | 说明 |
|---|---|---|
temperature | float | 采样温度,取值 [0, 2) |
top_p | float | 核采样概率阈值,取值 (0, 1] |
max_completion_tokens | int | 生成最大 Token 数(含推理 Token),上游优先于 max_tokens 读取;注意平台的预扣估算只读 max_tokens |
n | int | 生成候选回复数量 |
stop | array | 停止生成的字符串列表 |
seed | int | 随机种子,用于提升可复现性 |
presence_penalty | float | 存在惩罚,取值 [-2, 2] |
tools | array | 可调用的工具列表 |
tool_choice | string/object | 工具调用策略:"auto" / "none" 等 |
response_format | object | 输出格式约束,如 {"type": "json_object"} |
本表未列出的其他参数同样原样透传,是否生效取决于所选模型的上游实现,平台不做额外处理。
messages 结构
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
role | string | 是 | 角色:system / developer / user / assistant / tool |
content | string | 是 | 消息文本内容 |
| 角色 | 说明 |
|---|---|
system | 系统指令,设定模型行为(如人格、约束、输出格式) |
user | 用户输入 |
assistant | 模型回复(用于多轮对话历史) |
tool | 工具执行结果(需配合 tool_call_id) |
多轮对话示例:
{
"model": "qwen-plus",
"messages": [
{"role": "system", "content": "你是一个有帮助的 AI 助手"},
{"role": "user", "content": "什么是量子计算?"},
{"role": "assistant", "content": "量子计算是利用量子力学原理进行信息处理的计算方式..."},
{"role": "user", "content": "它和经典计算有什么区别?"}
],
"temperature": 0.7,
"max_tokens": 2048
}响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 请求唯一标识 |
object | string | 对象类型:非流式 "chat.completion",流式 "chat.completion.chunk" |
created | int64 | 创建时间戳(Unix 秒) |
model | string | 平台会尽力改写为你请求时使用的平台模型名 |
choices[].index | int | 选项索引 |
choices[].message | object | 回复消息(非流式);role 固定为 "assistant",content 为回复文本 |
choices[].delta | object | 增量消息(流式,字段同 message) |
choices[].finish_reason | string | 结束原因:"stop" / "length" / "tool_calls" |
usage.prompt_tokens | int | 输入 Token 数 |
usage.completion_tokens | int | 输出 Token 数 |
usage.total_tokens | int | 总 Token 数 |
非流式响应样例:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1779964861,
"model": "qwen-plus",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "人工智能(AI)是计算机科学的一个分支,致力于创建能够模拟人类智能行为的系统。"
},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 15, "completion_tokens": 42, "total_tokens": 57}
}流式响应
stream: true 时,响应为标准 SSE:每个事件以 data: 开头,内容为一个 JSON chunk;末尾以 data: [DONE] 结束。由于平台强制注入 stream_options.include_usage: true,流的最后一个 chunk(choices 为空数组)会携带完整的 usage 字段。平台会尽力将响应中的 model 字段改写为你请求时使用的平台模型名;个别数据块不含该字段时,平台会原样透传。
data: {"id":"chatcmpl-ghi789","object":"chat.completion.chunk","created":1779964861,"model":"qwen-plus","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
data: {"id":"chatcmpl-ghi789","object":"chat.completion.chunk","created":1779964861,"model":"qwen-plus","choices":[{"index":0,"delta":{"content":"春"},"finish_reason":null}]}
...
data: {"id":"chatcmpl-ghi789","object":"chat.completion.chunk","created":1779964861,"model":"qwen-plus","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"chatcmpl-ghi789","object":"chat.completion.chunk","created":1779964861,"model":"qwen-plus","choices":[],"usage":{"prompt_tokens":12,"completion_tokens":86,"total_tokens":98}}
data: [DONE]请求示例
curl https://api.looptoken.cc/v1/chat/completions \
-H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-N \
-d '{
"model": "qwen-plus",
"messages": [{"role": "user", "content": "数到5"}],
"stream": true
}'非流式请求的示例见快速开始。
计费
Chat 接口按 token 计费,输入(prompt)与输出(completion)token 分别计价,各模型价格见模型列表。流式与非流式请求均在响应中返回本次调用的 usage(流式响应体现在末尾 chunk)。
错误
| 状态码 | code | 触发场景 |
|---|---|---|
| 402 | insufficient_credits | 账户余额不足以覆盖预扣费用 |
| 403 | model_not_allowed | 请求的 model 不在该 API Key 的模型白名单内 |
| 404 | model_not_found | 平台没有该模型 |
| 502 | upstream_error | 上游返回错误,或重试耗尽 |
| 503 | no_available_channel | 该模型当前没有可用渠道 |
完整错误响应体格式与更多错误码见错误码。