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
相关产品推荐
相关产品推荐

