Esquemas Pydantic para requisições e respostas
BaseModel, validação de campos, dicas de tipo, response_model e tratamento de erros de validação.
Esquemas Pydantic para requisições e respostas é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Por que usar esquemas?
Dicionários brutos são propensos a erros. Os modelos Pydantic definem o formato exato das solicitações e respostas, validando os tipos automaticamente e documentando sua API. O FastAPI os utiliza nativamente.
O BaseModel
Os esquemas do Pydantic são subclasses de BaseModel. Cada atributo tipado se torna um campo validado; tipos incorretos são rejeitados antes que seu código seja executado.
from pydantic import BaseModel
class PredictRequest(BaseModel):
features: list[float]Um esquema de solicitação
Defina o que os clientes devem enviar. Aqui, features deve ser uma lista de números de ponto flutuante, e você pode adicionar outros campos, como uma versão do modelo ou um identificador da solicitação.
class PredictRequest(BaseModel):
features: list[float]
model_version: str = "latest"Um esquema de resposta
Defina o que sua API retorna para que os clientes recebam um contrato estável e documentado.
class PredictResponse(BaseModel):
prediction: float
probability: floatUsando esquemas em um ponto de acesso
Defina o tipo do parâmetro usando seu modelo de solicitação, e o FastAPI analisará e validará automaticamente o corpo JSON em um objeto tipado.
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}O parâmetro response_model
Passe response_model ao decorador da rota. O FastAPI valida e filtra a saída para que corresponda ao esquema, removendo campos extras e documentando a resposta em /docs.
@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
return PredictResponse(prediction=1.0, probability=0.92)list[float] para vetores de atributos
Tipar os atributos como list[float] faz com que o Pydantic rejeite strings ou tipos mistos antes da inferência, detectando dados de entrada malformados na fronteira, em vez de no interior do código do modelo.
HTTPException para erros
Quando a validação dos tipos é aprovada, mas as regras de negócio falham (número incorreto de atributos, modelo desconhecido), lance HTTPException com um código de estado e uma mensagem.
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]}Validadores de campos
Um field_validator impõe regras personalizadas a um campo, como rejeitar listas de atributos vazias, antes mesmo que a lógica do ponto de acesso seja executada.
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 vRestrições de campos
Use Field para restrições declarativas, como comprimento mínimo ou intervalos numéricos, que também aparecem na documentação gerada automaticamente.
from pydantic import BaseModel, Field
class PredictRequest(BaseModel):
features: list[float] = Field(min_length=1)Respostas 422 automáticas
Quando uma solicitação falha na validação do Pydantic, o FastAPI retorna automaticamente uma 422 Entidade não processável com um corpo de erro detalhado, sem necessidade de código adicional. Essa é uma das maiores vantagens de produtividade do FastAPI.
Verificação rápida
Teste seus conhecimentos sobre esquemas do Pydantic.
Recapitulação
Você definiu esquemas BaseModel para solicitações e respostas, usou list[float] para os atributos, aplicou response_model, lançou HTTPException para erros de negócio e adicionou validadores de campos. O FastAPI retorna automaticamente o código 422 para entradas inválidas. Próximo assunto: carregamento e disponibilização do modelo.
Perguntas Frequentes
A aula “Esquemas Pydantic para requisições e respostas” é grátis?
Sim — o texto completo de “Esquemas Pydantic para requisições e respostas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Esquemas Pydantic para requisições e respostas”?
BaseModel, validação de campos, dicas de tipo, response_model e tratamento de erros de validação. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Esquemas Pydantic para requisições e respostas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos de FastAPI para engenheiros de aprendizado de máquina
- Esquemas Pydantic para requisições e respostas
- Carregando e disponibilizando modelos de aprendizado de máquina
- Conteinerização da API do modelo