Versionarea și documentarea API

Deployment AI în producție cu FastAPI

Matt Eckerle

Software and Data Engineering Leader

De ce versionare API?

 

  • Endpoint-urile API ca opțiuni de meniu
  • Menținerea clienților existenți mulțumiți
  • Unii clienți doresc opțiuni noi
  • Iterare fără a afecta clienții existenți

Un restaurant

Deployment AI în producție cu FastAPI

API pentru joburi AI în cloud

from pydantic import BaseModel

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

Logo FastAPI Cloud AI

Deployment AI în producție cu FastAPI

Endpoint-uri versionare

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 AI în producție cu FastAPI

Motive pentru actualizarea versiunii unui endpoint

 

  • Modificare incompatibilă a schemei
  • Modificare a funcției de bază
    • Cod de model actualizat
    • Set de antrenament actualizat
    • Pre/post-procesare actualizată
Deployment AI în producție cu FastAPI

Iterare cu câmpuri opționale

 

  • Versionarea nu este întotdeauna necesară pentru iterare
  • Câmpurile opționale pot adăuga date fără a rupe schemele
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 AI în producție cu FastAPI

Documentarea API cu Swagger

 

 

  • Instrument standard pentru documentarea API
    • Urmărește endpoint-urile și versiunile
    • Bazat pe metadatele standardului OpenAPI

 

Logo Swagger

Logo OpenAPI

Deployment AI în producție cu FastAPI

Interfața Swagger UI

URL Swagger Interfața Swagger

Deployment AI în producție cu FastAPI

Swagger UI pentru un endpoint

Interfața FastAPI Swagger UI pentru un endpoint

Deployment AI în producție cu FastAPI

Utilizarea câmpului description din FastAPI

from fastapi import FastAPI

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

Interfața FastAPI Swagger UI cu antet de descriere

Deployment AI în producție cu FastAPI

Să exersăm!

Deployment AI în producție cu FastAPI

Preparing Video For Download...