Google Colab中HuggingFace ChatHuggingFace输出与LangChain文档不一致
解决ChatHuggingFace输出带对话角色标记的问题
当使用HuggingFace ChatHuggingFace模块生成文本时,输出出现<|system|>、<|user|>、<|assistant|>等标记,和LangChain文档展示的纯回答内容不一致,可通过以下方法解决:
自定义Prompt模板,从源头避免标记生成
用ChatPromptTemplate构建仅包含用户输入的对话模板,替代默认的带角色标记的格式化逻辑:from langchain.prompts import ChatPromptTemplate from langchain_community.chat_models import ChatHuggingFace # 初始化模型 chat_model = ChatHuggingFace(model="你的模型名称") # 定义仅保留用户消息的模板 prompt = ChatPromptTemplate.from_messages([ ("user", "{input}") ]) # 构建调用链 chain = prompt | chat_model # 调用生成纯回答 result = chain.invoke({"input": "你的提问内容"}) print(result.content)后处理提取纯回答内容
如果不想修改prompt逻辑,可直接对生成结果做字符串处理,提取<|assistant|>标记后的内容:output = chain.invoke({"input": "你的提问内容"}) pure_answer = output.content.split("<|assistant|>")[-1].strip() print(pure_answer)调整模型的聊天模板配置
部分HuggingFace模型自带默认聊天模板,会自动添加角色标记。可修改模型的chat_template配置:# 查看当前模型的聊天模板 print(chat_model.model.config.chat_template) # 替换为仅输出助手回答的模板(语法需匹配模型要求) chat_model.model.config.chat_template = "{{assistant}}"
优先推荐自定义Prompt模板的方式,能确保输出格式完全符合预期,避免后续的字符串处理成本。
内容的提问来源于stack exchange,提问作者muk
相关产品推荐
相关产品推荐

