Versionado y documentación de APIs

Implementación de IA en producción con FastAPI

Matt Eckerle

Software and Data Engineering Leader

¿Por qué versionar una API?

 

  • Endpoints de API como elementos del menú
  • Mantén contentos a los clientes actuales
  • Algunos clientes quieren opciones nuevas
  • Iterar sin afectar a los clientes existentes

Un restaurante

Implementación de IA en producción con FastAPI

API para trabajos de IA en la nube

from pydantic import BaseModel

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

Logo de FastAPI AI Cloud

Implementación de IA en producción con FastAPI

Endpoints versionados

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): ...
Implementación de IA en producción con FastAPI

Motivos para actualizar la versión de un endpoint

 

  • Cambio incompatible en el esquema
  • Cambio en la función subyacente
    • Código del modelo actualizado
    • Conjunto de entrenamiento del modelo actualizado
    • Pre/postprocesado actualizado
Implementación de IA en producción con FastAPI

Iterar con campos opcionales

 

  • No siempre hace falta versionar para iterar
  • Los campos opcionales admiten datos extra sin romper esquemas
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]
Implementación de IA en producción con FastAPI

Documentar APIs con Swagger

 

 

  • Herramienta estándar para documentar APIs
    • Registra endpoints y versiones
    • Basada en metadatos del estándar OpenAPI

 

Logotipo de Swagger

Logotipo de OpenAPI

Implementación de IA en producción con FastAPI

Swagger UI

URL de Swagger Swagger UI

Implementación de IA en producción con FastAPI

Swagger UI para un endpoint

FastAPI Swagger UI para un endpoint

Implementación de IA en producción con FastAPI

Usar el campo de descripción de FastAPI

from fastapi import FastAPI

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

FastAPI Swagger UI con encabezado de descripción

Implementación de IA en producción con FastAPI

¡Vamos a practicar!

Implementación de IA en producción con FastAPI

Preparing Video For Download...