在您的申请中更换法学硕士是一项单行更改,而且风险要大得多。模型 ID 是一个字符串。该字符串改变的是响应延迟、令牌成本、输出格式稳定性、工具调用行为以及图像管道是否正常工作。
GLM-5.3-Flash使这一点具体化。它比GLM-5.3便宜大约九倍,它本身接受图像,而GLM-5.3不接受,并且生成速度大约是GLM-5.3的一半。这些都是真正的权衡,了解你站在哪一边的唯一方法就是针对两者运行你自己的请求。
本指南为GLM-5.3-FlashAPI设置了一个可重复使用的测试集合 Apifox:文本调用、图像调用、工具调用、assertions 以及针对较大模型的比较。
AI Coding 交流群
如果你也在用 AI 写代码,或者正在研究 Cursor、Claude Code 这些工具,欢迎加入以下交流群。群里平时会聊一些 AI 编程的实际用法、开发工作流,还有各种新工具和新玩法。
为什么不直接使用 curl
您绝对可以使用 curl测试此端点,并且 我们的API指南 正是表明了这一点。一旦你越过了第一个电话,有两件事就会崩溃。
Base64图像有效负载。 截图的数据URL有数千个字符。将其粘贴到终端中会生成一条您无法读取、无法编辑且明天不会重新运行的命令。多模式测试是 shell 历史不再是可行工具的地方。
没有什么是asserted。 curl响应是屏幕上的文本。它告诉您调用成功,而不是响应仍然包含您的应用程序读取的字段。当您更改模型时,这种区别就是测试的全部要点。
保存的集合可以解决这两个问题。有效负载位于您可以编辑的请求中,并且 assertions 每次都会运行。
设置环境
创建一个环境,其中的值在运行之间发生变化。将模型 ID 保留为变量是重要的部分,因为它可以让您稍后将整个集合重新指向不同的模型。
| 多变的 | 价值 |
|---|---|
base_url |
https://api.z.ai/api/paas/v4 |
api_key |
你的 Z.ai 钥匙 |
model |
glm-5.3-flash |
将密钥存储为环境变量,而不是将其粘贴到请求标头中。它不会出现在您导出或与队友共享的任何内容中,这比第一次有人commits集合时看起来更重要。
请求1:文本补全
创建一个 POST 请求 {{base_url}}/chat/completions.
标题:
Authorization: Bearer {{api_key}}
Content-Type: application/json
身体:
{
"model": "{{model}}",
"messages": [
{"role": "user", "content": "Reply with exactly: OK"}
],
"reasoning_effort": "low"
}
笔记 reasoning_effort。它默认为 max 在这个模型上,它将推理作为输出标记。对于纯粹浪费的连接检查,因此将其设置为 low 这里。
在响应中添加 assertions:
- 状态码等于
200 choices[0].message.content存在choices[0].finish_reason等于stopusage.total_tokens存在
这 finish_reason assertion 是人们跳过然后后悔的一个。值为 length 意味着响应在输出上限处被截断而不是完成。鉴于该模型的最大输出数据在源之间不一致,显式捕获截断值得一行。
请求2:图像调用
这是证明整个设置合理性的要求,而GLM-5.3本身不具备这种能力。
相同的端点,不同的体型。 content 变成类型化块的数组:
{
"model": "{{model}}",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "What color is the dominant shape in this image? Answer with one word."},
{"type": "image_url", "image_url": {"url": "{{test_image_url}}"}}
]
}
],
"reasoning_effort": "low"
}
添加 test_image_url 指向您的环境,指向一个稳定的、可公开访问的图像,您知道其正确答案。针对固定图像的一个确定性问题是什么使得这是回归测试而不是演示。
对于本地图像,同一字段采用base64数据URL。将其存储为环境变量,以便请求正文保持可读:
data:image/png;base64,iVBORw0KGgo...
AQK0问题:
- 状态码等于
200 choices[0].message.content包含您已知的答案usage.prompt_tokens大于纯文本请求的计数
最后一个 assertion 是一个有用的金丝雀。图像消耗输入令牌,因此如果提示令牌计数没有增加,则该图像实际上不是 processed,并且您有一个返回200的请求,同时默默地忽略您的图片。如果没有检查,这种失败是看不见的。
有关视觉通路及其故障模式的更多信息,请参阅 我们的GLM-5.3-Flash视觉指南.
请求3:工具调用
如果您的应用程序使用函数调用,请显式测试它。工具调用格式是任何模型集成中对版本最敏感的部分,也是提供程序更新后最有可能破坏的部分。
{
"model": "{{model}}",
"messages": [
{"role": "user", "content": "Is the checkout-api service healthy?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_deployment_status",
"description": "Returns the current status of a named deployment.",
"parameters": {
"type": "object",
"properties": {
"service": {"type": "string", "description": "The service name."}
},
"required": ["service"]
}
}
}
]
}
AQK0问题:
choices[0].message.tool_calls存在且不为空choices[0].message.tool_calls[0].function.name等于get_deployment_statuschoices[0].finish_reason等于tool_calls
Asserting 函数名称而不仅仅是工具调用的存在会捕获更微妙的故障:调用错误工具的模型。通过定义一种工具,这是不可能的,但是 assertion 不需要任何成本,并且在添加更多工具时保持正确。
如果您从已有的API生成工具定义, 将OpenAPI规范转变为代理工具 涵盖无需手写模式即可完成此操作。
与GLM-5.3比较
这是将模型 ID 放入环境变量中的回报。
复制你的环境,改变 model 到 glm-5.3,并运行相同的集合。需要比较的三件事:
正确性。 assertions 仍然通过吗?图像请求不会,因为GLM-5.3本身不获取图像。这是一个发现,而不是一个失败的测试。
延迟。 Apifox报告每个请求的响应时间。预计GLM-5.3在较长的输出上会更快地完成,因为与 Flash 的49相比,它每秒生成大约86个令牌。
成本。 这 usage 对象给你 prompt_tokens 和 completion_tokens 每次通话。乘以每个型号的费率,您就可以得到每个请求的实际成本比较,而不是混合的营销数据。 我们的定价细目 有当前费率,并且 完整模型比较 涵盖了每个人获胜的地方。
手表 completion_tokens 紧密地跨越推理努力设置。和 reasoning_effort 在其 max 默认情况下,推理令牌按输出计费,因此简短的可见答案背后可能带有大量的完成计数。运行相同的提示符 low, high, 和 max 读取令牌计数是确定您的工作负载实际需要的最快方法。
测试本地部署
如果您自托管权重,vLLM和SGLang都会公开OpenAI-compatible端点。改变 base_url 到您的服务器并运行相同的集合。

