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

如何为Langchain的ConversationalRetrievalChain添加提示词(带对话历史)

如何在ConversationalRetrievalChain中传入自定义提示词?

要给ConversationalRetrievalChain传入自定义指令提示词,你可以通过以下两种方式修改代码:

方法一:通过chain_type_kwargs直接传递提示模板

这是最简洁的方式,适用于使用默认文档合并类型(如stuff)的场景:

  1. 先定义自定义提示模板,需包含chat_history、question、context三个必要输入变量:
from langchain.prompts import PromptTemplate

custom_prompt = PromptTemplate(
    input_variables=["chat_history", "question", "context"],
    template="""参考以下对话历史和文档内容,回答用户的问题:
对话历史:{chat_history}
文档信息:{context}
用户问题:{question}
请给出准确、简洁的回答:"""
)
  1. 创建ConversationalRetrievalChain时,通过chain_type_kwargs参数传入提示模板:
qa = ConversationalRetrievalChain.from_llm(
    OpenAI(temperature=0),
    vectorstore.as_retriever(),
    memory=memory,
    chain_type="stuff",  # 可选stuff/map_reduce等文档合并方式
    chain_type_kwargs={"prompt": custom_prompt}
)

方法二:自定义CombineDocumentsChain

如果需要更灵活地控制文档合并逻辑,可以手动构建CombineDocumentsChain并传入:

  1. 导入所需模块并定义提示模板:
from langchain.chains import ConversationalRetrievalChain, StuffDocumentsChain
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI

custom_prompt = PromptTemplate(
    input_variables=["chat_history", "question", "context"],
    template="""基于对话历史和文档内容回答问题:
对话历史:{chat_history}
文档内容:{context}
问题:{question}
回答:"""
)
  1. 构建LLMChain和CombineDocumentsChain:
llm_chain = LLMChain(llm=OpenAI(temperature=0), prompt=custom_prompt)
combine_docs_chain = StuffDocumentsChain(llm_chain=llm_chain, document_variable_name="context")
  1. 将自定义的combine_docs_chain传入ConversationalRetrievalChain:
qa = ConversationalRetrievalChain.from_llm(
    OpenAI(temperature=0),
    vectorstore.as_retriever(),
    memory=memory,
    combine_docs_chain=combine_docs_chain
)

注意:提示模板必须包含chat_history(对话历史)、question(当前问题)、context(检索到的文档内容)三个变量,否则链条无法正常获取对应数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:03:25