使用PromptTemplate嵌入字符串失败:related_info无法正常嵌入求助
以下是针对性的排查和解决步骤:
检查PromptTemplate的变量定义与占位符匹配度
确保模板文本中使用的占位符{related_info}与input_variables列表中的名称完全一致(包括大小写),示例代码如下:from langchain.prompts import PromptTemplate prompt_template = """ 参考信息: {related_info} 过往对话: {chat_history} 用户提问:{input} 请基于上述内容回答。 """ PROMPT = PromptTemplate( input_variables=["chat_history", "related_info", "input"], template=prompt_template )验证Chroma检索结果的有效性
检索完成后立即打印related_info的内容,确认其不为空、不是None,且已转换为可嵌入的字符串格式:# 假设chroma_retriever是已初始化的检索器 related_docs = chroma_retriever.get_relevant_documents(user_input) # 将Document对象列表转换为字符串 related_info_str = "\n".join([doc.page_content for doc in related_docs]) print("检索到的相关信息:", related_info_str)如果结果为空,需检查Chroma数据库是否正确存入数据、检索query是否合理,或调整向量匹配的相似度阈值。
确认ConversationChain与自定义Prompt的绑定
初始化Chain时必须传入自定义的PROMPT,而非使用默认模板,同时开启verbose模式以便查看完整提示词:from langchain.chains import ConversationChain from langchain.llms import OpenAI llm = OpenAI(temperature=0) conversation_chain = ConversationChain( llm=llm, prompt=PROMPT, verbose=True # 开启后可在控制台查看拼接后的完整提示词 )检查predict方法的参数传递
调用predict时,参数名必须与PromptTemplate的input_variables严格匹配,不能出现拼写错误或漏传:response = conversation_chain.predict( chat_history="过往对话内容", related_info=related_info_str, input=user_input )排查内存组件的干扰
如果使用了内存组件(如ConversationBufferMemory),确保内存不会覆盖related_info参数:from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory( input_key="input", memory_key="chat_history" # 不要将related_info加入内存管理的键列表 ) conversation_chain = ConversationChain( llm=llm, prompt=PROMPT, memory=memory, verbose=True )
内容的提问来源于stack exchange,提问作者Nao COMATSU
相关产品推荐
相关产品推荐

