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

使用LangChain+Streamlit开发专辑推荐应用时响应截断问题

解决Langchain调用OpenAI长响应截断问题

针对你开发专辑推荐应用时遇到的长文本输出不完整问题,可从以下几个方向处理:

  • 调整OpenAI模型的max_tokens参数
    默认的max_tokens值可能偏小,导致模型输出被强制截断。初始化LLM时显式设置足够大的max_tokens,注意预留输入内容的token空间(需符合所选模型的总上下文限制,比如gpt-3.5-turbo总token上限为4096)。
    代码示例:

    from langchain.llms import OpenAI
    
    llm = OpenAI(
        temperature=0.7,
        max_tokens=2000  # 根据需求调整,确保输出有足够空间
    )
    
  • 启用流式输出
    流式输出可逐段获取模型响应,既避免截断,也能提升用户等待体验。使用支持流式的ChatOpenAI,并在Streamlit中用st.write_stream处理输出。
    代码示例:

    from langchain.chat_models import ChatOpenAI
    from langchain.schema import HumanMessage
    
    chat_llm = ChatOpenAI(
        temperature=0.7,
        max_tokens=2000,
        streaming=True
    )
    
    def stream_recommendation(prompt):
        messages = [HumanMessage(content=prompt)]
        response_stream = chat_llm.stream(messages)
        st.write_stream(response_stream)
    
    # 调用示例
    stream_recommendation("为以下艺人推荐入门专辑:XXX, XXX, Jay-Z")
    
  • 拆分多艺人请求
    当输入艺人数量过多时,Prompt占用的token会挤压输出空间,导致最后一个艺人的推荐被截断。可将请求拆分为单个艺人的独立任务,再合并结果。
    代码示例:

    artists = ["艺人A", "艺人B", "Jay-Z"]
    all_recommendations = []
    for artist in artists:
        prompt = f"为不熟悉{artist}的听众推荐入门专辑,并详细说明推荐理由"
        rec = llm(prompt)
        all_recommendations.append(f"### {artist}\n{rec}")
    
    # 在Streamlit展示合并结果
    st.markdown("\n\n".join(all_recommendations))
    
  • 检查并控制总token用量
    用Langchain的回调工具计算输入和输出的token数,确保总token数不超过模型的上下文窗口限制。如果总用量接近上限,需进一步拆分请求或精简Prompt内容。
    代码示例:

    from langchain.llms import OpenAI
    from langchain.callbacks import get_openai_callback
    
    llm = OpenAI(temperature=0.7)
    test_prompt = "你的多艺人推荐Prompt内容"
    with get_openai_callback() as cb:
        llm(test_prompt)
        print(f"输入token数: {cb.prompt_tokens}")
        print(f"输出token数: {cb.completion_tokens}")
        print(f"总token数: {cb.total_tokens}")
    
  • 优化Chain配置
    若使用LLMChain,检查Prompt模板是否有不必要的冗余内容,避免占用额外token。也可改用SequentialChain将多艺人推荐拆分为多个步骤,分步生成每个艺人的内容,降低单请求的token压力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:23:37