Files
myWiki/concepts/typeadapter.md

1.4 KiB
Raw Blame History

title, created, updated, type, tags, sources
title created updated type tags sources
TypeAdapter 2026-06-10 2026-06-10 concept
pydantic
validation
type-safety
raw/articles/pydantic-three-piece-suite-2026.md

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

参考