Versioning e documentazione delle API

Deployment di AI in produzione con FastAPI

Matt Eckerle

Software and Data Engineering Leader

Perché fare versioning delle API?

 

  • Endpoint API come voci di menu
  • Mantieni felici i clienti attuali
  • Alcuni clienti vogliono nuove opzioni
  • Iterare senza impattare i clienti esistenti

Un ristorante

Deployment di AI in produzione con FastAPI

API per job di AI in cloud

from pydantic import BaseModel

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

Logo di FastAPI AI Cloud

Deployment di AI in produzione con FastAPI

Endpoint versionati

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): ...
Deployment di AI in produzione con FastAPI

Quando aggiornare la versione di un endpoint

 

  • Modifica breaking nello schema
  • Cambiamento nella funzione sottostante
    • Codice del modello aggiornato
    • Training set del modello aggiornato
    • Pre/post-processing aggiornati
Deployment di AI in produzione con FastAPI

Iterare con campi opzionali

 

  • Per iterare non serve sempre il versioning
  • Campi opzionali possono aggiungere dati senza rompere gli schemi
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]
Deployment di AI in produzione con FastAPI

Documentare le API con Swagger

 

 

  • Strumento standard per la documentazione delle API
    • Tiene traccia di endpoint e versioni
    • Basato sui metadati dello standard OpenAPI

 

Logo di Swagger

Logo di OpenAPI

Deployment di AI in produzione con FastAPI

Swagger UI

URL di Swagger Swagger UI

Deployment di AI in produzione con FastAPI

Swagger UI per un endpoint

FastAPI Swagger UI per endpoint

Deployment di AI in produzione con FastAPI

Usare il campo description di FastAPI

from fastapi import FastAPI

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

FastAPI Swagger UI con intestazione descrittiva

Deployment di AI in produzione con FastAPI

Esercitiamoci!

Deployment di AI in produzione con FastAPI

Preparing Video For Download...