API-versionering och dokumentation

Driftsättning av AI i produktion med FastAPI

Matt Eckerle

Software and Data Engineering Leader

Varför API-versionering?

 

  • API-endpoints som menyalternativ
  • Befintliga kunder ska inte påverkas
  • Vissa kunder vill ha nya alternativ
  • Iterera utan att påverka befintliga kunder

En restaurang

Driftsättning av AI i produktion med FastAPI

API för AI-jobb i molnet

from pydantic import BaseModel

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

Logo av FastAPI AI Cloud

Driftsättning av AI i produktion med FastAPI

Versionerade endpoints

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): ...
Driftsättning av AI i produktion med FastAPI

Skäl att uppdatera endpointversion

 

  • Brytande förändring i schemat
  • Förändring i den underliggande funktionen
    • Uppdaterad modellkod
    • Uppdaterad träningsdatamängd
    • Uppdaterad för- och efterbearbetning
Driftsättning av AI i produktion med FastAPI

Iteration med valfria fält

 

  • Versionering krävs inte alltid för att iterera
  • Valfria fält kan hantera ytterligare data utan att bryta scheman
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]
Driftsättning av AI i produktion med FastAPI

Dokumentera API:er med Swagger

 

 

  • Standardverktyg för API-dokumentation
    • Håller reda på endpoints och versioner
    • Bygger på OpenAPI-standardens metadata

 

Swagger-logotyp

OpenAPI-logotyp

Driftsättning av AI i produktion med FastAPI

Swagger UI

Swagger URL Swagger UI

Driftsättning av AI i produktion med FastAPI

Swagger UI för en endpoint

FastAPI Swagger UI för endpoint

Driftsättning av AI i produktion med FastAPI

Använda FastAPI:s description-fält

from fastapi import FastAPI

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

FastAPI Swagger UI med beskrivningshuvud

Driftsättning av AI i produktion med FastAPI

Nu kör vi en övning!

Driftsättning av AI i produktion med FastAPI

Preparing Video For Download...