这是该套件的最高价值用途。量化构建可以通过基本的聊天测试,但仍然会错误地处理您的工具模式或在图像输入上降级,而这些正是生产中而不是烟雾检查中出现的故障。 我们的本地导游 覆盖部署端。
将其放入 CI 中
一旦集合稳定,就可以按计划或在管道中运行它。有用的触发器:
- 模型迁移之前,作为通过或不通过信号。
- 按计划进行,以捕获您未被告知的提供商端更改。
- 依赖更新后,因为 SDK 更改可能会改变请求序列化。
模型提供者更新稳定 ID 背后的模型。计划运行是您发现行为发生变化的方式,而不是从用户那里听到的。
除了快乐之路还要测试什么
一旦基础知识通过,一些值得添加的案例:
- 长上下文请求 根据您实际使用的长度。5K的行为并不暗示500K令牌的行为。
- 输入格式错误,以确认您的错误处理已执行。
- 速率 limit响应,如果您可以触发一个,以验证您的重试逻辑是否有效。
- 一个请求中包含多个图像,如果这是您申请的一部分。每个图像都需要自己的
image_url堵塞。 - 流媒体,如果您使用它,因为响应形状与标准完成不同。
总结
这里的价值不是单个请求,而是它们是可重复的。您可以在三十秒内重新测试的型号选择是您可以在 9 月9价格发生变化时重新考虑的决定,当 Z.ai 发布下一个版本,或者当有人建议完全转向不同的提供商时。
Apifox 一开始是免费的,导入OpenAI-compatible模式可以让您完成大部分设置,而无需手动构建每个请求。你最终得到的集合是让下一个模型交换差异而不是飞跃的东西。
常问问题
我需要付费Apifox计划吗? 不需要。带有环境变量和 assertions 的集合可以在免费层上运行。
如何在没有不可读请求正文的情况下测试base64图像? 将数据URL存储为环境变量并将其引用为 {{test_image_url}} 在身体里。
我可以用同样的方式测试编码计划端点吗? 是的。改变 base_url 到 https://api.z.ai/api/coding/paas/v4。请注意,端点与标准API端点不同,如 我们的Claude Code和Cline指南.
这些测试对其他提供商有效吗? 大多。OpenRouter、Cloudflare Workers AI和Vercel AI Gateway均暴露OpenAI-compatible表面。改变 base_url 和模型 id 命名空间。
如何针对非确定性响应进行ssert? Assert 基于结构和约束而不是精确的文本:字段存在、类型、标记计数、 finish_reason,以及具有已知答案的问题的子字符串包含。
开发必备:API 全流程管理神器 Apifox
介绍完上文的内容,我想额外介绍一个对开发者同样重要的效率工具 —— Apifox。作为一个集 API 文档、调试、设计、测试、Mock、自动化测试于一体的工具,Apifox 是目前提升研发效率的首选。
如果你正在开发项目,不妨试试其极其友好的界面设计,它完全兼容 Postman 和 Swagger 数据格式,导入数据非常方便,,即使是新手也能很快上手,点击这里即可注册使用。

值得一提的是,除了个人和常规团队使用,针对有高安全合规要求、或需要在内网环境协作的企业,Apifox 还提供了深度定制的私有化部署方案。
获取专属报价与部署方案
详细的私有化部署系统架构与安全白皮书
针对您公司规模的专属报价单
免费的 1v1 专属产品演示 (Demo) 机会