API 版本控制与文档

使用 FastAPI 在生产环境中部署 AI

Matt Eckerle

Software and Data Engineering Leader

为何进行 API 版本控制?

 

  • 将 API 端点视作菜单项
  • 保持老客户满意
  • 满足部分客户的新需求
  • 不影响现有客户的前提下迭代

餐厅

使用 FastAPI 在生产环境中部署 AI

云端 AI 作业的 API

from pydantic import BaseModel

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

FastAPI 标志 AI 云

使用 FastAPI 在生产环境中部署 AI

版本化端点

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): ...
使用 FastAPI 在生产环境中部署 AI

更新端点版本的原因

 

  • 架构发生破坏性变更
  • 底层函数变更
    • 更新模型代码
    • 更新模型训练集
    • 更新前/后处理
使用 FastAPI 在生产环境中部署 AI

用可选字段进行迭代

 

  • 迭代并非总需版本控制
  • 可选字段可在不破坏架构的情况下承载新数据
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]
使用 FastAPI 在生产环境中部署 AI

用 Swagger 编写 API 文档

 

 

  • 标准的 API 文档工具
    • 追踪端点与版本
    • 基于 OpenAPI 标准元数据

 

Swagger 标志

OpenAPI 标志

使用 FastAPI 在生产环境中部署 AI

Swagger 界面

Swagger URL Swagger 界面

使用 FastAPI 在生产环境中部署 AI

端点的 Swagger 界面

FastAPI 端点的 Swagger 界面

使用 FastAPI 在生产环境中部署 AI

使用 FastAPI 的 description 字段

from fastapi import FastAPI

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

带描述头的 FastAPI Swagger 界面

使用 FastAPI 在生产环境中部署 AI

让我们来练习!

使用 FastAPI 在生产环境中部署 AI

Preparing Video For Download...