邀请好友,获取免费 Tokens!了解更多

聊天补全 API 文档 (Chat Completions)

该 API 用于给定一系列对话消息,模型将返回一个或多个预测的补全结果。支持流式输出、工具调用(Function Calling)以及多种采样参数调整。

1. 接口信息

  • 接口名称:官方N测试
  • 请求方法POST
  • 请求地址https://api.codingplanx.ai/v1/chat/completions
  • 内容类型application/json
  • 认证方式Bearer {{YOUR_API_KEY}}

2. 请求头 (Headers)

参数名必选类型说明示例
Content-Typestring媒体类型标识application/json
Acceptstring客户端接收的响应格式application/json
AuthorizationstringAPI 访问令牌Bearer sk-xxxxxx

3. 请求体 (Request Body)

参数名必选类型说明
modelstring要使用的模型 ID(如 gpt-4o, gpt-3.5-turbo)。
messagesarray对话消息列表。每个对象包含 role (system/user/assistant) 和 content
toolsarray模型可以调用的一组工具列表。目前仅支持函数。
tool_choiceobject控制模型调用哪个函数。none (不调用), auto (自动), 或指定具体函数。
temperaturenumber采样温度 (0-2)。越高越随机,越低越确定。建议与 top_p 二选一调整。
top_pnumber核采样。0.1 表示只考虑前 10% 概率质量的标记。
ninteger默认为 1。为每个输入消息生成的回复数量。
streamboolean默认为 false。如果为 true,则像 ChatGPT 一样发送增量标记。
stopstring停止序列。当模型遇到这些字符时停止生成。
max_tokensinteger生成的最大标记数。默认为 inf。
presence_penaltynumber-2.0 到 2.0 之间。惩罚已出现过的主题,增加谈论新话题的可能性。
frequency_penaltynumber-2.0 到 2.0 之间。惩罚重复的字词。
logit_biasobject修改指定标记出现的可能性。
userstring终端用户标识符,用于检测滥用。
response_formatobject指定返回格式。例如 { "type": "json_object" } 可启用 JSON 模式。
seeninteger测试阶段功能。指定种子(Seed)以尝试实现确定性输出。

4. 响应参数 (Response Body)

参数名类型说明
idstring此次请求的唯一标识符。
objectstring对象类型,通常为 chat.completion
createdinteger请求创建的时间戳(秒)。
choicesarray回复选项列表。
├─ indexinteger该选项在列表中的索引。
├─ messageobject模型生成的具体消息。
│ ├─ rolestring角色,通常为 assistant
│ └─ contentstring消息文本内容。
└─ finish_reasonstring停止生成的原因(如 stop, length, tool_calls)。
usageobject令牌使用情况。
├─ prompt_tokensinteger输入消耗的 Token 数。
├─ completion_tokensinteger输出消耗的 Token 数。
└─ total_tokensinteger总消耗 Token 数。

5. 示例 (Example)

请求示例

{
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": "who are u?"
        }
    ],
    "n": 1,
    "max_tokens": 100,
    "temperature": 0.8,
    "stream": false
}

响应示例

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

6. 常见问题解答 (FAQs)

Q: 为什么我设置了 response_format: { "type": "json_object" } 却报错? A: 使用 JSON 模式时,你必须在 messages 中明确通过系统消息或用户消息指示模型生成 JSON(例如:“请以 JSON 格式回复”)。否则,模型可能会因为无法生成有效的 JSON 而卡住或报错。

Q: temperaturetop_p 可以同时调整吗? A: 技术上可以,但官方通常建议二选一。调整其中一个通常就能达到改变输出随机性的目的,同时调整两个可能导致生成结果难以预测。

Q: stream: true 时如何接收数据? A: 当开启流式传输时,服务器会发送一系列 Server-Sent Events (SSE)。每个事件的数据部分是一个 JSON 对象,最后会以 data: [DONE] 结尾。你需要使用流式解析库(如 Python 的 response.iter_lines())来逐行处理。

Q: 如何计算 Token 消耗? A: 对于英文,1 个 Token 大约等于 4 个字符或 0.75 个单词;对于中文,1 个汉字可能对应 1-2 个 Token。最终消耗以响应体中的 usage 字段为准。

Q: 出现 finish_reason: "length" 是什么意思? A: 这表示生成的内容超过了你在 max_tokens 中设置的限制,或者是达到了模型的上下文最大长度限制,导致内容被截断了。

Q: 接口支持函数调用(Function Calling)吗? A: 支持。通过 tools 参数定义函数原型,模型会根据需求在 choices[0].message 中返回 tool_calls,而不是普通的 content