Skip to content

Chat Completions

Chat Completions 使用 messages 数组组织对话,适合只支持 OpenAI Chat Completions 格式的客户端和现有项目。

模型占位符

把下面的 YOUR_MODEL_ID 替换为 DuckMans 后台中当前 Key 和分组实际可用的模型 ID。建议先调用 GET /models,不要照搬其他用户或其他分组的模型名。

Chat Completions 从 messages 到 choices message content 的请求流示意图

示意图:客户端发送必要历史,正文代码展示可复制的完整请求;可复制的地址、命令和代码仍以正文为准。

最小请求

  • 方法: POST
  • Endpoint 路径: /chat/completions
  • 完整请求地址: https://duckmans.com/v1/chat/completions
bash
old_stty=$(stty -g)
trap 'stty "$old_stty"' EXIT INT TERM
printf "DuckMans API Key: "
stty -echo
IFS= read -r DUCKMANS_API_KEY
stty "$old_stty"
trap - EXIT INT TERM
printf '\n'
export DUCKMANS_API_KEY

curl -sS https://duckmans.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DUCKMANS_API_KEY" \
  -d '{
    "model": "YOUR_MODEL_ID",
    "messages": [
      {"role": "user", "content": "只回复 ok"}
    ],
    "stream": false
  }'

这里使用的是完整请求地址。SDK 或客户端的 Base URL 应填写 https://duckmans.com/v1,而不是完整请求地址。

system、user 和 assistant 三种 messages 角色关系示意图

示意图:角色决定内容用途,多轮请求只携带必要历史;可复制的地址、命令和代码仍以正文为准。

messages 基本结构

messages 按对话顺序排列。最小测试只发送一条 user 消息即可:

json
[
  {"role": "user", "content": "你好"}
]

需要给模型补充任务规则时,可以在客户端和模型支持的前提下加入 system 消息。不要在未验证前一次性增加大量参数;先确保最小请求成功,再逐项加入温度、工具或输出限制等设置。

读取文本结果

非流式兼容响应的助手文本通常位于:

text
choices[0].message.content

实际响应可能还包含用量、完成原因等字段。应用应先检查 HTTP 状态码和 choices 是否存在,再读取内容,不要假定错误响应也有相同结构。

多轮对话

Chat Completions 通常不会替你保存完整会话。继续对话时,客户端需要把仍然必要的历史消息再次放入 messages。历史过长会增加输入量和延迟,可定期总结旧内容、删除无关日志,或开启新会话。

与 Responses 的选择

  • 客户端明确要求 Chat Completions:使用本页面格式。
  • 客户端明确要求 Responses:先确认当前 Key 分组支持,再使用 Responses API
  • 客户端两者都支持:先选择与你的分组及模型实测匹配的协议,不要假设 Responses 对所有路线默认可用。

流式返回见流式输出

DuckMans 用户指导手册