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

LangChain调用Intel/dynamic_tinybert输入格式错误问题咨询

LangChain调用Intel/dynamic_tinybert的正确输入格式方案

问题根源

Intel/dynamic_tinybert是BERT系列预训练模型,和原示例里的FLAN-T5(序列到序列生成模型)输入逻辑完全不一样。FLAN-T5能直接用字符串或简单字典,但BERT类模型得严格遵循预训练时的输入结构,或者借助适配后的Pipeline来处理,不然就会报输入格式错误。

正确实现方法

1. 优先用HuggingFacePipeline(最稳妥)

BERT类模型一般要搭配任务对应的Pipeline(比如问答、文本分类)才能正常工作,直接用HuggingFaceEndpoint容易踩格式坑。示例代码:

from langchain.llms import HuggingFacePipeline
from transformers import pipeline, AutoTokenizer, AutoModelForQuestionAnswering

# 加载模型和分词器
model_name = "Intel/dynamic_tinybert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForQuestionAnswering.from_pretrained(model_name)

# 创建问答Pipeline
qa_pipeline = pipeline(
    "question-answering",
    model=model,
    tokenizer=tokenizer,
    max_length=512,
    truncation=True
)

# 包装成LangChain可用的LLM
llm = HuggingFacePipeline(pipeline=qa_pipeline)

# 执行问答任务,输入必须是带question和context的字典
result = llm.predict({
    "question": "法国的首都是哪里?",
    "context": "法国是欧洲的一个国家,它的首都是巴黎。"
})
print(result)

2. 非要用HuggingFaceEndpoint/HuggingFaceHub的话

得严格按Hugging Face推理API的要求构造输入:

  • 问答任务:必须传包含question和context的字典
  • 注意:dynamic_tinybert默认只支持问答、文本分类,别拿来做翻译(除非是专门微调过的翻译版本)

示例代码:

from langchain.llms import HuggingFaceEndpoint

llm = HuggingFaceEndpoint(
    repo_id="Intel/dynamic_tinybert",
    task="question-answering",
    huggingfacehub_api_token="你的API密钥"
)

# 正确输入格式
result = llm.predict({
    "question": "什么是人工智能?",
    "context": "人工智能(AI)是指由机器,尤其是计算机系统模拟人类智能过程的技术。"
})
print(result)

通用排查注意事项

  • 先查模型支持的任务:去Hugging Face模型主页看Tasks标签,别拿问答模型去做翻译这类不兼容的任务。
  • 输入字段必须和任务匹配:问答要传question+context,文本分类传text,不能只丢个纯字符串。
  • 别手动搞token:input_ids这类字段交给LangChain或Pipeline处理就行,自己瞎构造容易出错。

内容的提问来源于stack exchange,提问作者Kingsley Uchunor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:05:06