max_tokens 是单次回复最多生成的 token 数。老张API不额外限制这个值,原样传给上游模型;不设置时使用模型自己的默认值。不同协议的参数名不同,填错名字会报错或被忽略。
设置大小有什么影响
- 太小:回答被截断,只拿到一半内容。
- 太大:不会让模型多写,模型写完就停;但上限越大,请求前的预扣费越高,余额紧张时可能被拒绝。
- 不设置:使用模型默认值。各厂商默认值不同,有的允许输出到上下文用完,有的默认较小。
不同协议怎么写
- Chat Completions
- Responses
- Anthropic Messages
- Gemini 原生
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,或改用流式分段输出。
和预扣费的关系
请求前,系统按模型价格、输入长度和预计输出长度先冻结一笔费用,完成后按实际用量结算。显式设置max_tokens 会降低预计输出,预扣金额也随之降低。余额不多却要处理长输入时,合理的输出上限能避免请求在执行前被拒绝,详见为什么还有余额但调用失败。
常见问题
老张API会限制或改写 max_tokens 吗?
不会。参数原样传给上游,唯一的限制来自模型本身的最大输出 token 数。输出被截断了怎么办?
先看截断标记(见上表)确认是不是达到了上限。是的话:- 调大上限;
- 推理模型适当调低思考档位,给正文留出预算;
- 检查参数名是否与协议一致,例如推理模型在 Chat Completions 中要用
max_completion_tokens。