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 API

Structure d'une requête
  • Données envoyées par le client à l'API
  • Contient généralement :
    • 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 : Port. FastAPI utilise 8000 par défaut.
  • /users/ : Chemin de l'endpoint visé.
  • ? : Début des paramètres de requête.
  • `[email protected]` : Paramètre de requête. Ici, on transmet une adresse de courriel à 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 JSON avec les infos de l'utilisateur
  • Contient généralement :
    • Code d'état (200 OK, 404 Not Found, etc.)
    • En-têtes
    • Corps de la réponse (données demandées ou résultat)
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 basée sur 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 indication de type de paramètre
  • Validation automatique des requêtes
  • Dé/sérialisation requête/réponse
  • Génération de la doc de l'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...