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

使用LangChain与Pydantic时遭遇no validator found错误求助

解决LangChain + Pydantic 2.x中的"no validator found"错误

问题根源

你使用的LangChain 0.0.284版本的create_extraction_chain_pydantic方法底层依赖Pydantic v1的实现,但当前环境安装的是Pydantic 2.8.2。两者的模型配置逻辑、字段验证机制存在兼容性差异,导致LangChain在生成提取链时无法识别你的Resume模型,抛出"no validator found"错误。

可行解决方案

方案1:降级Pydantic到v1兼容版本

直接将Pydantic降级至LangChain 0.0.284支持的v1版本:

pip install pydantic==1.10.13

降级后无需修改原代码,直接运行即可正常生成提取链。

方案2:不降级Pydantic,改用create_extraction_chain替代

如果需要保留Pydantic 2.x,可使用LangChain的通用提取链方法,手动处理模型转换:

from typing import Optional
from pydantic import BaseModel, Field, ValidationError
from config import set_environment
from langchain.chains import create_extraction_chain  # 替换原方法
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import PyPDFLoader

class Resume(BaseModel):
    first_name: Optional[str] = Field(None, description="First Name")
    last_name: Optional[str] = Field(None, description="Last Name")
    email: Optional[str] = Field(None, description="Email Address")
    phone: Optional[str] = Field(None, description="Phone Number")

set_environment()

# 原有验证代码保持不变
sample_data = {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "123-456-7890"
}

try:
    resume = Resume(**sample_data)
    print("Validation successful:", resume)
except ValidationError as e:
    print("Validation error:", e)

# PDF加载部分不变
pdf_file_path = "laverne-resume.pdf"
pdf_loader = PyPDFLoader(pdf_file_path)
docs = pdf_loader.load_and_split()

chat_model = ChatOpenAI(model_name="gpt-3.5-turbo")

# 从Pydantic 2模型生成提取schema
schema = Resume.model_json_schema()
extraction_schema = {
    "properties": schema["properties"],
    "required": []  # 根据需求添加必填字段
}

chain = create_extraction_chain(schema=extraction_schema, llm=chat_model)
resp = chain.run(docs)

# 将LLM输出转换为Resume模型实例
resume_instances = [Resume(**item) for item in resp]
print(resume_instances)

方案3:升级LangChain到支持Pydantic 2的版本

LangChain 0.1.x及以上版本全面支持Pydantic 2,升级后原代码可直接运行:

pip install --upgrade langchain>=0.1.0

升级后无需修改代码,create_extraction_chain_pydantic方法会自动适配Pydantic 2的模型。

内容的提问来源于stack exchange,提问作者Aravind Yarram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:55:20