Verzování a dokumentace API

Nasazení AI do produkce s FastAPI

Matt Eckerle

Software and Data Engineering Leader

Proč verzovat API?

 

  • Endpointy API jako položky menu
  • Spokojení stávající zákazníci
  • Někteří zákazníci chtějí nové možnosti
  • Iterace bez dopadu na stávající zákazníky

Restaurace

Nasazení AI do produkce s FastAPI

API pro cloudové úlohy AI

from pydantic import BaseModel

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

Logo FastAPI AI Cloud

Nasazení AI do produkce s FastAPI

Verzované 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): ...
Nasazení AI do produkce s FastAPI

Důvody pro aktualizaci verze endpointu

 

  • Zásadní změna schématu
  • Změna v podkladové funkci
    • Aktualizovaný kód modelu
    • Aktualizovaná trénovací sada modelu
    • Aktualizované pre/post zpracování
Nasazení AI do produkce s FastAPI

Iterace s volitelnými poli

 

  • Verzování není vždy nutné pro iteraci
  • Volitelná pole umožňují přidat data bez porušení schématu
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]
Nasazení AI do produkce s FastAPI

Dokumentace API pomocí Swagger

 

 

  • Standardní nástroj pro dokumentaci API
    • Sleduje endpointy a verze
    • Postaveno na metadatech standardu OpenAPI

 

Logo Swagger

Logo OpenAPI

Nasazení AI do produkce s FastAPI

Uživatelské rozhraní Swagger

URL Swagger Uživatelské rozhraní Swagger

Nasazení AI do produkce s FastAPI

Swagger UI pro endpoint

Swagger UI FastAPI pro endpoint

Nasazení AI do produkce s FastAPI

Použití pole description ve FastAPI

from fastapi import FastAPI

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

Swagger UI FastAPI s hlavičkou popisu

Nasazení AI do produkce s FastAPI

Pojďme cvičit!

Nasazení AI do produkce s FastAPI

Preparing Video For Download...