教程
如何通过 hiapi API 使用 glm-5.3:curl、Python 与一个可运行的请求
你将构建的内容
一个可运行的集成,通过 hiapi 的 OpenAI 兼容 Chat Completions API 调用 glm-5.3——单次请求即可返回真实补全结果,并说明使用该模型时实际最容易踩的坑:它的推理 token 会占用你的 max_tokens 预算。
前提条件:一个 hiapi API key。请从 dashboard 获取——它就是一个 sk-... 字符串,同一个 key 可用于你的账户中所有已启用的模型,而不仅限于此模型。
以下每个请求和响应都是在撰写本文时对线上 API 实际运行得到的。
最小可运行示例
glm-5.3 是标准 Chat Completions 端点上的文本模型——不是 hiapi 用于图像/视频/音频模型的异步 /v1/tasks 流程。一次请求,一次响应,无需轮询。
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.3",
"messages": [
{"role": "user", "content": "Reply with exactly: OK"}
],
"max_tokens": 200
}'
响应(已裁剪):
{
"id": "8be5f07603f0407c90734e8b4c2f02f0",
"object": "chat.completion",
"model": "glm-5.3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "OK",
"reasoning_content": "The user wants me to reply with exactly \"OK\" ..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 17,
"completion_tokens": 35,
"total_tokens": 52,
"completion_tokens_details": { "reasoning_tokens": 32 }
}
}
用 Python 发起同样的调用,仅使用 requests:
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": "Bearer sk-<your-api-key>"},
json={
"model": "glm-5.3",
"messages": [
{"role": "user", "content": "Reply with exactly: OK"}
],
"max_tokens": 200,
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
print(data["usage"])
由于结构兼容 OpenAI,这段代码无需修改也能与官方 openai Python/JS SDK 配合使用——只需将 base_url 指向 https://api.hiapi.ai/v1 并传入你的 hiapi key。
生产环境模式
推理 token 会吃掉偏低的 max_tokens 预算
glm-5.3 在回答前总是先思考——每个响应都在 content 旁携带 reasoning_content 字段,且没有请求标志可以关闭它。该推理内容先于可见答案计入 max_tokens。将预算设得太低,你会得到 content: null 和 finish_reason: "length",因为模型把全部配额都花在了思考上,从未走到撰写回复这一步:
{
"choices": [{
"message": { "content": null, "reasoning_content": "The user has given a very simple instruction: \"" },
"finish_reason": "length"
}],
"usage": { "completion_tokens": 10, "completion_tokens_details": { "reasoning_tokens": 9 } }
}
即使提示词很简单,也要给足余量(200+ token 是安全下限),并在信任 content 之前始终检查 finish_reason——"length" 表示答案被截断,甚至可能还没开始就已被截断。
流式输出
设置 "stream": true 并读取 Server-Sent Events。推理内容和答案文本作为独立的 delta 字段到达——先是 delta.reasoning_content 块,然后当模型开始实际回复时是 delta.content——流在最后一个块上以 finish_reason: "stop" 结束:
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.3",
"messages": [{"role": "user", "content": "Count to 3."}],
"max_tokens": 200,
"stream": true
}'
data: {"choices":[{"delta":{"role":"assistant","content":"","reasoning_content":null},"finish_reason":null}]}
data: {"choices":[{"delta":{"content":null,"reasoning_content":"The"},"finish_reason":null}]}
data: {"choices":[{"delta":{"content":"1, ","reasoning_content":null},"finish_reason":null}]}
data: {"choices":[{"delta":{"content":"2, 3.","reasoning_content":null},"finish_reason":null}]}
data: {"choices":[{"delta":{},"finish_reason":"stop"}]}
如果你要流式输出到 UI,请将 reasoning_content 和 content 路由到不同的面板,而不是将它们拼接起来——它们不是同一段文本流。
工具调用
函数调用遵循标准 OpenAI 结构。声明 tools,当模型决定调用某个工具时,finish_reason 会以 "tool_calls" 返回,并带有已填充的 tool_calls 数组(它仍然会先推理,因此 reasoning_content 也会出现):
{
"message": {
"role": "assistant",
"content": null,
"reasoning_content": "The user wants to know the weather in Paris. I have a tool available for that. Let me call it.",
"tool_calls": [{
"id": "call_12e21fe488f046bc9edb4488",
"type": "function",
"function": { "name": "get_weather", "arguments": "{\"city\": \"Paris\"}" }
}]
},
"finish_reason": "tool_calls"
}
在下一轮中回放助手的 tool_calls 消息,以及一条 role: "tool" 的结果消息,与任何 OpenAI 兼容集成相同。
错误处理
无效或缺失的 key 会返回 HTTP 401,并带有一致的错误结构——在解析 choices 之前先检查状态码:
{
"error": {
"code": "permission_denied",
"message": "This API key is invalid. Check that it is correct or use another API key and try again.",
"type": "hiapi_error"
}
}
相关资源
- glm-5.3 模型页面——能力与当前可用性
- hiapi 定价——当前每 token 费率
- API keys 仪表盘——创建和管理 key
- 如何通过 hiapi API 使用 kimi-k3——hiapi 上的另一个 Chat Completions 文本模型
- 如何通过 hiapi API 使用 deepseek-v4.1-flash——相同的集成模式,不同的模型
常见问题
glm-5.3 支持流式输出吗?
支持——设置 "stream": true 并读取 SSE 块。推理内容和答案内容作为独立的 delta 字段流式传输。
为什么我的响应中 content 是 null?
几乎总是因为 max_tokens 预算太小,无法同时覆盖推理和答案。检查 finish_reason:"length" 表示响应在真实答案之前(或期间)被截断。请提高 max_tokens。
我可以禁用推理步骤吗?
不能通过请求参数禁用——glm-5.3 在每次响应前都会推理,且 reasoning_content 始终会被填充。请为它预留预算,而不是试图关闭它。
glm-5.3 支持函数/工具调用吗?
支持,使用标准 OpenAI tools / tool_calls 结构,已针对线上端点验证。
我可以使用官方 OpenAI SDK 而不是原始 HTTP 吗?
可以。将 SDK 的 base_url 指向 https://api.hiapi.ai/v1,并使用你的 hiapi sk-... key 作为 API key——无需其他更改。
glm-5.3 如何计费? 按 token 计费,与其他 hiapi 文本模型一样。请查看定价获取当前费率,而不是依赖本文中的某个数字。