Skip to content

Chat 对话补全 ​

OpenAI 兼容的对话补全接口,根据对话历史生成模型回复。支持流式和非流式响应。

参考文档: https://platform.openai.com/docs/api-reference/chat/create

请求 ​

POST /v1/chat/completions

认证 ​

使用 Bearer Token 认证,格式: Authorization: Bearer sk-xxxxxx

请求体 (application/json) ​

参数类型必填说明
modelstring是模型 ID(如 gpt-4)
messagesarray[Message]是对话消息列表
temperaturenumber否采样温度,范围 0-2,默认 1
top_pnumber否核采样参数,范围 0-1,默认 1
ninteger否生成补全数量,最小 1,默认 1
streamboolean否是否流式响应,默认 false
stream_optionsobject否流式选项,包含 include_usage (boolean)
stopstring/array否停止序列
max_tokensinteger否最大生成 token 数
max_completion_tokensinteger否最大总 token 数
presence_penaltynumber否存在惩罚,范围 -2 到 2,默认 0
frequency_penaltynumber否频率惩罚,范围 -2 到 2,默认 0
logit_biasobject否token ID 到偏置值的映射
userstring否用户标识
toolsarray[Tool]否模型可调用的工具列表
tool_choicestring/object否none、auto、required 或具体工具对象
response_formatobject否格式规范(text、json_object、json_schema)
seedinteger否确定性采样种子
reasoning_effortstring否推理努力程度:low、medium、high
modalitiesarray[string]否模态:text、audio
audioobject否音频配置,含 voice 和 format

Message 对象 ​

参数类型必填说明
rolestring是system、user、assistant、tool、developer
contentstring/array是消息内容
namestring否参与者名称
tool_callsarray否工具调用(assistant 消息)
tool_call_idstring否工具调用 ID(tool 角色消息)
reasoning_contentstring否推理内容

多模态消息内容 (MessageContent) ​

参数类型说明
typestringtext、image_url、input_audio、file、video_url
textstring文本内容(type=text 时)
image_urlobject`{url: string, detail: "low"
input_audioobject`{data: string(base64), format: "wav"
fileobject{filename, file_data, file_id}
video_urlobject{url: string}

请求示例 ​

bash
curl -X POST "https://your-api-base/v1/chat/completions" \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Hello!"}
    ],
    "temperature": 0.7,
    "stream": false
  }'
python
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxx",
    base_url="https://your-api-base/v1"
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"}
    ],
    temperature=0.7
)

print(response.choices[0].message.content)
javascript
const response = await fetch("https://your-api-base/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk-xxxxxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "gpt-4",
    messages: [
      { role: "system", content: "You are a helpful assistant." },
      { role: "user", content: "Hello!" }
    ],
    temperature: 0.7
  })
});

const data = await response.json();
console.log(data.choices[0].message.content);

响应 ​

200 成功响应 ​

json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1677858242,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 8,
    "total_tokens": 28,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 20,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 8,
      "audio_tokens": 0,
      "reasoning_tokens": 0
    }
  },
  "system_fingerprint": "fp_44709d6fcb"
}

流式响应 (chunk) ​

json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion.chunk",
  "created": 1677858242,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "delta": {
        "role": "assistant",
        "content": "Hello"
      },
      "finish_reason": null
    }
  ]
}

错误响应 ​

json
{
  "error": {
    "message": "Invalid API key",
    "type": "invalid_request_error",
    "param": null,
    "code": "invalid_api_key"
  }
}