使用ConversationalRetrievalChain触发KeyError: 'generated_text'问题求助
解决ConversationalRetrievalChain调用时的'generated_text' KeyError问题
检查HuggingFacePipeline配置
该错误核心是LangChain调用HuggingFacePipeline时,返回响应结构不符合预期。初始化Gemma-2B-it的pipeline时,需明确指定任务类型为text-generation,并设置return_full_text=False(仅返回生成文本,避免结构混乱)。示例代码:from langchain.llms import HuggingFacePipeline from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline model_name = "google/gemma-2b-it" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=512, return_full_text=False, temperature=0.7 ) llm = HuggingFacePipeline(pipeline=pipe)适配Gemma模型的Prompt模板
模型对输入格式敏感,需使用Gemma专属的对话指令格式,避免因Prompt格式错误导致返回结构异常。示例模板:from langchain.prompts import PromptTemplate prompt_template = """<start_of_turn>user {question} <end_of_turn> <start_of_turn>model""" PROMPT = PromptTemplate( template=prompt_template, input_variables=["question"] ) qa = ConversationalRetrievalChain.from_llm( llm=llm, retriever=retriever, combine_docs_chain_kwargs={"prompt": PROMPT} )锁定依赖库版本
依赖库版本更新可能导致结构兼容问题,回退至之前正常运行的版本组合:pip install langchain==0.1.10 transformers==4.38.2 huggingface-hub==0.22.2验证Pipeline返回结构
单独测试pipeline输出,确认是否包含generated_text字段:test_response = pipe("Hello, how are you?") print(test_response) # 正常返回应为列表格式:[{'generated_text': '...'}],若结构异常则调整pipeline参数
内容的提问来源于stack exchange,提问作者CitrusBoy
相关产品推荐
相关产品推荐

