Запити GET і POST для ШІ

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

Matt Eckerle

Software and Data Engineering Leader

Наш викладач

 

Метт Еккерлі

 

 

Matt Eckerle

  • Керівник з розробки ПЗ та даних
  • Enterprise Data Manager у Inari
  • Використовує FastAPI для ML з 2019 року
Розгортання AI у продакшні з FastAPI

Огляд курсу

 

 

  • Основи FastAPI
  • Обробка запитів і інтеграція
  • Валідація введення та безпека
  • Створення й підтримка production-API

 

 

Логотип FastAPI

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

Перш ніж почати

✓ Базовий Python: функції, класи, модулі, структури даних

Логотип Python

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

Перш ніж почати

✓ Базовий Python: функції, класи, модулі, структури даних

✓ Концепції HTTP і REST API

Логотипи Python і http

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

Перш ніж почати

✓ Базовий Python: функції, класи, модулі, структури даних

✓ Концепції HTTP і REST API

✓ Використання фреймворку FastAPI

  • Обробка запитів GET і POST
  • Використання моделей Pydantic

✓ Основи машинного навчання

Логотипи Python, http і FastAPI

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

Пояснення запитів GET

  • Використовується для отримання даних
  • Параметр шляху — інформація в URL
  • Не змінює стан сервера

Меню

GET https://example.com/?item_id=1

Схема для розуміння запитів GET

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

Реалізація GET з параметрами шляху

from fastapi import FastAPI

app = FastAPI()

@app.get("/item/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}
  • Декоратор `@app.get` визначає endpoint.
  • {item_id} — параметр шляху.
  • Підказка типу (int) для авто‑валідації.
Розгортання AI у продакшні з FastAPI

Пояснення запитів POST

  • Використовується для надсилання даних на сервер
  • Дані в тілі запиту (зазвичай JSON)
  • Може змінювати стан сервера

Замовлення в ресторані

POST https://example.com

Схема для розуміння запитів POST

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

Реалізація POST з JSON-даними

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()
db = {}

class Item(BaseModel): name: str price: float
@app.post("/items", status_code=201)
def create_item(item: Item): db[item.name] = item.model_dump() return {"message": f"Created {item.name}"}

 

  • Модель Pydantic задає структуру даних
  • @app.post для endpoint'а POST
  • Автоматичний розбір і валідація JSON
Розгортання AI у продакшні з FastAPI

Коди стану HTTP

 

  • 200 OK: успішно (типово)
  • 404 Not Found: ресурс не знайдено
  • 201 Created: об'єкт створено

Код стану HTTP 200, що вказує на успішний запит

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

Генерація HTTP‑винятків

from fastapi import FastAPI, HTTPException
app = FastAPI()

@app.get("/item/{item_id}")
async def read_item(item_id: int):
    if item_id == 4242: #An invalid order number
        raise HTTPException(status_code=404, detail="Item not found")
    return {"item_id": item_id}

@app.post("/items") async def create_item(item: Item): # Simulating item creation return {"message": f"Created {item.name}"}, 201
Розгортання AI у продакшні з FastAPI

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

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

Preparing Video For Download...