GLM API 不是“包月随便用”的产品,而是按实际用量计费。很多团队第一次看账单时会疑惑:明明请求数不多,为什么费用比预期高?原因通常不是单价,而是输入太长、输出失控、缓存没命中,或者失败重试又生成了一遍内容。
本文不列具体单价,因为价格会随模型、上下文档位和活动调整。我们讲清楚计费结构、成本从哪里产生、怎么估算和压降,最后给出可执行的控制清单。查当前价格请以站内模型价格和智谱官方定价页为准。
说明:智谱、GLM、BigModel 是相关权利人的商标,本文仅作技术说明,与智谱无隶属、代理或授权关系。计费规则与价格可能调整,下单前请核对官方文档与账单页面。
一、计费的基本单位
文本模型以 token 为基本单位。智谱官方文档给出的经验换算约为 1 个 token 对应 1.6 个汉字,但实际数量取决于分词器和文本内容,最终以接口返回的 usage 为准。也就是说,估算只能用于预算,不能替代账单。
不是所有模型都按 token 计费。图像生成、视频生成、语音合成、语音克隆、实时音视频、知识库解析等,可能按次、按分钟、按字符或按页计费。做多模态产品时,先把计费单位确认清楚,再谈单价。
二、输入与输出为什么分开算
一次请求通常包含输入 token 和输出 token,两者分开计价,输出一般更贵。长上下文模型还可能按输入长度分档,例如以 32K 为界,超过后进入更高档位;部分模型还会按输出长度分档。这意味着“同一个模型”在不同用法下,单位成本可能不同。
影响成本的主要不是请求数,而是每次请求携带的上下文。把整份知识库、全部历史对话和几十个工具定义都塞进提示词,输入会迅速膨胀。更常见的浪费是输出:没有设置最大输出长度,模型滔滔不绝,费用自然上去。
| 成本项 | 计费口径 | 常见触发场景 | 控制手段 |
|---|---|---|---|
| 输入 token | 按未命中缓存的输入计费 | 长提示词、多轮历史、工具定义 | 精简上下文、做摘要 |
| 输出 token | 按生成内容计费 | 长文写作、代码生成 | 设置最大输出长度 |
| 缓存命中 | 命中部分按折扣价 | 固定系统提示词、知识库前缀 | 保持前缀稳定 |
| 长上下文档位 | 超过阈值后单价变化 | 长文档、代码库分析 | 切分、摘要、按需加载 |
| 重试与失败 | 已生成部分可能计费 | 超时、流式中断、重复提交 | 幂等、退避、去重 |
| 多模态与工具 | 按次、分钟、页等计费 | 图像生成、语音、搜索、解析 | 单独核算、限制调用 |
三、缓存命中:省的是重复前缀
智谱提供上下文缓存能力,官方文档主要介绍的是隐式缓存:系统自动识别重复内容,不需要手动标记缓存点。它适合“固定系统提示词 + 固定知识库 + 变化的问题”这类场景。
想提高命中率,至少要满足三个条件:重复前缀足够长,官方建议达到 500 token 以上;前缀内容完全一致,哪怕多一个空格都可能导致不命中;缓存异步生成,首次请求后稍等再发后续请求,效果更好。命中情况可以查看 usage.prompt_tokens_details.cached_tokens。
缓存不是万能的。短提示词、每次都变化的内容、频繁改动的知识库,都很难命中。缓存存储是否单独计费、折扣力度多大,以官方定价页为准。把缓存当成优化项,而不是成本模型的默认前提。
四、长上下文、批量与多模态
长上下文很实用,但也是最容易超出预算的地方。处理合同、论文、代码库时,先问三个问题:真的需要一次放入全部内容吗?能否先检索再拼接?能否分段处理后再汇总?很多任务用“检索 + 摘要”就能完成,成本远低于整库直塞。
批量任务可以关注 Batch 接口。官方文档说明,支持的模型使用 Batch 接口通常有折扣,适合离线标注、批量摘要、数据清洗等不要求实时返回的场景。代价是延迟更高,任务编排也更复杂,适合有队列和结果校验的团队。
多模态能力要单独核算。图片生成按张计费,图片理解通常按 token 计费;语音合成按字符或分钟,知识库解析按页。把这些成本混进文本预算里,月底一定对不上账。
五、重试、流式中断与隐藏成本
失败请求不一定免费。如果服务端已经生成了一部分内容再超时,这部分用量可能仍然计费;流式连接中断时,已生成的部分也可能计入账单。因此,重试策略要克制:只对限流、5xx 和网络超时重试,使用指数退避,并设置最大次数。
另一个隐藏成本是重复提交。用户连点按钮、前端超时自动重发、队列重复消费,都会产生额外请求。用请求 ID 做幂等,或者在网关层做去重,比事后对账有效得多。
还要算上工程成本:日志、监控、评测、人工复核。模型调用费只是总成本的一部分,别为了省一点调用费,投入数倍的人力做手工修补。
六、怎么估算月度预算
估算分四步:统计月调用量、估算平均输入输出、估计缓存命中率、套用当前单价。如果希望把多个模型的余额和用量放在一处管理,可以在中商起航 AI 网关注册后统一查看;具体价格仍以模型价格页为准。下面的代码只是计算框架,单价请从官方定价页读取后填入。
# 预算模型:所有单价均为占位值,请替换为当前官方价格
monthly_calls = 300_000
avg_input_tokens = 1_200
avg_output_tokens = 300
cache_hit_rate = 0.35
input_rate = 0.0 # 输入单价,查官方定价页
output_rate = 0.0 # 输出单价
cache_rate = 0.0 # 缓存命中单价
uncached_input = avg_input_tokens * (1 - cache_hit_rate)
cached_input = avg_input_tokens * cache_hit_rate
per_call = (
uncached_input * input_rate
+ cached_input * cache_rate
+ avg_output_tokens * output_rate
)
print(f"预估月成本:{monthly_calls * per_call:.2f} 元")
估算时留出余量。新业务的实际输入往往比设计时更长,重试和失败也会增加用量。建议先按小流量跑两周,用真实 usage 数据替换假设值,再决定预算。
七、预算控制清单
- 为每个环境、每个服务设置独立额度上限。
- 给所有请求设置最大输出长度和超时时间。
- 固定系统提示词顺序,提升缓存命中率。
- 长文档先检索、摘要,再决定是否送入长上下文。
- 只对可重试错误重试,并设置退避与次数上限。
- 每天看用量,每周看账单,异常增长立即定位。
- 离线任务优先走 Batch,实时任务再走在线接口。
八、常见问题(FAQ)
1. GLM API 具体多少钱?
价格随模型、上下文档位和活动变化,本文不列固定数字。请查看站内模型价格或智谱官方定价页,并以控制台账单为准。
2. 缓存命中是怎么计费的?
命中缓存的部分按折扣价计费,未命中的输入按标准输入价计费。具体折扣和存储费用以官方定价页为准,命中量可从 usage 字段查看。
3. 请求失败会扣费吗?
取决于失败阶段。如果已经生成了一部分内容,可能按实际用量计费;参数错误、鉴权失败通常不会产生生成费用。以账单明细为准。
4. 长上下文一定更贵吗?
通常更贵。很多模型按输入长度分档,超过阈值后单价上升。能切分或检索解决的任务,不必强行使用长上下文。
5. 怎么快速降低现有成本?
先做三件事:限制最大输出长度、压缩系统提示词、提高缓存命中率。这三项通常比换模型更快见效,也更可控。
