pocketpal 中文文档 下载 App

停止条件与最大回复长度——避免无限生成

两个核心参数

max_new_tokens

单次回复最多生成多少 token。token 大致等于英文 4 字符、中文 1~2 个汉字。常用数值:

场景推荐值
简短问答256
常规回答512(默认值)
长文写作 / 代码生成1024 ~ 2048
超长输出4096(需要足够大的上下文窗口)

设太小会导致回复被截断、说一半就停;设太大浪费内存和时间。

stop tokens

停止序列。当模型生成了这段特定文本时,立即停止。常见的停止序列包括:

llama.cpp 和大部分 GGUF 模型会自动处理停止序列,一般不需要手动添加。

为什么会「无限生成」

有时模型会陷入循环,重复同一句话或同一段落。常见原因:

  1. 温度太低 + 上下文太长:模型在长上下文里找不到清晰的结束信号,就在一个局部最优里打转
  2. 模型本身缺少对话格式训练:基础模型(非 Instruct 版)不会自己停下来
  3. 没有正确的 stop token:某些自定义导入的 GGUF 文件格式不完整

防无限生成的三重保险

  1. 必设 max_new_tokens:哪怕模型失控也会在达到上限时强制截断
  2. 使用 Instruct 版模型:指令微调版自带对话结束模式
  3. 适当提高温度:温度 0.3 ~ 0.7 的区间,循环概率远低于温度 0 的确定性模式

回复太长怎么办

生成完发现回复远超预期长度,直接长按 → 重新生成。重新生成可以用不同参数跑,也可以在原始 prompt 里明确加一句「请控制在 200 字以内」来引导模型。