Gestire diversi tipi di input in FastAPI

Deployment di AI in produzione con FastAPI

Matt Eckerle

Software and Data Engineering Leader

Ristorante vs API

Un ristorante paragonato agli input di un'API

Deployment di AI in produzione con FastAPI

Flusso di validazione

 

 

  • Dati in arrivo tramite richiesta
  • Validazione degli input con Pydantic
  • Elabora tipi di dati diversi secondo il modello
  • Input elaborati inviati al modello

Un diagramma di flusso che spiega la validazione delle richieste

Deployment di AI in produzione con FastAPI

Sistema di moderazione dei commenti

 

class CommentMetrics(BaseModel):
    length: int           
    user_karma: int     
    report_count: int

class CommentText(BaseModel): content: str

Immagini di icone di box dei commenti

Deployment di AI in produzione con FastAPI

Endpoint per numeri in virgola mobile

app = FastAPI()

@app.post("/predict")
def predict_score(data: CommentMetrics):
features = np.array([ data.length, data.user_karma, data.report_count ])
model = CommentScorer() prediction = model.predict(features)
return {"prediction": round(prediction, 2), "input": data.dict()}
Deployment di AI in produzione con FastAPI

Endpoint per input testuale

@app.post("/analyze_text")

def analyze(comment: CommentText):
forbidden = ["spam", "hate", "free" "fake", "sign up"]
text_lower = comment.lower()
issues = [word for word in forbidden if word in text_lower]
return { "issues": issues, "needs_moderation": len(issues) }

Output per il commento: Sign up for free

{
    "issues": ["free", "sign up"],
    "needs_moderation": 2
}
Deployment di AI in produzione con FastAPI

Esercitiamoci!

Deployment di AI in produzione con FastAPI

Preparing Video For Download...