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

如何获取GPT模型完整回复?解决自定义聊天机器人回复截断问题

解决GPT模型回复不完整的方案

1. 修正模型与LLM初始化配置

你当前用ChatOpenAI加载text-davinci-003存在适配问题:text-davinci-003是文本补全模型,而ChatOpenAI针对的是聊天模型(如gpt-3.5-turbo),二者不匹配会导致输出异常。可二选一调整:

方案A:更换为聊天模型(推荐)

修改LLM初始化代码,适配聊天模型:

from langchain.chat_models import ChatOpenAI
llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo", max_tokens=num_outputs))

方案B:适配文本补全模型

若坚持使用text-davinci-003,改用LangChain的OpenAI类:

from langchain.llms import OpenAI
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-davinci-003", max_tokens=num_outputs))

2. 调整文档分割与Prompt参数

当前chunk_size_limit=600过小,会导致上下文被过度切割,模型无法获取完整信息生成回复。优化参数如下:

def construct_index(directory_path):
    # 适配模型最大token限制,调整参数
    max_input_size = 8192  # 匹配gpt-3.5-turbo的最大输入token数
    num_outputs = 3000     # 预留输入token空间后,设置合理的输出上限
    max_chunk_overlap = 30 # 增大重叠率,避免上下文断裂
    chunk_size_limit = 2000 # 提升chunk尺寸,保留更多完整上下文

    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
    # 后续代码保持不变...

3. 优化查询时的输出控制

在调用index.query()时,显式指定参数强制生成完整回复:

def ask_ai(query):
    index = GPTSimpleVectorIndex.load_from_disk('index.json')
    response = index.query(
        query,
        response_mode="compact",  # 整合上下文生成连贯回复
        max_tokens=3000,          # 显式指定输出token上限
        temperature=0.5
    )
    return response.response

4. 修复Flask路由的参数传递问题

当前路由@app.route('/<question>')无法处理含特殊字符的问题(如空格、问号),会导致请求异常,改用GET参数传递:

from flask import request

@app.route('/')
def answer_question():
    question = request.args.get('question')
    if not question:
        return "请通过question参数传递问题"
    answer = ask_ai(question)
    return answer

访问方式改为http://localhost:5000/?question=你的问题,避免URL解析错误导致的回复截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:53:32