Retornando resposta de predição estruturada

Colocando IA em Produção com FastAPI

Matt Eckerle

Software and Data Engineering Leader

Desafios ao implantar modelos

Fluxograma mostrando predição de ML com FastAPI

 

 

  1. Receber os dados de entrada corretamente
  2. Validar os dados e tratar erros
  3. Fazer previsões
  4. Retornar respostas bem estruturadas
Colocando IA em Produção com FastAPI

Definindo a estrutura da requisição

from pydantic import BaseModel
class PredictionRequest(BaseModel):
    text: str
class PredictionResponse(BaseModel):

text: str
sentiment: str
confidence: float
Colocando IA em Produção com FastAPI

Criando o endpoint de predição

@app.post("/predict")
def predict_sentiment(request: PredictionRequest):
    if sentiment_model is None:
        raise HTTPException(
            status_code=503,
            detail="Model not loaded"
        )

result = sentiment_model(request.text)
return PredictionResponse( text=request.text, sentiment=result[0]["label"], confidence=result[0]["score"] )

JSON de entrada:

{"text": "This movie was fantastic!"}

 

Resposta:

{
    "text": "This movie was fantastic!",
    "sentiment": "POSITIVE",
    "confidence": 0.95
}
Colocando IA em Produção com FastAPI

Tratamento de erros

try:
  result = sentiment_model(request.text)
  return PredictionResponse(
        text=request.text,
        sentiment=result[0]["label"],
        confidence=result[0]["score"]
    )
except Exception:
  raise HTTPException(
        status_code=500,
        detail="Prediction failed"
    )

Resposta quando o modelo não consegue prever

{
    "detail": "Prediction failed",
    "status_code": 500
}
Colocando IA em Produção com FastAPI

Testando o endpoint

# Example request
import requests

response = requests.post(
    "http://localhost:8000/predict",
    json={"text": "Great product!"}
)
print(response.json())
{
    "text": "Great product!",
    "sentiment": "POSITIVE",
    "confidence": 0.998
}
Colocando IA em Produção com FastAPI

Vamos praticar!

Colocando IA em Produção com FastAPI

Preparing Video For Download...