如何将PromptTemplate集成到LangChain与ChromaDB的问答链中?
如何将客服场景PromptTemplate集成到LangChain-ChromaDB问答代码中
问题背景
现有一段基于LangChain和ChromaDB的向量存储查询代码,需要集成客服场景的自定义PromptTemplate,让大语言模型以客服身份回答用户问题。
集成步骤
核心是在加载问答链(load_qa_chain)时,将自定义的SALES_PROMPT传入,替换默认的提示词模板。具体修改如下:
- 保留原有的客服场景PromptTemplate定义,确保其包含
context和question两个输入变量; - 调用
load_qa_chain时,通过prompt参数传入自定义的SALES_PROMPT; - 向量存储查询、文档匹配等原有逻辑保持不变。
修改后的完整代码
# 嵌入文本 from langchain.embeddings import SentenceTransformerEmbeddings embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") # 初始化Chroma向量存储 from langchain.vectorstores import Chroma db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings) # 配置OpenAI大语言模型 import os os.environ["OPENAI_API_KEY"] = 'sk-12345678910' from langchain.chat_models import ChatOpenAI model_name = "gpt-3.5-turbo" llm = ChatOpenAI(model_name=model_name) # 定义客服场景PromptTemplate sales_template = """You are customer services and you need to help people. {context} Question: {question}""" SALES_PROMPT = PromptTemplate( template=sales_template, input_variables=["context", "question"] ) # 加载带自定义提示词的问答链 from langchain.chains.question_answering import load_qa_chain chain = load_qa_chain(llm, chain_type="stuff", prompt=SALES_PROMPT, verbose=True) # 执行查询与问答 query = "What does Neil do for work?" matching_docs = db.similarity_search(query) answer = chain.run(input_documents=matching_docs, question=query) print(answer)
关键说明
chain_type="stuff"表示将所有匹配到的文档内容拼接后传入提示词,适合文档内容较短的场景;- 自定义提示词中的
{context}会被匹配到的文档内容自动填充,{question}会被用户的查询内容填充; - 开启
verbose=True可以查看大语言模型接收的完整提示词内容,方便调试模板效果。
内容的提问来源于stack exchange,提问作者VGA
相关产品推荐
相关产品推荐

