跳转到内容
返回主站

Chat Completions

根据提供的对话上下文生成模型回复,是零派智能业务平台中最常用的接口。支持流式和非流式两种响应模式,完全兼容 OpenAI 格式。

Endpoint

POST /v1/chat/completions

Method

POST

Authentication

需要 Bearer Token 认证:

Authorization: Bearer $API_KEY

Request Headers

Header是否必需说明
Authorization是Bearer <API_KEY>
Content-Type是application/json

Request Body

参数类型是否必需说明
modelstring是模型标识,如 gpt-4o、gpt-4o-mini,通过 /v1/models 获取
messagesarray是对话消息数组,包含完整的对话上下文
temperaturenumber否采样温度,范围 0-2,默认 1。值越高输出越随机
top_pnumber否核采样概率,默认 1。与 temperature 二选一
max_tokensinteger否生成 token 数量上限
streamboolean否是否流式返回,默认 false
ninteger否生成候选回复数量,默认 1
stopstring | array否停止生成的标记
presence_penaltynumber否存在惩罚,范围 -2 到 2,默认 0
frequency_penaltynumber否频率惩罚,范围 -2 到 2,默认 0
response_formatobject否指定输出格式,如 {"type": "json_object"}

messages 数组

每个消息对象包含以下字段:

字段类型说明
rolestring消息角色:system、user、assistant、tool
contentstring | array消息内容,可以是字符串或多模态数组

请求示例

{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "你是一个有帮助的助手。"
},
{
"role": "user",
"content": "用一句话介绍零派智能。"
}
],
"temperature": 0.7,
"max_tokens": 1000
}

Response

非流式响应返回一个 JSON 对象:

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1699999999,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "零派智能业务平台一个兼容 OpenAI 格式的 AI 模型聚合平台。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 20,
"total_tokens": 45
}
}

响应字段说明

字段类型说明
idstring本次请求的唯一标识
objectstring固定为 chat.completion
createdinteger响应创建时间(Unix 时间戳)
modelstring实际使用的模型标识
choicesarray生成的候选回复数组
usageobjecttoken 用量统计

choices 数组

字段类型说明
indexinteger候选回复索引
messageobject回复消息,包含 role 和 content
finish_reasonstring结束原因:stop、length、content_filter、tool_calls

usage 对象

字段类型说明
prompt_tokensinteger输入 token 数
completion_tokensinteger输出 token 数
total_tokensinteger总 token 数

Streaming

将 stream 设置为 true 即可启用流式响应。响应以 SSE(Server-Sent Events)格式返回,每个 chunk 包含部分生成内容。

流式响应格式:

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1699999999,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1699999999,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":"New"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1699999999,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":" API"},"finish_reason":null}]}
data: [DONE]

流式响应以 data: [DONE] 标记结束。详见 Streaming。

错误码

状态码说明
400请求参数错误
401API Key 无效或缺失
403无权限访问该模型
404模型不存在
429请求频率超限
500服务器内部错误
502上游网关错误
503服务不可用

详见 Errors。

代码示例

import { Tabs, TabItem } from ‘@astrojs/starlight/components’;

Terminal window
curl "$BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$MODEL"'",
"messages": [
{
"role": "system",
"content": "你是一个有帮助的助手。"
},
{
"role": "user",
"content": "用一句话介绍零派智能。"
}
],
"temperature": 0.7,
"max_tokens": 1000
}'
import os
import requests
base_url = os.environ.get("BASE_URL")
api_key = os.environ.get("API_KEY")
model = os.environ.get("MODEL", "gpt-4o-mini")
response = requests.post(
f"{base_url}/v1/chat/completions",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
},
json={
"model": model,
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "用一句话介绍零派智能。"},
],
"temperature": 0.7,
"max_tokens": 1000,
},
)
result = response.json()
print(result["choices"][0]["message"]["content"])
const baseURL = process.env.BASE_URL;
const apiKey = process.env.API_KEY;
const model = process.env.MODEL || "gpt-4o-mini";
const response = await fetch(`${baseURL}/v1/chat/completions`, {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model,
messages: [
{ role: "system", content: "你是一个有帮助的助手。" },
{ role: "user", content: "用一句话介绍零派智能。" },
],
temperature: 0.7,
max_tokens: 1000,
}),
});
const result = await response.json();
console.log(result.choices[0].message.content);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
func main() {
baseURL := os.Getenv("BASE_URL")
apiKey := os.Getenv("API_KEY")
model := os.Getenv("MODEL")
if model == "" {
model = "gpt-4o-mini"
}
payload, _ := json.Marshal(map[string]interface{}{
"model": model,
"messages": []map[string]string{
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "用一句话介绍零派智能。"},
},
"temperature": 0.7,
"max_tokens": 1000,
})
req, _ := http.NewRequest("POST", baseURL+"/v1/chat/completions", bytes.NewReader(payload))
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var result struct {
Choices []struct {
Message struct {
Content string `json:"content"`
} `json:"message"`
} `json:"choices"`
}
json.Unmarshal(body, &result)
fmt.Println(result.Choices[0].Message.Content)
}