1.4 KiB
1.4 KiB
title, created, updated, type, tags, sources
| title | created | updated | type | tags | sources | ||||
|---|---|---|---|---|---|---|---|---|---|
| TypeAdapter | 2026-06-10 | 2026-06-10 | concept |
|
|
TypeAdapter
pydantic-core 提供的灵活校验接口——同一份数据,不同严格度。无需写两套模型定义。
核心场景
API 入参需要严格校验(字段不能多、类型不能松),但同一个模型在 Agent 内部传递时想宽松一点(Agent 中间步骤输出不稳定,太严阻碍流程)。
使用方式
from pydantic import BaseModel, TypeAdapter
class UserProfile(BaseModel):
name: str
age: int
email: str | None = None
model_config = {"extra": "forbid"}
# 严格模式——API 入口
api_validator = TypeAdapter(UserProfile)
# 宽松模式——Agent 内部传递
internal_validator = TypeAdapter(Any)
# 同一份数据,不同入口
profile = api_validator.validate_python(raw_data) # 硬校验
flexible = internal_validator.validate_python(raw_data) # 宽松
实用进阶
真正实用的不是切换类型——是 strict 参数和 frozen 配置在同一个模型定义上的不同用法。例如 API 入口用 strict=True,内部模块用 strict=False。