创建聊天补全
/v1/chat/completions为聊天消息创建补全
请求体
参数 model
要使用的模型 ID。可用模型请在控制台或 GET /v1/models 中查看。
参数 messages
组成对话的消息列表。
每个消息对象包含:
role(string):system,user或assistantcontent(string | array): 消息内容
当 content 是数组时,兼容模型支持结构化多模态内容块:
- text:
{ "type": "text", "text": "..." } - image:
{ "type": "image_url", "image_url": { "url": "https://..." } }
生产环境建议使用可访问的 https 图片 URL。
参数 temperature
采样温度,范围在 0 到 2 之间。值越大,输出越随机。
参数 max_tokens
要生成的最大 token 数。
参数 stream
为 true 时,消息增量会以 SSE 事件的形式持续返回。
参数 stream_options
流式传输选项。设置 include_usage: true 以在流分片中接收 token 使用情况。
参数 top_p
Nucleus 采样参数。建议只调整此参数或 temperature 其中之一。
参数 frequency_penalty
值在 -2.0 到 2.0 之间。正值会惩罚重复出现的 token。
参数 presence_penalty
值在 -2.0 到 2.0 之间。正值会惩罚已出现在文本中的 token。
参数 stop
最多 4 个序列,遇到这些序列时 API 会停止生成后续 token。
参数 tools
模型可能调用的工具列表(函数调用)。
参数 tool_choice
控制模型如何使用工具。选项:auto, none, required, 或特定工具对象。
参数 parallel_tool_calls
是否启用并行函数调用。设置为 false 则按顺序调用函数。
参数 max_completion_tokens
补全的最大 token 数。作为 max_tokens 的替代,对于启用推理的新模型系列更有用。
参数 reasoning_effort
推理模型的推理强度。选项:low、medium、high。
参数 seed
用于确定性采样的随机种子。
参数 n
要生成的补全数量(1-128)。
参数 logprobs
是否返回对数概率(log probabilities)。
参数 top_logprobs
要返回的顶级对数概率数量(0-20)。需要 logprobs: true。
参数 top_k
Top-K 采样参数(用于 Anthropic/Gemini 模型)。
参数 response_format
响应格式规范。使用 {"type": "json_object"} 进入 JSON 模式。将 {"type": "json_schema", "json_schema": {...}} 视为一条基于所选模型和路由行为的尽力支持路径。
参数 logit_bias
修改指定 token 出现的可能性。将 token ID(以字符串形式)映射到 -100 到 100 的偏差值。
参数 user
表示你的最终用户的唯一标识符,用于滥用监控。
响应
响应字段 id
补全的唯一标识符。
响应字段 object
始终为 chat.completion。
响应字段 created
补全创建时的 Unix 时间戳。
响应字段 model
用于补全的模型。
响应字段 choices
补全选项列表。
每个选项包含:
index(integer): 选项的索引message(object): 生成的消息finish_reason(string): 模型停止的原因(stop,length,tool_calls)
响应字段 usage
token 使用统计。
prompt_tokens(integer): 提示中的 token 数completion_tokens(integer): 补全中的 token 数total_tokens(integer): 使用的总 token 数
请求示例
curl -X POST "https://api.anypath.dev/v1/chat/completions" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"temperature": 0.7,
"max_tokens": 1000
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.anypath.dev/v1"
)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api.anypath.dev/v1'
});
const response = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Hello!' }
],
temperature: 0.7,
max_tokens: 1000
});
console.log(response.choices[0].message.content);
<?php
$ch = curl_init('https://api.anypath.dev/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'gpt-4o-mini',
'messages' => [
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => 'Hello!']
],
'temperature' => 0.7,
'max_tokens' => 1000
])
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data['choices'][0]['message']['content'];
多模态示例
{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Describe this image briefly." },
{ "type": "image_url", "image_url": { "url": "https://example.com/demo.jpg" } }
]
}
],
"max_tokens": 64
}
响应示例
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1706000000,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 9,
"total_tokens": 29
}
}
错误响应示例
共享路由余额不足或供应商侧出错时,返回标准错误体:
{
"error": {
"message": "API key spending limit exceeded.",
"type": "spending_limit_exceeded",
"code": "spending_limit_exceeded"
}
}
{
"error": {
"message": "Upstream provider returned an error.",
"type": "provider_error",
"code": "provider_error"
}
}
运行时 type 始终与 code 相同,取值都来自 错误码 注册表。
判断错误时以 error.code 为准,不要只看 HTTP 状态码——它能区分调用方可以自行修复的错误(模型不可用、超出上限)和供应商侧的临时故障。