การกำหนดเวอร์ชันและเอกสารประกอบ API

การ Deploy AI สู่ Production ด้วย FastAPI

Matt Eckerle

Software and Data Engineering Leader

ทำไมต้องกำหนดเวอร์ชัน API?

 

  • API endpoint เปรียบเหมือนรายการอาหาร
  • รักษาความพึงพอใจของลูกค้าเดิม
  • ลูกค้าบางส่วนต้องการตัวเลือกใหม่
  • พัฒนาต่อเนื่องโดยไม่กระทบผู้ใช้เดิม

ร้านอาหาร

การ Deploy AI สู่ Production ด้วย 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

การ Deploy AI สู่ Production ด้วย FastAPI

Endpoint แบบมีเวอร์ชัน

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): ...
การ Deploy AI สู่ Production ด้วย FastAPI

เหตุผลในการอัปเดตเวอร์ชัน endpoint

 

  • Schema มีการเปลี่ยนแปลงที่ไม่เข้ากัน
  • ฟังก์ชันหลักเปลี่ยนแปลง
    • โค้ดโมเดลอัปเดต
    • ชุดข้อมูลฝึกโมเดลอัปเดต
    • การประมวลผลก่อน/หลังอัปเดต
การ Deploy AI สู่ Production ด้วย FastAPI

การพัฒนาด้วยฟิลด์ optional

 

  • การกำหนดเวอร์ชันไม่จำเป็นเสมอไปเมื่อต้องพัฒนาต่อ
  • ฟิลด์ที่เป็น optional รองรับข้อมูลเพิ่มเติมโดยไม่ทำให้ schema เสียหาย
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]
การ Deploy AI สู่ Production ด้วย FastAPI

การทำเอกสาร API ด้วย Swagger

 

 

  • เครื่องมือมาตรฐานสำหรับเอกสาร API
    • ติดตาม endpoint และเวอร์ชันต่างๆ
    • สร้างบน metadata มาตรฐาน OpenAPI

 

โลโก้ Swagger

โลโก้ OpenAPI

การ Deploy AI สู่ Production ด้วย FastAPI

Swagger UI

URL ของ Swagger Swagger UI

การ Deploy AI สู่ Production ด้วย FastAPI

Swagger UI สำหรับ endpoint

FastAPI Swagger UI สำหรับ endpoint

การ Deploy AI สู่ Production ด้วย FastAPI

การใช้ฟิลด์ description ของ FastAPI

from fastapi import FastAPI

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

FastAPI Swagger UI พร้อมหัวข้อคำอธิบาย

การ Deploy AI สู่ Production ด้วย FastAPI

มาฝึกกันเถอะ!

การ Deploy AI สู่ Production ด้วย FastAPI

Preparing Video For Download...