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

Langchain与Pydantic@root_validator兼容问题求助

问题:LangChain与Pydantic版本兼容导致@root_validator错误

我正在跟随LangChain的SQL数据库教程开发,使用Python 3.8.0版本,导入LangChain相关模块时触发Pydantic的@root_validator错误,推测是版本兼容问题,以下是代码和错误信息:

代码

from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain.llms.openai import OpenAI
from langchain.agents import AgentExecutor
from langchain.agents.agent_types import AgentType
from langchain.chat_models import ChatOpenAI

db = SQLDatabase.from_uri("sqlite:Chinook.db")
toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))

agent_executor = create_sql_agent(
    llm=OpenAI(temperature=0),
    toolkit=toolkit,
    verbose=True,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)

agent_executor.run("Describe the playlisttrack table")

错误信息

PS D:\utils> python chatgpt.py
Traceback (most recent call last):
  File "chatgpt.py", line 1, in <module>
    from langchain.agents import create_sql_agent
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\__init__.py", line 8, in <module>
    from langchain.agents import MRKLChain, ReActChain, SelfAskWithSearchChain
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\agents\__init__.py", line 2, in <module>
    from langchain.agents.agent import Agent
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\agents\agent.py", line 10, in <module>
    from langchain.chains.base import Chain
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\chains\__init__.py", line 2, in <module>
    from langchain.chains.conversation.base import ConversationChain
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\chains\conversation\base.py", line 7, in <module>
    from langchain.chains.conversation.memory import ConversationBufferMemory
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\chains\conversation\memory.py", line 7, in <module>
    from langchain.chains.conversation.prompt import SUMMARY_PROMPT
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\chains\conversation\prompt.py", line 2, in <module>
    from langchain.prompts.prompt import PromptTemplate
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\prompts\__init__.py", line 2, in <module>
    from langchain.prompts.base import BasePromptTemplate
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\prompts\base.py", line 35, in <module>
    class BasePromptTemplate(BaseModel, ABC):
  File "D:\Programs\Python\Python38\lib\site-packages\langchain\prompts\base.py", line 41, in BasePromptTemplate
    @root_validator()
  File "D:\Programs\Python\Python38\lib\site-packages\pydantic\deprecated\class_validators.py", line 228, in root_validator
    raise PydanticUserError(
pydantic.errors.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.3/u/root-validator-pre-skip

解决方案

核心原因

你安装的LangChain版本与Pydantic v2.x不兼容:LangChain旧版本依赖Pydantic v1.x的@root_validator语法,而Pydantic v2.x已废弃该语法,强制要求新增参数或替换为@model_validator。

具体解决方法

  • 方法1(推荐,适配Python3.8):安装适配Python3.8的LangChain稳定版本,同时锁定Pydantic v1.x版本
    pip install langchain==0.0.240 pydantic==1.10.12
    
  • 方法2:若需使用LangChain新版本,需将Python升级至3.9及以上(LangChain新版本对Python版本要求更高,且已适配Pydantic v2)

验证

执行上述安装操作后,重新运行代码即可正常导入模块并执行SQL查询任务。


内容的提问来源于stack exchange,提问作者Robert Green MBA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:12:11