Sobes.tech
Назад к вопросам
Middle+
7

from src import load_model @app.post("/classify") async def classify(request: dict): text = request["text"] model = load_model("classifier_v1") prediction = model.predict([text]) return {"label": prediction}

Компании, где спрашивали
экзон

Ответ от нейросети

sobes.tech AI

В представленном коде есть несколько проблем:

  1. Загрузка модели внутри обработчикаload_model("classifier_v1") вызывается при каждом запросе, что очень неэффективно и замедляет работу.

  2. Асинхронность и блокирующие операции — если model.predict блокирует, это может замедлить асинхронный сервер.

  3. Отсутствие валидации входных данных — стоит проверять наличие и тип поля "text".

Правильный подход — загрузить модель один раз при старте приложения и переиспользовать её:

from src import load_model
from fastapi import FastAPI, HTTPException

app = FastAPI()

model = load_model("classifier_v1")  # загрузка при старте

@app.post("/classify")
async def classify(request: dict):
    text = request.get("text")
    if not text or not isinstance(text, str):
        raise HTTPException(status_code=400, detail="Invalid or missing 'text' field")
    prediction = model.predict([text])
    return {"label": prediction[0]}

Если model.predict — блокирующая операция, можно вынести её в пул потоков с помощью run_in_executor для сохранения асинхронности.