输出被截断怎么处理

Alexer 发布于 阅读:13 AI栈

输出被截断,就是模型的话说到一半停住了。常见原因有三种:max_tokens 设得太小、误触了 stop 序列、输入加输出超过了上下文窗口。处理思路就一条:先看响应里的结束原因,再针对性改参数。

最短步骤:拿到返回后先读 finish_reason。等于 length,说明被长度上限卡住,把 max_tokens 调大,或者把任务拆小;等于 stop,检查自己传的 stop 参数是否和正文里的字符冲突;如果是报错提示上下文超限,就把输入裁短或者分多轮问。

import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
resp = client.chat.completions.create(
    model="你自己的模型名",          # 换成实际在用的模型标识
    messages=[{"role": "user", "content": "把这段话改成三条要点:……"}],
    max_tokens=256,                  # 输出长度上限,别抠太小
    stop=None,                       # 不确定就别传 stop
)
choice = resp.choices[0]
print(choice.finish_reason)          # length 就是被截断了
print(choice.message.content)

坑一:只顾着把 max_tokens 往大调,没算输入加输出的总长度,窗口还是会满,照样断在半路。要长文本就分段生成再拼接。

坑二:随手把 stop 设成换行符之类的短符号,模型刚换行就停,看起来像截断其实是自己踩了刹车。调试时先把 stop 去掉,确认完整输出后再加回来。

AI 开发 调试工具 模型部署