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

如何为ConversationalRetrievalChain添加自定义提示模板以限定文档内回复?

实现基于文档内容的聊天机器人回复限制

要让你的ConversationalRetrievalChain仅从文档内容回复、不得编造答案,核心是通过自定义提示模板明确约束LLM的行为,具体实现如下:

  • 导入必要模块
    确保你已经导入PromptTemplate用于创建自定义提示:

    from langchain.prompts import PromptTemplate
    
  • 定义严格约束的提示模板
    创建一个明确告知LLM只能使用检索到的文档内容回复的模板,同时指定无相关信息时的统一回复:

    # 自定义提示模板,核心是明确约束回复范围
    custom_prompt = PromptTemplate(
        input_variables=["chat_history", "context", "question"],
        template="""你是一个严格基于文档内容回答的助手,只能使用以下提供的文档片段中的信息来回答用户的问题。如果文档中没有相关内容,请直接回复“我无法从提供的文档中找到相关答案”,绝对不能编造任何不在文档里的信息。
    
    历史对话记录:
    {chat_history}
    
    文档内容:
    {context}
    
    用户当前问题:{question}
    
    请给出你的回答:"""
    )
    
  • 将模板传入ConversationalRetrievalChain
    在初始化ConversationalRetrievalChain时,通过chain_type_kwargs参数传入自定义模板:

    qa = ConversationalRetrievalChain.from_llm(
        OpenAI(temperature=0.8, model_name='gpt-3.5-turbo-16k'),
        db.as_retriever(),
        memory=memory,
        chain_type_kwargs={"prompt": custom_prompt}
    )
    
  • 额外优化建议

    • 适当调低temperature参数(比如设为0.1),减少LLM的随机性输出,进一步降低编造概率;
    • 结合文档检索阈值设置(如db.as_retriever(search_kwargs={"k": 3, "score_threshold": 0.7})),过滤相关性低的文档片段,避免LLM基于无关内容生成回复。

内容的提问来源于stack exchange,提问作者Abhiram T Babu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:13:28