Pydantic 是一个帮你验证和处理数据的 Python 库。
先说不用的痛苦
假设你写了一个函数,需要接收用户信息:
python
def create_user(name, age, email):
# 你要自己检查:
if not isinstance(name, str):
raise TypeError("name 必须是字符串")
if not isinstance(age, int) or age < 0:
raise TypeError("age 必须是大于0的整数")
if "@" not in email:
raise ValueError("email 格式不对")
# 然后才能用...
每个函数都要写一堆检查,烦不烦?
用 Pydantic 之后
python
from pydantic import BaseModel, EmailStr
class User(BaseModel):
name: str
age: int
email: EmailStr
# 使用
user = User(name="张三", age=25, email="zhangsan@example.com")
# 自动验证,不对就报错
发生了什么?
- 你只需要声明类型
- Pydantic 自动帮你检查类型、格式
- 还能自动转换类型(比如字符串 "25" 自动转成整数 25)
在 LangGraph 里怎么用?
你可能注意到有些代码里用了 TypedDict 和 dataclass:
python
class Context(TypedDict):
my_configurable_param: str
@dataclass
class State:
changeme: str = "example"
实际上 LangGraph 也支持 Pydantic,而且用起来更简单:
python
from pydantic import BaseModel
class State(BaseModel):
messages: list = [] # 对话历史
user_query: str = "" # 用户输入
class Context(BaseModel):
model: str = "gpt-4" # 模型名称
temperature: float = 0.7 # 温度参数
好处:
- 自动验证:传入的数据类型不对,自动报错
- 自动补全:IDE 能提示你有哪些字段
- 默认值:可以给字段设置默认值
核心要点
| 场景 | 没有 Pydantic | 有 Pydantic |
|---|---|---|
| 验证数据 | 手写 if 判断 | 声明类型就行 |
| 类型转换 | 手动转 | 自动转 |
| 错误提示 | 自己抛异常 | 自动抛清晰错误 |
| 代码量 | 多 | 少 |
简单记
Pydantic = 声明类型 + 自动验证
你只需要说"这个字段是字符串",它会帮你检查传进来的到底是不是字符串。在 AI 开发里特别有用,因为你经常要处理大模型返回的数据,有了 Pydantic 就不怕它返回格式不对。