用于请求与响应的 Pydantic 模式
BaseModel、字段验证、类型提示、response_model,以及处理验证错误。
用于请求与响应的 Pydantic 模式 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
为什么需要模式?
直接使用字典容易出错。Pydantic 模型可以定义请求和响应的准确结构,自动验证类型,并记录您的 API 文档。FastAPI 原生支持这些模型。
BaseModel
Pydantic 模式继承自 BaseModel。每个带类型的属性都会成为经过验证的字段;类型错误会在您的代码运行前被拒绝。
from pydantic import BaseModel
class PredictRequest(BaseModel):
features: list[float]请求模式
定义客户端必须发送的内容。在这里,features 必须是浮点数列表;您还可以添加模型版本或请求编号等字段。
class PredictRequest(BaseModel):
features: list[float]
model_version: str = "latest"响应模式
定义 API 返回的内容,让客户端获得稳定且有文档说明的契约。
class PredictResponse(BaseModel):
prediction: float
probability: float在端点中使用模式
使用请求模型为参数添加类型注解,FastAPI 就会自动将 JSON 请求正文解析并验证为带类型的对象。
from fastapi import FastAPI
app = FastAPI()
@app.post("/predict")
def predict(req: PredictRequest):
pred = model.predict([req.features])[0]
return {"prediction": pred, "probability": 0.92}response_model 参数
将 response_model 传给路由装饰器。FastAPI 会验证输出,并将其筛选为符合模式的结构,删除任何额外字段,同时在 /docs 中记录响应信息。
@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
return PredictResponse(prediction=1.0, probability=0.92)使用 list[float] 表示特征向量
将特征声明为 list[float],意味着 Pydantic 会在推理前拒绝字符串或混合类型,在输入边界处捕获格式错误,而不是等错误深入模型代码后才暴露。
使用 HTTPException 处理错误
当类型验证通过但业务规则失败时(例如特征数量错误或模型未知),请使用状态代码和消息引发 HTTPException。
from fastapi import HTTPException
@app.post("/predict")
def predict(req: PredictRequest):
if len(req.features) != 4:
raise HTTPException(status_code=422,
detail="Expected exactly 4 features")
return {"prediction": model.predict([req.features])[0]}字段验证器
field_validator 可以对字段实施自定义规则,例如在端点逻辑运行前拒绝空的特征列表。
from pydantic import BaseModel, field_validator
class PredictRequest(BaseModel):
features: list[float]
@field_validator("features")
@classmethod
def not_empty(cls, v):
if not v:
raise ValueError("features cannot be empty")
return v字段约束
使用 Field 声明最小长度或数值范围等约束;这些约束也会显示在自动生成的文档中。
from pydantic import BaseModel, Field
class PredictRequest(BaseModel):
features: list[float] = Field(min_length=1)自动返回 422 响应
请求未通过 Pydantic 验证时,FastAPI 会自动返回带有详细错误正文的 422 Unprocessable Entity,无需编写额外代码。这是 FastAPI 最能提升开发效率的优势之一。
快速检查
请检验您对 Pydantic 模式的掌握情况。
回顾
您已经为请求和响应定义了 BaseModel 模式,使用 list[float] 表示特征,应用了 response_model,针对业务错误引发了 HTTPException,并添加了字段验证器。对于无效输入,FastAPI 会自动返回 422。下一步:加载并提供模型服务。
常见问题解答
「用于请求与响应的 Pydantic 模式」课时是免费的吗?
是的 — 「用于请求与响应的 Pydantic 模式」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「用于请求与响应的 Pydantic 模式」这节课中我会学到什么?
BaseModel、字段验证、类型提示、response_model,以及处理验证错误。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「用于请求与响应的 Pydantic 模式」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 面向机器学习工程师的 FastAPI 基础
- 用于请求与响应的 Pydantic 模式
- 加载和提供机器学习模型
- 将模型 API 容器化