Skip to main content
max_tokens 是单次回复最多生成的 token 数。老张API不额外限制这个值,原样传给上游模型;不设置时使用模型自己的默认值。不同协议的参数名不同,填错名字会报错或被忽略。

设置大小有什么影响

  • 太小:回答被截断,只拿到一半内容。
  • 太大:不会让模型多写,模型写完就停;但上限越大,请求前的预扣费越高,余额紧张时可能被拒绝。
  • 不设置:使用模型默认值。各厂商默认值不同,有的允许输出到上下文用完,有的默认较小。
推理模型的思考过程也算在输出预算里,只是不出现在回复正文中。上限设得太小时,可能思考还没结束就用完了预算,返回空内容或被截断的回答。

不同协议怎么写

OpenAI 已把 Chat Completions 的 max_tokens 标为弃用,推理模型(GPT-6、GPT-5.x、o 系列等)要用 max_completion_tokens:
其他兼容模型如果不认 max_completion_tokens,改用 max_tokens,以模型说明和错误信息为准。
示例里的 client 按各协议的配置创建,Base URL 见老张API开发文档。

建议设多少

建议每次请求都显式设置,避免不同模型的默认值让结果忽长忽短。常见取值:
  • 普通对话:2048–4096;
  • 代码生成:4096–8192;
  • 长文写作:8192–16384,或改用流式分段输出。
各模型的最大输出 token 数以厂商官方文档为准,超过模型上限时,模型按自己的上限处理或返回参数错误。

和预扣费的关系

请求前,系统按模型价格、输入长度和预计输出长度先冻结一笔费用,完成后按实际用量结算。显式设置 max_tokens 会降低预计输出,预扣金额也随之降低。余额不多却要处理长输入时,合理的输出上限能避免请求在执行前被拒绝,详见为什么还有余额但调用失败。

常见问题

老张API会限制或改写 max_tokens 吗?

不会。参数原样传给上游,唯一的限制来自模型本身的最大输出 token 数。

输出被截断了怎么办?

先看截断标记(见上表)确认是不是达到了上限。是的话:
  1. 调大上限;
  2. 推理模型适当调低思考档位,给正文留出预算;
  3. 检查参数名是否与协议一致,例如推理模型在 Chat Completions 中要用 max_completion_tokens。

设置了上限,为什么回复还是很短?

上限只是天花板,模型认为答完了就会停。需要更长的内容时,在提示词里说明篇幅和结构要求。

相关文档