max_tokens 是什么
max_tokens 限制单次响应能生成的最长长度,约束的是输出而不是输入:设得再小也不会让长提示词被截断,设得再大也不会突破模型的上下文窗口。部分新接口把它改名为 max_completion_tokens,语义相同。推理类模型的内部分析过程同样消耗额度,因此同一个上限下,推理模型的可见答案往往更短。
基本信息
| 作用范围 | 限制输出长度,不影响输入 |
|---|---|
| 常见命名 | max_tokens,新版接口中有等价改名 |
| 与窗口关系 | 输入长度加输出上限受模型窗口约束 |
| 被截断表现 | 结束原因字段提示长度耗尽,回答在句中断开 |
| 推理模型 | 分析与答案共享同一额度上限 |
| 缺失后果 | 部分接口必填,缺失直接返回参数错误 |
被截断时怎么判断
| 现象 | 含义 | 处理 |
|---|---|---|
| 回答在句子中途断开 | 输出达到上限 | 调大上限或要求更简短的输出 |
| 结束原因提示长度限制 | 确认是截断而非模型主动停止 | 按业务需要调整上限 |
| JSON 少右括号 | 结构化输出被截断 | 提高上限并在解析失败时重试 |
| 推理模型回答特别短 | 额度被推理过程消耗 | 按推理档位与任务复杂度放宽上限 |
典型使用场景
- 结构化抽取:给足短字段所需空间,避免 JSON 被截断
- 成本控制:为批量任务设定合理上限,防止异常长输出
- 接口保护:限制单次输出,避免下游处理超时
- 分步生成:先出提纲再出正文,每步各自设上限
- 长文任务:按章节切分生成,而不是一次要求整篇
设置与验证
设置与验证
curl -s https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4o","max_tokens":256,"messages":[{"role":"user","content":"用一句话概括这段话"}]}'
# 检查返回的结束原因字段:长度限制与自然结束要区别处理
# 结构化输出场景给足余量,解析失败时优先怀疑截断
# 上限不要顶着模型窗口设置,要给输入内容预留足够空间让模型输出更短的最有效手段往往不是调小上限,而是在提示里明确字数或条数要求:上限只是保险,不是压缩工具。
上限设得偏小会让长回答静默丢失尾部内容:写作与报告类任务尤其要检查结束原因,否则会把不完整内容当成成品交付。