输出长度上限是什么
输出长度上限(常见参数名 max_tokens、max_output_tokens,各平台命名不同)限制单次回复能生成的 token 数。它的行为是硬截断:达到上限就停止生成,响应里不会有「未写完」的提示,除非程序主动检查结束原因。它的另一个常被忽略的作用是给输入与推理留预算——推理类模型会把思考过程也算进输出,思考越长,留给最终答案的空间越小。
要点
| 行为 | 硬截断:达到上限即停止,响应里不会提示未写完 |
|---|---|
| 命名 | max_tokens / max_output_tokens / max_completion_tokens 等,依平台而异 |
| 计入内容 | 推理过程的 token 通常也计入输出预算 |
| 留量 | 长推理任务要为该参数预留空间,否则思考过程会吃掉答案预算 |
| 成本 | 上限只是封顶,不会强制模型写满;实际用量看输出长度 |
典型使用场景
- 接口成本控制:给批量任务设置合理上限,避免个别请求异常拉高费用
- 长文生成分段:把长输出拆成多次调用,每次只写一节,避开单次上限
- 结构化输出:按字段数量估算上限,留出余量以减少截断
- 推理任务:为思考过程预留预算,避免答案被截断
- 流式输出:上限配合超时与重试策略,处理长尾请求
排查速记
排查速记
输出以半个 JSON、半个句子或停在列表中途结束?
1) 先看结束原因是否为长度截断 # 程序侧判断,不靠肉眼
2) 调大输出上限再重试一次
3) 仍然截断:检查任务是否要求了超长输出,考虑分段生成
4) JSON 不完整要按截断处理并重试,不要盲目重发同样的请求截断与失败的区别
| 现象 | 可能原因 | 处理 |
|---|---|---|
| JSON 结尾不完整 | 触达输出上限 | 提高上限并重试,解析端识别不完整 JSON |
| 推理写完但没有结论 | 思考占用预算过多 | 调大上限或要求精简推理 |
| 回答明显变短但内容完整 | 上限偏低被硬切 | 按任务类型调高上限 |
| 请求直接报错 | 上限值超出模型支持范围 | 按平台文档核对允许的最大值 |
把上限设得过低会静默产生不完整输出,下游按正常结果入库后难以追溯;解析端必须能识别截断并触发重试。