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

使用Hugging Face Prompt Injection Identifier遇Pydantic ForwardRef错误求助

问题描述

包版本

  • langchain==0.1.14
  • langchain-community==0.0.31
  • langchain-core==0.1.38
  • langchain-experimental==0.0.56
  • pydantic==1.10.14

我正尝试按照官方教程实现提示注入识别功能,以下是加载注入识别器的代码片段:

from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer, pipeline

tokenizer = AutoTokenizer.from_pretrained("ProtectAI/deberta-v3-base-prompt-injection", 
                                           subfolder="onnx")
tokenizer.model_input_names = ["input_ids", "attention_mask"]
model = ORTModelForSequenceClassification.from_pretrained("ProtectAI/deberta-v3-base-prompt-injection", 
                                                          export=False, 
                                                          subfolder="onnx",
                                                          file_name="model_optimized.onnx"
                                                         )

classifier = pipeline(
                     task="text-classification",
                     model=model,
                     tokenizer=tokenizer,
                     truncation=True,
                     max_length=512,
                    )

from langchain_experimental.prompt_injection_identifier import (
                                                        HuggingFaceInjectionIdentifier,
                                                        )

injection_identifier = HuggingFaceInjectionIdentifier(
                                                     model=classifier,
                                                    )

运行后触发如下错误:

ERROR: pydantic.errors.ConfigError: field "model" not yet prepared so type is still a 
ForwardRef, you might need to call 
HuggingFaceInjectionIdentifier.update_forward_refs().
CONTEXT: Traceback (most recent call last):

解决方案

这个错误是Pydantic前向引用未解析导致的,直接在初始化HuggingFaceInjectionIdentifier前调用update_forward_refs()方法就能解决。

修改后的代码:

from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer, pipeline
from langchain_experimental.prompt_injection_identifier import HuggingFaceInjectionIdentifier

# 提前导入所有依赖模块,避免前向引用延迟解析
tokenizer = AutoTokenizer.from_pretrained("ProtectAI/deberta-v3-base-prompt-injection", 
                                           subfolder="onnx")
tokenizer.model_input_names = ["input_ids", "attention_mask"]
model = ORTModelForSequenceClassification.from_pretrained("ProtectAI/deberta-v3-base-prompt-injection", 
                                                          export=False, 
                                                          subfolder="onnx",
                                                          file_name="model_optimized.onnx"
                                                         )

classifier = pipeline(
                     task="text-classification",
                     model=model,
                     tokenizer=tokenizer,
                     truncation=True,
                     max_length=512,
                    )

# 解析前向引用
HuggingFaceInjectionIdentifier.update_forward_refs()

injection_identifier = HuggingFaceInjectionIdentifier(
                                                     model=classifier,
                                                    )

另外也可以调整导入顺序,把HuggingFaceInjectionIdentifier的导入放在最开头,确保类定义时相关类型已被加载。如果问题依旧,检查依赖包版本是否匹配,尤其是pydantic和langchain-experimental的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:10:26