Modèles de requête et de réponse

Déployer l’IA en production avec FastAPI

Matt Eckerle

Software and Data Engineering Leader

Structures de requête et de réponse dans les APIs

Structure d'une requête
  • Données envoyées par le client à l'API
  • Contient en général :
    • Méthode HTTP (GET, POST, etc.)
    • En-têtes
    • Paramètres de requête
    • Corps de la requête

http://localhost:8000/users/? [email protected]

  • :8000 : le numéro de port. FastAPI utilise 8000 par défaut.
  • /users/ : le chemin de l'endpoint ciblé.
  • ? : marque le début des paramètres de requête.
  • `[email protected]` : le paramètre de requête. Ici, on transmet une adresse e-mail à l'endpoint.
Déployer l’IA en production avec FastAPI

Structure d'une réponse

  • Données renvoyées par l'API au client
    • Charge utile JSON avec les informations utilisateur
  • Contient en général :
    • Code d'état (200 OK, 404 Not Found, etc.)
    • En-têtes
    • Corps de la réponse (données demandées ou résultat de l'opération)
HTTP/1.1 200 OK
date: Fri, 18 Oct 2024 12:34:56 GMT
server: uvicorn
content-length: 76
content-type: application/json

{
  "username": "johndoe",
  "email": "[email protected]",
  "age": 30
}
Déployer l’IA en production avec FastAPI

Modèle Pydantic

  • Création de User
  • Utilisation de Pydantic
from pydantic import BaseModel
class User(BaseModel):
    username: str
    email: str
    age: int
  • Hérite de BaseModel
  • Définit des attributs avec annotations de type
  • Validation automatique selon les types
Déployer l’IA en production avec FastAPI

Erreur de validation

from pydantic import ValidationError
try:
    invalid_user = User(username="john_doe", email="[email protected]", 
                        age="thirty")
    print("Invalid User:", invalid_user)
except ValidationError as e:
    print("Validation Error:", e)
Validation Error: 1 validation error for User age
Input should be a valid integer, unable to parse string as an integer 
[type=int_parsing, input_value='thirty', input_type=str]
Déployer l’IA en production avec FastAPI

Utiliser des modèles Pydantic dans FastAPI

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()

class User(BaseModel): username: str email: str age: int
@app.post("/users", response_model=User)
async def create_user(user: User): return user
  • Modèle utilisé comme response_model
  • Modèle utilisé comme astuce de type de paramètre
  • Validation automatique des requêtes
  • Dé/sérialisation des requêtes/réponses
  • Génération de la documentation API
Déployer l’IA en production avec FastAPI

Formats de requête et de réponse

curl -X 'POST' \
  'http://localhost:8000/users/' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "username": "john_doe",
  "email": "[email protected]",
  "age": 30
  }'

 

{
  "username": "john_doe",
  "email": "[email protected]",
  "age": 30
}
Déployer l’IA en production avec FastAPI

Passons à la pratique !

Déployer l’IA en production avec FastAPI

Preparing Video For Download...