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

LangChain构建RAG时LLM输出含提示与上下文的问题解决

解决LangChain中开源模型冗余输出与答案截断问题

1. 适配模型的自定义Prompt模板

针对Mixtral-8x7B-Instruct、Bloom这类指令微调模型,需明确约束输出格式,避免冗余内容:

  • ConversationalRetrievalChain:替换默认的QA提示和问题浓缩提示,强制仅输出答案:
    from langchain.prompts import PromptTemplate
    
    # 核心QA提示模板
    QA_PROMPT = PromptTemplate(
        template="""基于以下上下文回答问题,**仅输出答案内容,禁止重复问题、提示词或上下文**:
    上下文:{context}
    问题:{question}
    答案:""",
        input_variables=["context", "question"],
    )
    
    # 构建链时替换prompt
    chain = ConversationalRetrievalChain.from_llm(
        llm=your_model_instance,
        retriever=document_retriever,
        qa_prompt=QA_PROMPT,
        verbose=False  # 关闭verbose避免额外输出
    )
    
  • RetrievalQAChain:直接将上述QA_PROMPT传入链的构造参数。

2. 调整模型生成参数解决截断

调大max_new_tokens并设置精准的停止符,避免答案截断和冗余输出:

from langchain.llms import HuggingFacePipeline
from transformers import pipeline

# 配置生成管道
text_gen_pipeline = pipeline(
    "text-generation",
    model="mistralai/Mixtral-8x7B-Instruct-v0.1",
    model_kwargs={
        "temperature": 0.1,
        "max_new_tokens": 2048,  # 根据需求调整,如4096
        "do_sample": False
    },
    stop=["\n\n", "###"]  # 匹配模型输出的终止标记,阻止冗余内容
)

llm = HuggingFacePipeline(pipeline=text_gen_pipeline)

3. 遵循模型专属指令格式

Mixtral和Bloom有官方指定的指令格式,严格遵循可提升模型对输出要求的理解:

# Mixtral专属格式模板
MIXTRAL_QA_PROMPT = PromptTemplate(
    template="<s>[INST]基于以下上下文回答问题,仅输出答案,不要重复输入内容:\n上下文:{context}\n问题:{question}[/INST]",
    input_variables=["context", "question"],
)

4. 输出后处理过滤冗余

若上述方案仍有残留,添加后处理逻辑提取纯答案:

def clean_output(raw_answer):
    # 针对自定义模板的截断
    if "答案:" in raw_answer:
        return raw_answer.split("答案:")[-1].strip()
    # 针对Mixtral格式的截断
    elif "[/INST]" in raw_answer:
        return raw_answer.split("[/INST]")[-1].strip()
    # 针对Bloom的通用截断
    elif "回答:" in raw_answer:
        return raw_answer.split("回答:")[-1].strip()
    return raw_answer

# 使用链获取结果后处理
response = chain({"question": user_question, "chat_history": chat_history})
final_answer = clean_output(response["answer"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:18:09