Wersjonowanie i dokumentacja API

Wdrażanie AI na produkcję z FastAPI

Matt Eckerle

Software and Data Engineering Leader

Po co wersjonować API?

 

  • Endpointy API jako pozycje menu
  • Zadowolenie dotychczasowych klientów
  • Niektórzy klienci chcą nowych opcji
  • Iteracja bez wpływu na istniejących klientów

Restauracja

Wdrażanie AI na produkcję z FastAPI

API dla zadań AI w chmurze

from pydantic import BaseModel

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

Logo FastAPI Chmura AI

Wdrażanie AI na produkcję z FastAPI

Wersjonowane endpointy

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): ...
Wdrażanie AI na produkcję z FastAPI

Powody aktualizacji wersji endpointu

 

  • Przełomowa zmiana schematu
  • Zmiana funkcji bazowej
    • Zaktualizowany kod modelu
    • Zaktualizowany zbiór treningowy modelu
    • Zaktualizowane przetwarzanie wstępne/końcowe
Wdrażanie AI na produkcję z FastAPI

Iteracja z polami opcjonalnymi

 

  • Wersjonowanie nie zawsze jest wymagane przy iteracji
  • Pola opcjonalne umożliwiają dodanie danych bez łamania schematu
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]
Wdrażanie AI na produkcję z FastAPI

Dokumentowanie API za pomocą Swagger

 

 

  • Standardowe narzędzie do dokumentacji API
    • Śledzi endpointy i wersje
    • Oparte na metadanych standardu OpenAPI

 

Logo Swagger

Logo OpenAPI

Wdrażanie AI na produkcję z FastAPI

Interfejs Swagger UI

URL Swagger Interfejs Swagger UI

Wdrażanie AI na produkcję z FastAPI

Swagger UI dla endpointu

Interfejs FastAPI Swagger UI dla endpointu

Wdrażanie AI na produkcję z FastAPI

Pole description w FastAPI

from fastapi import FastAPI

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

Interfejs FastAPI Swagger UI z nagłówkiem opisu

Wdrażanie AI na produkcję z FastAPI

Czas na ćwiczenia!

Wdrażanie AI na produkcję z FastAPI

Preparing Video For Download...