Gestion de versions d'API et documentation

Déployer l’IA en production avec FastAPI

Matt Eckerle

Software and Data Engineering Leader

Pourquoi versionner une API ?

 

  • Points de terminaison d'API comme éléments de menu
  • Garder les anciens clients satisfaits
  • Certains clients veulent de nouvelles options
  • Itérer sans impacter les clients existants

Un restaurant

Déployer l’IA en production avec FastAPI

API pour des jobs IA dans le cloud

from pydantic import BaseModel

class AIJobV1(BaseModel):
    job_name: str
    data: bytes
class AIJobV1(BaseModel):
    job_name: str
    data: bytes
    config: dict

Logo de FastAPI AI Cloud

Déployer l’IA en production avec FastAPI

Points de terminaison versionnés

from pydantic import BaseModel

class AIJobV1(BaseModel):
    job_name: str
    data: bytes

class AIJobV2(BaseModel): job_name: str data: bytes config: dict
from fastapi import FastAPI

app = FastAPI()

@app.post("/v1/ai-job")
def ai_job_v1(job: AIJobV1):
    ...

@app.post("/v2/ai-job") def ai_job_v2(job: AIJobV2): ...
Déployer l’IA en production avec FastAPI

Quand mettre à jour la version d'un endpoint

 

  • Modification incompatible du schéma
  • Changement de la fonction sous-jacente
    • Code du modèle mis à jour
    • Jeu d'entraînement du modèle mis à jour
    • Pré/post-traitement mis à jour
Déployer l’IA en production avec FastAPI

Itérer avec des champs facultatifs

 

  • La version n'est pas toujours nécessaire pour itérer
  • Des champs facultatifs peuvent accepter plus de données sans casser les schémas
from pydantic import BaseModel

class AIJobV1(BaseModel):
    job_name: str
    data: bytes


from typing import Optional class AIJobV1(BaseModel): job_name: str data: bytes config: Optional[dict]
Déployer l’IA en production avec FastAPI

Documenter les API avec Swagger

 

 

  • Outil standard pour la documentation d'API
    • Suit les endpoints et leurs versions
    • Basé sur les métadonnées du standard OpenAPI

 

Logo Swagger

Logo OpenAPI

Déployer l’IA en production avec FastAPI

Interface Swagger (Swagger UI)

URL Swagger Interface Swagger

Déployer l’IA en production avec FastAPI

Swagger UI pour un endpoint

Swagger UI de FastAPI pour un endpoint

Déployer l’IA en production avec FastAPI

Utiliser le champ de description de FastAPI

from fastapi import FastAPI

app = FastAPI(
    description="AI Job API"
)

Swagger UI de FastAPI avec en-tête de description

Déployer l’IA en production avec FastAPI

Passons à la pratique !

Déployer l’IA en production avec FastAPI

Preparing Video For Download...