Windows环境下LangChain导入UnstructuredPDFLoader报ValueError求助
问题描述
- 运行环境:Windows系统,Python 3.11.3,LangChain 0.0.166
- 触发操作:执行代码
from langchain.document_loaders import UnstructuredPDFLoader - 报错信息:
ValueError: 'not' is not a valid parameter name - 补充说明:曾注意到FastAPI有类似问题,但本次报错的栈追踪中未出现该依赖,且本地未安装FastAPI
完整报错栈追踪:
Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\langchain\__init__.py", line 6, in <module> from langchain.agents import MRKLChain, ReActChain, SelfAskWithSearchChain File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\langchain\agents\__init__.py", line 2, in <module> from langchain.agents.agent import ( File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\langchain\agents\agent.py", line 15, in <module> from langchain.agents.tools import InvalidTool File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\langchain\agents\tools.py", line 8, in <module> from langchain.tools.base import BaseTool, Tool, tool File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\langchain\tools\__init__.py", line 25, in <module> from langchain.tools.openapi.utils.api_models import APIOperation File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\langchain\tools\openapi\utils\api_models.py", line 6, in <module> from openapi_schema_pydantic import MediaType, Parameter, Reference, RequestBody, Schema File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\__init__.py", line 3, in <module> from .v3 import * File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\__init__.py", line 1, in <module> from .v3_1_0 import * File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\__init__.py", line 9, in <module> from .open_api import OpenAPI File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\open_api.py", line 5, in <module> from .components import Components File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\components.py", line 7, in <module> from .header import Header File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\header.py", line 3, in <module> from .parameter import Parameter File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\parameter.py", line 6, in <module> from .media_type import MediaType File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\media_type.py", line 8, in <module> from .schema import Schema File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\openapi_schema_pydantic\v3\v3_1_0\schema.py", line 10, in <module> class Schema(BaseModel): File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\pydantic\main.py", line 292, in __new__ cls.__signature__ = ClassAttribute('__signature__', generate_model_signature(cls.__init__, fields, config)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Student\Anaconda3\envs\RL\Lib\site-packages\pydantic\utils.py", line 258, in generate_model_signature merged_params[param_name] = Parameter( ^^^^^^^^^^ File "C:\Users\Student\Anaconda3\envs\RL\Lib\inspect.py", line 2722, in __init__ raise ValueError('{!r} is not a valid parameter name'.format(name)) ValueError: 'not' is not a valid parameter name python-BaseException
解决方案
从栈追踪可看出,问题出在openapi_schema_pydantic库的Schema类定义中,生成了名为not的参数(Python关键字),而Python 3.11的inspect模块不允许关键字作为参数名。以下是解决办法:
- 升级
pydantic到兼容Python 3.11的版本,推荐安装>=1.10.7或2.x系列版本:pip install --upgrade pydantic - 升级
openapi_schema_pydantic到最新版本,该库后续版本已修复关键字参数命名问题:pip install --upgrade openapi_schema_pydantic - 升级LangChain到较新版本,新版本LangChain依赖的
openapi_schema_pydantic通常已更新:pip install --upgrade langchain - 若临时无法升级依赖,可手动修改
openapi_schema_pydantic的schema.py文件,将not字段重命名为not_(注意同步修改相关引用),但该方法仅作临时应急,不推荐长期使用。
内容的提问来源于stack exchange,提问作者A_Arnold
相关产品推荐
相关产品推荐

