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

部署LangChain+StreamLit PDF问答应用触发PydanticUserError的解决方法

PDF文档问答应用部署时的Pydantic兼容性错误解决

我用LangChain、OpenAI(嵌入与LLM)、Chroma(向量嵌入存储)和StreamLit构建了PDF文档问答应用,尝试通过StreamLit云服务部署托管。安装完所有必要库和包后,触发如下错误:

PydanticUserError: If you use `@root_validator` with pre=False (the default) you MUST specify `skip_on_failure=True`. Note that `@root_validator` is deprecated and should be replaced with `@model_validator`. For further information visit https://errors.pydantic.dev/2.0.2/u/root-validator-pre-skip

附带回溯信息:

Traceback:
    File "/opt/render/project/src/.venv/lib/python3.7/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 552, in _run_script
    exec(code, module.__dict__)
File "/opt/render/project/src/app.py", line 3, in <module>
    from langchain.document_loaders import PyMuPDFLoader, PyPDFLoader
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/__init__.py", line 8, in <module>
    from langchain.agents import MRKLChain, ReActChain, SelfAskWithSearchChain
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/agents/__init__.py", line 2, in <module>
    from langchain.agents.agent import Agent
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/agents/agent.py", line 10, in <module>
    from langchain.chains.base import Chain
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/chains/__init__.py", line 2, in <module>
    from langchain.chains.conversation.base import ConversationChain
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/chains/conversation/base.py", line 7, in <module>
    from langchain.chains.conversation.memory import ConversationBufferMemory
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/chains/conversation/memory.py", line 7, in <module>
    from langchain.chains.conversation.prompt import SUMMARY_PROMPT
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/chains/conversation/prompt.py", line 2, in <module>
    from langchain.prompts.prompt import PromptTemplate
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/prompts/__init__.py", line 2, in <module>
    from langchain.prompts.base import BasePromptTemplate
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/prompts/base.py", line 35, in <module>
    class BasePromptTemplate(BaseModel, ABC):
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/langchain/prompts/base.py", line 41, in BasePromptTemplate
    @root_validator()
File "/opt/render/project/src/.venv/lib/python3.7/site-packages/pydantic/deprecated/class_validators.py", line 231, in root_validator
    code='root-validator-pre-skip',

问题原因

这个错误是LangChain版本与Pydantic v2.x不兼容导致的。LangChain旧版本使用了Pydantic v1.x的@root_validator语法,而Pydantic v2.x对该语法做了严格限制,同时标记@root_validator为废弃,要求替换为@model_validator。

解决方法

  • 方法1:固定Pydantic为v1.x版本
    在requirements.txt中指定兼容的Pydantic版本:

    pydantic==1.10.12
    

    然后重新安装依赖:

    pip install -r requirements.txt
    
  • 方法2:升级LangChain到兼容Pydantic v2.x的版本
    如果想保留Pydantic v2.x,需要升级LangChain到支持该版本的最新版:

    pip install --upgrade langchain
    

    注意:升级后可能需要检查代码中是否有其他依赖兼容问题,部分旧版LangChain的API在新版本中可能有变更。

  • 方法3:使用LangChain的兼容版本分支
    对于一些特定场景,可以安装LangChain的pydantic-v2兼容分支:

    pip install langchain[pydantic-v2]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:54:52