Chat Completions

GLM 5 Chat Completions 的完整请求与响应参考:支持的字段与 SDK 额外字段、消息结构、Token 用量统计、完成原因,以及模型自身的上下文与输出限制。

POST/chat/completions

根据一组对话消息生成助手文本或函数调用。

GLM 5 的 Chat Completions 端点采用 OpenAI 兼容的文本对话请求与响应结构。已有 OpenAI 兼容客户端通常只需要修改 Base URL、API Key 和模型 ID,即可继续使用原有 SDK。

https://glm5.app/api/v1

基础请求

curl https://glm5.app/api/v1/chat/completions \
  -H "Authorization: Bearer $GLM5_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "messages": [
      {"role": "system", "content": "请用简洁的 Markdown 回答。"},
      {"role": "user", "content": "用两点解释什么是幂等性。"}
    ],
    "max_completion_tokens": 600
  }'

请求体

参数类型必填默认值GLM 5 行为
modelstring是-模型中公开的模型 ID,例如 glm-5.3-flash。
messagesarray是-当前对话的完整消息列表,至少包含一条有效消息。
max_completion_tokensinteger否模型默认值可选的输出长度上限,原样转发给模型。
max_tokensinteger否模型默认值max_completion_tokens 的旧兼容别名。
temperaturenumber否模型默认值作为采样温度转发。
top_pnumber否模型默认值作为 nucleus sampling 参数转发。
top_kinteger否模型默认值所选模型支持时生效。
seedinteger否-支持时作为确定性采样提示使用。
stopstring 或 string[]否-一个或多个停止序列。
streamboolean否false为 true 时返回 Server-Sent Events。
toolsarray否-OpenAI 兼容的 function tools。
tool_choicestring 或 object否auto支持 auto、none、required 或指定函数。

请求 JSON 最大为 4 MB。GLM 5 不为所有模型设置同一套 Token 上下文或输出窗口,也不在模型自身能力之上再叠加一层平台限制:max_completion_tokens 会原样转发给所选模型;不传时,模型按自己的默认行为停止生成。如果传的值确实超出了所选模型本身能支持的范围,请求会按你直连该模型时同样的方式失败——响应结构见错误处理。不同模型的上下文和输出限制可能不同,请求过大时会返回 context_length_exceeded。

安全重试与请求状态

可能因网络中断而重试的请求,应携带一个稳定的 Idempotency-Key。同一 API Key 和同一 key 最多只会创建一个推理任务。请求 JSON 的对象键可以换序;但把同一 key 用于不同内容会返回 409 idempotency_key_reused。

Idempotency-Key: codex:turn_01JQ9KPC3H5YQ2T8

原请求仍在执行或已结束时,GLM5 返回 409,其中包含 request_id、request_status 和 status_url;同一地址也会出现在 X-GLM5-Request-Status 响应头中。此时请使用同一个 API Key 查询状态,而不是再次提交:

curl https://glm5.app/api/v1/requests/chatcmpl-01... \
  -H "Authorization: Bearer $GLM5_API_KEY"

状态接口会返回终态、Token 用量、实际扣除积分和安全错误码。它不保存或重放生成文本;断流后客户端可据此判断是否要重新发起请求,平台不会为重试而静默留存 prompt 或回答内容。

若需停止仍在运行的请求(流式或非流式),请使用同一个 API Key 显式取消:

curl -X POST https://glm5.app/api/v1/requests/chatcmpl-01.../cancel \
  -H "Authorization: Bearer $GLM5_API_KEY"

接口会先返回 202 与 cancel_requested,随后状态接口会结算为 cancelled。已取消请求的预留积分会释放;error 仍用于上游、参数与超时故障。

支持的字段

GLM 5 接受本文档列出的 Chat Completions 字段。只有本文档明确说明的字段才保证会影响模型行为。

