Назад к вопросам
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
В представленном коде есть несколько проблем:
-
Загрузка модели внутри обработчика —
load_model("classifier_v1")вызывается при каждом запросе, что очень неэффективно и замедляет работу. -
Асинхронность и блокирующие операции — если
model.predictблокирует, это может замедлить асинхронный сервер. -
Отсутствие валидации входных данных — стоит проверять наличие и тип поля "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 для сохранения асинхронности.