Версіонування та документація API

Розгортання AI у продакшні з FastAPI

Matt Eckerle

Software and Data Engineering Leader

Навіщо версіонувати API?

 

  • Кінцеві точки API як пункти меню
  • Зберігайте задоволення наявних клієнтів
  • Деякі клієнти хочуть нові опції
  • Ітеруйте без впливу на наявних клієнтів

Ресторан

Розгортання AI у продакшні з FastAPI

API для хмарних AI-завдань

from pydantic import BaseModel

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

Логотип FastAPI AI Cloud

Розгортання AI у продакшні з FastAPI

Версійні кінцеві точки

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): ...
Розгортання AI у продакшні з FastAPI

Підстави оновити версію кінцевої точки

 

  • Несумісна зміна в схемі
  • Зміна базової функції
    • Оновлений код моделі
    • Оновлений тренувальний набір моделі
    • Оновлена попередня/подальша обробка
Розгортання AI у продакшні з FastAPI

Ітерація з необов'язковими полями

 

  • Для ітерацій версіонування не завжди потрібне
  • Необов'язкові поля додають дані без поломки схем
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]
Розгортання AI у продакшні з FastAPI

Документування API за допомогою Swagger

 

 

  • Стандартний інструмент для документації API
    • Відстежує кінцеві точки та версії
    • Побудований на метаданих стандарту OpenAPI

 

Логотип Swagger

Логотип OpenAPI

Розгортання AI у продакшні з FastAPI

Інтерфейс Swagger (UI)

URL Swagger Інтерфейс Swagger

Розгортання AI у продакшні з FastAPI

Swagger UI для кінцевої точки

Інтерфейс Swagger FastAPI для кінцевої точки

Розгортання AI у продакшні з FastAPI

Використання поля опису FastAPI

from fastapi import FastAPI

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

Інтерфейс Swagger FastAPI з описом у заголовку

Розгортання AI у продакшні з FastAPI

Давайте потренуємось!

Розгортання AI у продакшні з FastAPI

Preparing Video For Download...