字段GLM 5 行为
model必填,必须是 GET /models 返回的模型 ID。
messages必填,支持文本消息和函数调用历史。
stream支持 OpenAI 风格 SSE chunk 与 data: [DONE]。
tools支持 glm-5.3-flash、glm-5.3、glm-5.2、glm-5、kimi-k3、kimi-k2、deepseek-v4-pro 和 deepseek-v4-flash。
tool_choice支持常规函数工具选择。
max_completion_tokens提供时原样设置输出上限;省略时使用模型默认值。
max_tokensmax_completion_tokens 的旧兼容别名。
temperature支持。
top_p支持。
top_k所选模型支持时生效。
seed所选模型支持时生效。
stop支持停止序列。

额外 SDK 字段

部分 SDK 会附带本文档未列出的额外字段。GLM 5 可能为了兼容而忽略未知字段,但应用不应依赖未文档化行为。

当前值得注意的限制包括:

  • response_format 暂不提供 JSON Mode 或 JSON Schema 强制。
  • frequency_penalty、presence_penalty、repetition_penalty、logit_bias 当前不生效。
  • logprobs、top_logprobs 当前不返回。
  • reasoning、reasoning_effort 当前不作为公开 API 控制项。
  • modalities、audio、image_config 不适用于当前文本端点。
  • stream_options、service_tier、prediction、parallel_tool_calls 当前不生效。

严格集成时,只依赖本文档明确支持的字段。

Messages

messages 是按时间顺序排列的消息数组。GLM 5 的 Chat Completions 是无状态的:如果你的应用没有再次发送历史消息,模型不会记住前一次 API 调用。

RoleContent 支持用途
system字符串或 OpenAI text parts设置应用级指令和行为约束。
user字符串或 OpenAI text parts用户输入或任务数据。
assistant字符串、tool_calls 或两者同时存在之前的助手输出或函数调用。
tool字符串或 text parts,并包含对应 tool_call_id返回上一轮函数调用的结果。

当前公开文本端点只使用文本 part;图片、音频、视频和文件 part 不会作为此端点的有效输入处理。

[
  {
    "role": "system",
    "content": "你是一名简洁的技术助手。"
  },
  {
    "role": "user",
    "content": [
      {
        "type": "text",
        "text": "总结这份部署检查清单。"
      }
    ]
  }
]

裁剪历史消息时,必须把 assistant 的 tool_calls 和对应的 tool 消息一起保留。没有前置匹配 tool_call_id 的 tool 消息会返回 400 invalid_request_error。

非流式响应

非流式调用返回 chat.completion 对象:

{
  "id": "chatcmpl-01...",
  "object": "chat.completion",
  "created": 1785292800,
  "model": "glm-5.3-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "幂等性让同一个请求重复执行时仍保持可预测结果……"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 42,
    "completion_tokens": 31,
    "total_tokens": 73
  }
}

响应字段

字段含义
idGLM 5 生成的 completion ID。
object非流式响应固定为 chat.completion。
createdUnix 秒级时间戳。
model本次请求使用的公开模型 ID。
choices[].indexChoice 索引;当前返回一个 choice。
choices[].message.role通常为 assistant。
choices[].message.content助手文本;仅返回工具调用时可为 null。
choices[].message.tool_calls模型请求的函数调用。
choices[].finish_reason常见为 stop 或 tool_calls。
usage.prompt_tokens本次完成请求计入的输入 Token。
usage.completion_tokens本次完成请求计入的输出 Token。
usage.total_tokens输入加输出 Token。

GLM 5 当前不会返回 usage.cost、usage.prompt_tokens_details.cached_tokens、service_tier、system_fingerprint 等未在本文档定义的扩展字段。

模型限制

GLM 5 不返回人为构造的上下文预算响应头,不维护一张按模型划分的上下文/输出限制表,也不会在所选模型自身支持的范围之外再叠加一层应用侧上限——能力边界来自模型本身。请用本次请求最终的 usage.prompt_tokens 做监控,并处理所选模型返回的上下文或输出超限错误。流式请求(stream: true)会一直运行到提供方结束,GLM 5 不再叠加自己的超时(stream_timeout 的说明见错误处理)。

完成原因

值含义
stop模型正常结束输出。
tool_calls模型请求调用一个或多个函数。

增量输出请查看流式输出,工具调用循环请查看函数调用。