LangChain调用HuggingFace LLM响应被截断问题求助
解决LangChain调用HuggingFace模型响应截断问题
核心解决方案
在HuggingFaceHub的model_kwargs中添加**max_new_tokens**参数,指定模型生成的最大新token数量,即可解决响应被截断的问题。默认情况下该参数值较小,导致生成内容提前终止。
修改后的代码示例
from langchain.llms import HuggingFaceHub from langchain.prompts import ChatPromptTemplate from langchain.schema.output_parser import StrOutputParser from langchain.schema.runnable import RunnablePassthrough repo_id = 'HuggingFaceH4/zephyr-7b-alpha' template = """Answer the question. Question: {question} """ prompt = ChatPromptTemplate.from_template(template) llm = HuggingFaceHub( repo_id=repo_id, model_kwargs={ "temperature": 0.5, "use_cache": False, "max_new_tokens": 500 # 新增参数控制生成内容长度 }, huggingfacehub_api_token=HUGGINGFACEHUB_API_TOKEN ) chain = ( {"question": RunnablePassthrough()} | prompt | llm | StrOutputParser() ) chain.invoke("Write a rap battle between Stephen Colbert and John Oliver")
补充说明
max_new_tokens:控制模型在输入prompt之外额外生成的token数量,可根据需求调整(如1000、2000等,需注意模型本身的最大上下文长度限制)。- 部分模型支持
max_length参数(控制prompt+生成内容的总token数),但max_new_tokens更直接聚焦生成内容长度,推荐优先使用。
内容的提问来源于stack exchange,提问作者kevin.w.johnson
相关产品推荐
相关产品推荐

