You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用OpenAI API遇响应截断(finishReason:LENGTH)的解决咨询

解决OpenAI API响应因长度截断的问题

核心原因

TEXT_DAVINCI_003的上下文总token上限为4096,你的prompt已占用5903token,远超模型上限,再加上设置的1024输出token,总token量远远超出模型处理能力,因此触发LENGTH截断。

具体解决方案

  • 精简Prompt内容
    提炼prompt中的核心任务与关键信息,删除冗余描述、重复内容或非必要细节,将prompt的token总量控制在3000以内,预留足够空间给输出内容。也可先用文本摘要工具将长prompt压缩为精简版本后再传入API。
  • 更换大上下文模型
    切换至支持更大上下文窗口的模型,例如GPT-3.5-turbo-16k(上下文上限16384token)、GPT-4基础版(8k token)或GPT-4 Turbo(16k/32k token),这类模型可容纳更长的prompt与输出内容。
  • 分批次迭代处理
    将长prompt拆分为多个小片段,依次调用API,每次调用时携带前一次的响应结果,让模型衔接上下文完成完整输出。示例代码如下:
    # 拆分长prompt并迭代调用API获取完整响应
    def split_long_prompt(prompt, chunk_size=3000):
        # 实现按token拆分prompt的逻辑
        return [prompt[i:i+chunk_size] for i in range(0, len(prompt), chunk_size)]
    
    prompt_chunks = split_long_prompt(your_long_prompt)
    full_response = ""
    for chunk in prompt_chunks:
        response = openai.Completion.create(
            model="text-davinci-003",
            prompt=f"{full_response}\n{chunk}",
            max_tokens=1024,
            temperature=0
        )
        full_response += response.choices[0].text
    
  • 调整max_tokens参数
    若必须使用TEXT_DAVINCI_003,先计算模型剩余可用token:4096 - prompt的token数,将max_tokens设置为该剩余值(例如prompt占用3500token,则max_tokens设为596),确保prompt与输出的总token不超过4096上限。

内容的提问来源于stack exchange,提问作者GoneCase123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:17:11