Chat Completions API(完整文档)
创建模型响应,支持对话、函数调用、流式输出等。
📋 基本信息
请求地址
http
POST https://api.nextapi.pro/v1/chat/completions认证方式
http
Authorization: Bearer sk-你的密钥
Content-Type: application/json📝 请求参数
必填参数
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
model | string | 模型名称 | "gpt-4o-mini" |
messages | array | 对话消息列表 | 见下方说明 |
messages 参数说明
每个消息对象包含:
| 字段 | 类型 | 说明 |
|---|---|---|
role | string | 角色:system、user、assistant |
content | string | 消息内容 |
示例:
json
[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好!"},
{"role": "assistant", "content": "你好!有什么可以帮你的吗?"},
{"role": "user", "content": "写一首诗"}
]可选参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
temperature | float | 1.0 | 温度参数 (0-2),控制随机性 |
max_tokens | int | - | 最大生成 token 数 |
stream | bool | false | 是否流式输出 |
top_p | float | 1.0 | Top-p 采样 (0-1) |
frequency_penalty | float | 0 | 频率惩罚 (-2 to 2) |
presence_penalty | float | 0 | 存在惩罚 (-2 to 2) |
stop | array | null | 停止词列表 |
tools | array | null | 函数调用工具列表 |
tool_choice | string | "auto" | 函数调用选择 |
response_format | object | null | 响应格式 |
seed | int | null | 随机种子 |
user | string | null | 用户标识 |
🎯 参数详解
temperature(温度)
控制输出的随机性:
- 0:最确定,每次输出几乎相同
- 1:默认,平衡创造性和一致性
- 2:最随机,更有创造性但不稳定
推荐值:
| 场景 | 推荐值 |
|---|---|
| 代码生成 | 0.2 |
| 日常对话 | 0.7 |
| 创意写作 | 1.0 |
| 头脑风暴 | 1.5 |
max_tokens(最大 token 数)
限制生成的 token 数量:
- 不设置:模型会生成直到自然结束
- 设置值:限制输出长度,节省成本
示例:
json
{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "写一首诗"}],
"max_tokens": 100
}stream(流式输出)
是否使用流式输出:
- false(默认):等待完整响应
- true:逐块返回,实时显示
流式输出优点:
- ✅ 用户体验更好,实时看到响应
- ✅ 可以提前终止,节省 token
- ✅ 适合长文本生成
流式输出缺点:
- ❌ 实现复杂
- ❌ 需要处理 SSE 格式
📤 响应格式
成功响应
json
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1234567890,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!有什么可以帮你的吗?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 20,
"total_tokens": 30
}
}响应字段说明
| 字段 | 说明 |
|---|---|
id | 请求 ID |
object | 对象类型 |
created | 创建时间戳 |
model | 使用的模型 |
choices | 响应选项列表 |
usage | Token 使用统计 |
finish_reason 可能的值
| 值 | 说明 |
|---|---|
stop | 自然结束 |
length | 达到 max_tokens 限制 |
content_filter | 内容过滤 |
tool_calls | 函数调用 |
🌊 流式响应
设置 stream: true 后,响应为 SSE (Server-Sent Events) 格式:
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1234567890,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1234567890,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1234567890,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]💻 代码示例
Python 示例
python
from openai import OpenAI
client = OpenAI(
api_key="sk-你的密钥",
base_url="https://api.nextapi.pro/v1"
)
# 普通请求
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)
# 流式请求
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "写一首诗"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
# 带参数的请求
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "写一首诗"}],
temperature=0.7,
max_tokens=100
)Node.js 示例
javascript
const OpenAI = require('openai');
const openai = new OpenAI({
apiKey: 'sk-你的密钥',
baseURL: 'https://api.nextapi.pro/v1'
});
// 普通请求
async function chat() {
const completion = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: '你好!' }],
});
console.log(completion.choices[0].message.content);
}
// 流式请求
async function streamChat() {
const stream = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: '写一首诗' }],
stream: true,
});
for await (const chunk of stream) {
if (chunk.choices[0]?.delta?.content) {
process.stdout.write(chunk.choices[0].delta.content);
}
}
}
chat();cURL 示例
bash
# 普通请求
curl https://api.nextapi.pro/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的密钥" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "你好!"}]
}'
# 流式请求
curl https://api.nextapi.pro/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的密钥" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "写一首诗"}],
"stream": true
}'
# 带参数的请求
curl https://api.nextapi.pro/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的密钥" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "写一首诗"}],
"temperature": 0.7,
"max_tokens": 100
}'❌ 错误处理
HTTP 状态码
| 状态码 | 说明 | 解决方案 |
|---|---|---|
| 400 | 请求参数错误 | 检查请求格式和参数 |
| 401 | 认证失败 | 检查 API Key 是否正确 |
| 403 | 权限不足 | 检查账户权限和余额 |
| 404 | 资源不存在 | 检查 API 地址和模型名称 |
| 429 | 请求过于频繁 | 降低请求频率,添加重试逻辑 |
| 500 | 服务器错误 | 稍后重试,联系客服 |
| 503 | 服务不可用 | 稍后重试 |
错误响应格式
json
{
"error": {
"message": "Incorrect API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}💡 最佳实践
1. 选择合适的模型
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 简单对话 | gpt-4o-mini | 便宜快速 |
| 复杂推理 | gpt-4o | 性能强 |
| 写代码 | claude-sonnet-4-6 | 代码能力强 |
| 中文任务 | qwen3-max | 中文效果好 |
2. 控制 token 使用
python
# 使用 max_tokens 限制输出
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "写一首诗"}],
max_tokens=100 # 限制输出
)3. 使用流式输出
python
# 流式输出可以提前终止
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "写一首诗"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
# 可以根据条件提前终止
if some_condition:
break4. 错误重试
python
import time
from openai import OpenAI, RateLimitError
client = OpenAI(
api_key="sk-你的密钥",
base_url="https://api.nextapi.pro/v1"
)
def chat_with_retry(messages, max_retries=3):
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages
)
return response
except RateLimitError:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # 指数退避
continue
raise