LLM-функциональность почти всегда живёт за API: чат, поиск по документам, обработка заявок. FastAPI — стандарт для таких сервисов: асинхронный, с автоматической документацией и валидацией через Pydantic.
class Ask(BaseModel):
question: str = Field(min_length=3, max_length=2000)
@app.post("/ask")
async def ask(body: Ask, user: User = Depends(current_user)):
return StreamingResponse(stream_answer(body.question, user), media_type="text/event-stream")
Что важно знать
- Pydantic описывает и проверяет данные: входные запросы, ответы модели в структурированном виде, настройки сервиса.
- Потоковая выдача через Server-Sent Events — пользователь видит ответ по мере генерации.
- Зависимости (
Depends) — авторизация, клиенты БД и моделей. - Фоновые задачи и очереди для долгих операций (индексация документов).
- Таймауты, повторы, лимиты на размер запроса — защита бюджета.