Docs

创建聊天补全

POST/v1/chat/completions

为聊天消息创建补全

本页目录
  1. 请求体
  2. 响应
  3. 请求示例
  4. 多模态示例
  5. 响应示例
  6. 错误响应示例

请求体

参数 model

类型:string

位置:body

必填:是

要使用的模型 ID。可用模型请在控制台或 GET /v1/models 中查看。

参数 messages

类型:array

位置:body

必填:是

组成对话的消息列表。

每个消息对象包含:

  • role (string): system, user 或 assistant
  • content (string | array): 消息内容

当 content 是数组时,兼容模型支持结构化多模态内容块:

  • text: { "type": "text", "text": "..." }
  • image: { "type": "image_url", "image_url": { "url": "https://..." } }

生产环境建议使用可访问的 https 图片 URL。

参数 temperature

类型:number

位置:body

采样温度,范围在 0 到 2 之间。值越大,输出越随机。

参数 max_tokens

类型:integer

位置:body

要生成的最大 token 数。

参数 stream

类型:boolean

位置:body

为 true 时,消息增量会以 SSE 事件的形式持续返回。

参数 stream_options

类型:object

位置:body

流式传输选项。设置 include_usage: true 以在流分片中接收 token 使用情况。

参数 top_p

类型:number

位置:body

Nucleus 采样参数。建议只调整此参数或 temperature 其中之一。

参数 frequency_penalty

类型:number

位置:body

值在 -2.0 到 2.0 之间。正值会惩罚重复出现的 token。

参数 presence_penalty

类型:number

位置:body

值在 -2.0 到 2.0 之间。正值会惩罚已出现在文本中的 token。

参数 stop

类型:string | array

位置:body

最多 4 个序列,遇到这些序列时 API 会停止生成后续 token。

参数 tools

类型:array

位置:body

模型可能调用的工具列表(函数调用)。

参数 tool_choice

类型:string | object

位置:body

控制模型如何使用工具。选项:auto, none, required, 或特定工具对象。

参数 parallel_tool_calls

类型:boolean

位置:body

是否启用并行函数调用。设置为 false 则按顺序调用函数。

参数 max_completion_tokens

类型:integer

位置:body

补全的最大 token 数。作为 max_tokens 的替代,对于启用推理的新模型系列更有用。

参数 reasoning_effort

类型:string

位置:body

推理模型的推理强度。选项:low、medium、high。

参数 seed

类型:integer

位置:body

用于确定性采样的随机种子。

参数 n

类型:integer

位置:body

要生成的补全数量(1-128)。

参数 logprobs

类型:boolean

位置:body

是否返回对数概率(log probabilities)。

参数 top_logprobs

类型:integer

位置:body

要返回的顶级对数概率数量(0-20)。需要 logprobs: true。

参数 top_k

类型:integer

位置:body

Top-K 采样参数(用于 Anthropic/Gemini 模型)。

参数 response_format

类型:object

位置:body

响应格式规范。使用 {"type": "json_object"} 进入 JSON 模式。将 {"type": "json_schema", "json_schema": {...}} 视为一条基于所选模型和路由行为的尽力支持路径。

参数 logit_bias

类型:object

位置:body

修改指定 token 出现的可能性。将 token ID(以字符串形式)映射到 -100 到 100 的偏差值。

参数 user

类型:string

位置:body

表示你的最终用户的唯一标识符,用于滥用监控。

响应

响应字段 id

类型:string

补全的唯一标识符。

响应字段 object

类型:string

始终为 chat.completion。

响应字段 created

类型:integer

补全创建时的 Unix 时间戳。

响应字段 model

类型:string

用于补全的模型。

响应字段 choices

类型:array

补全选项列表。

每个选项包含:

  • index (integer): 选项的索引
  • message (object): 生成的消息
  • finish_reason (string): 模型停止的原因(stop, length, tool_calls)

响应字段 usage

类型:object

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 状态码——它能区分调用方可以自行修复的错误(模型不可用、超出上限)和供应商侧的临时故障。