导入trulens-eval的Tru类时出现NameError问题求助
解决trulens_eval导入Tru时的NameError及适配Zephyr Beta方案
问题背景
复现DeepLearning.AI的LlamaIndex+TruEra高级RAG构建与评估教程,通过Docker容器运行代码(启动命令:sudo docker run -it --rm -v /data:/data -v "/root/.cache:/root/.cache" --name llama-zephyr-notebook --gpus all -p 8888:8888 jupyter/base-notebook)。已通过pip安装trulens_eval模块,DLAI环境运行正常,但本地Docker环境执行from trulens_eval import Tru时触发NameError,错误提示:
Fields must not use names with leading underscores; e.g., use 'WithClassInfo__tru_class_info' instead of '_WithClassInfo__tru_class_info'
同时需要将评估模块的后端从OpenAI替换为本地Zephyr Beta模型。
错误原因
该错误由trulens_eval依赖的pydantic版本不兼容导致。trulens_eval对pydantic有特定版本要求,而jupyter/base-notebook镜像默认安装的pydantic版本与教程环境不一致(通常是pydantic 2.x与trulens_eval的1.x依赖冲突)。
解决步骤
- 检查当前pydantic版本
在Jupyter Notebook中执行以下命令查看版本:!pip show pydantic - 重装兼容版本的trulens_eval与pydantic
执行强制重装命令,指定兼容的pydantic版本(以trulens_eval兼容的1.x版本为例):
若使用较新版本的trulens_eval,可查看其官方文档确认支持的pydantic版本,替换对应版本号即可。!pip install trulens_eval --force-reinstall pydantic==1.10.13 - 验证修复结果
重新执行from trulens_eval import Tru,确认NameError消失。
适配Zephyr Beta模型配置
- 安装必要依赖
安装LlamaIndex的HuggingFace集成及相关库:!pip install llama-index-llms-huggingface transformers accelerate - 配置LlamaIndex使用Zephyr Beta
初始化HuggingFaceLLM并设置为LlamaIndex的全局LLM:
若GPU显存不足,可使用量化版本(如from llama_index.llms.huggingface import HuggingFaceLLM from llama_index.core import Settings # 初始化Zephyr Beta模型,自动分配设备到GPU llm = HuggingFaceLLM( model_name="HuggingFaceH4/zephyr-7b-beta", model_kwargs={"device_map": "auto"}, generate_kwargs={"temperature": 0.7, "max_new_tokens": 512} ) # 设置全局LLM为Zephyr Beta Settings.llm = llmHuggingFaceH4/zephyr-7b-beta-GGUF),配合llama-cpp-python库添加量化参数。 - 配置Tru评估器使用Zephyr Beta
构建基于HuggingFace的反馈函数,关联到Tru的评估流程:from trulens_eval import Tru, Feedback, Select from trulens_eval.feedback.provider.hugs import Huggingface # 初始化HuggingFace反馈器,使用Zephyr Beta作为评估模型 hugs = Huggingface(model_id="HuggingFaceH4/zephyr-7b-beta") # 定义相关性评估反馈函数 relevance_feedback = Feedback(hugs.relevance).on( Select.RecordInput, # RAG的输入问题 Select.RecordOutput # RAG的输出回答 ) # 初始化Tru并关联你的RAG应用 tru = Tru() tru.add_app(your_rag_application, feedbacks=[relevance_feedback])
内容的提问来源于stack exchange,提问作者Timothee Milhomme
相关产品推荐
相关产品推荐

