Chat Completions
GLM 5 Chat Completions 的完整请求与响应参考:支持的字段与 SDK 额外字段、消息结构、Token 用量统计、完成原因,以及模型自身的上下文与输出限制。
/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 行为 |
|---|---|---|---|---|
model | string | 是 | - | 模型中公开的模型 ID,例如 glm-5.3-flash。 |
messages | array | 是 | - | 当前对话的完整消息列表,至少包含一条有效消息。 |
max_completion_tokens | integer | 否 | 模型默认值 | 可选的输出长度上限,原样转发给模型。 |
max_tokens | integer | 否 | 模型默认值 | max_completion_tokens 的旧兼容别名。 |
temperature | number | 否 | 模型默认值 | 作为采样温度转发。 |
top_p | number | 否 | 模型默认值 | 作为 nucleus sampling 参数转发。 |
top_k | integer | 否 | 模型默认值 | 所选模型支持时生效。 |
seed | integer | 否 | - | 支持时作为确定性采样提示使用。 |
stop | string 或 string[] | 否 | - | 一个或多个停止序列。 |
stream | boolean | 否 | false | 为 true 时返回 Server-Sent Events。 |
tools | array | 否 | - | OpenAI 兼容的 function tools。 |
tool_choice | string 或 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_tokens | max_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 调用。
| Role | Content 支持 | 用途 |
|---|---|---|
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
}
}
响应字段
| 字段 | 含义 |
|---|---|
id | GLM 5 生成的 completion ID。 |
object | 非流式响应固定为 chat.completion。 |
created | Unix 秒级时间戳。 |
model | 本次请求使用的公开模型 ID。 |
choices[].index | Choice 索引;当前返回一个 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 | 模型请求调用一个或多个函数。 |