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

# TypeAdapter

> [[pydantic-core|pydantic-core]] 提供的灵活校验接口——同一份数据，不同严格度。无需写两套模型定义。

## 核心场景

API 入参需要严格校验（字段不能多、类型不能松），但同一个模型在 Agent 内部传递时想宽松一点（Agent 中间步骤输出不稳定，太严阻碍流程）。

## 使用方式

```python
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`。

## 参考

- [[pydantic-core|pydantic-core]]
- [[pydantic|Pydantic]]
- [[pydantic-three-piece-suite|Pydantic 三件套]]
