You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:03:12