Servindo com FastAPI
O FastAPI envolve modelos de ML em endpoints HTTP tipados com documentação OpenAPI automática. Carregue o modelo uma vez na inicialização, valide as entradas com Pydantic e exponha verificações de saúde para orquestração.
Busque em todas as páginas da documentação
O FastAPI envolve modelos de ML em endpoints HTTP tipados com documentação OpenAPI automática. Carregue o modelo uma vez na inicialização, valide as entradas com Pydantic e exponha verificações de saúde para orquestração.
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
app = FastAPI()
model = joblib.load("model.joblib")
class PredictRequest(BaseModel):
features: list[float]
@app.post("/predict")
def predict(req: PredictRequest) -> dict:
pred = model.predict([req.features])
return {"prediction": pred.tolist()}"""serving_fastapi.py - API de modelo pronta para produção."""
from __future__ import annotations
from contextlib import asynccontextmanager
from typing import Any
import joblib
import numpy as np
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
MODEL_PATH = "models/churn_pipeline.joblib"
MODEL_VERSION = "1.2.0"
model: Any = None
@asynccontextmanager
async def lifespan(app: FastAPI):
global model
model = joblib.load(MODEL_PATH)
yield
model = None
app = FastAPI(title="Churn Predictor", version=MODEL_VERSION, lifespan=lifespan)
class PredictRequest(BaseModel):
tenure: float = Field(ge=0)
monthly_charges: float = Field(ge=0)
total_charges: float = Field(ge=0)
class PredictResponse(BaseModel):
churn_probability: float
churn_prediction: bool
model_version: str
@app.get("/health")
def health() -> dict:
return {"status": "ok", "model_loaded": model is not None}
@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
if model is None:
raise HTTPException(503, "Modelo não carregado")
features = np.array([[req.tenure, req.monthly_charges, req.total_charges]])
proba = model.predict_proba(features)[0][1]
return PredictResponse(
churn_probability=round(float(proba), 4),
churn_prediction=proba >= 0.5,
model_version=MODEL_VERSION,
)Execute: uvicorn serving_fastapi:app --host 0.0.0.0 --port 8000
/health.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| FastAPI | Modelos Python, lógica personalizada | Taxa de transferência máxima (use Triton) |
| BentoML | Serviço de modelo empacotado | API simples de endpoint único |
| Flask | Aplicativos legados | Novos projetos (use FastAPI) |
| AWS Lambda + container | Baixo tráfego, serverless | Inferência de GPU |
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026