FastAPI-приложение для классификации эмоций в тексте на русском языке. Использует предобученную модель rubert-tiny2-cedr-emotion-detection через HuggingFace Inference API. Поддерживает REST API и консольный клиент.
- Быстрый старт (HF API)
- Как получить HF API токен
- Пример работы через консольный клиент
- Тесты
- Запуск через Docker
- Примечание по локальной модели
-
Создайте виртуальное окружение (рекомендуется Python >= 3.10):
python -m venv venv -
Активируйте его:
- Для Windows:
venv\Scripts\activate - Для Linux/MacOS:
source venv/bin/activate
- Для Windows:
-
Установите зависимости:
pip install -r requirements.txt -
Создайте
.envв корне и задайте переменные (см. примерexample.env):
HF_API_TOKEN=<ваш_hf_токен>
MODEL_NAME=cointegrated/rubert-tiny2-cedr-emotion-detection
# MODE=api # api используется по умолчанию
# MODEL_PATH=<путь> # для локального режима (в разработке)
- Запустите сервер:
python app.py - В адресной строке браузера отправьте запрос:
http://127.0.0.1:8000/classify?text="Привет, друг!"
Ответ:
{
"text": "Привет, друг!",
"emotion": "no_emotion",
"confidence": 0.99,
"from_cache": false
}
Также взаимодействие возможно при помощи CLI, скрипт котрого следует запустить в отдельном терминале.
- Войдите в https://huggingface.co/settings/tokens
- Создайте токен (минимум read).
- Скопируйте и вставьте его в
HF_API_TOKENв.env.
(.venv-classifier) PS D:\mycode\classifier-emotions-text-ru> python client.py
Введите текст для классификации (или пустую строку для выхода):
> Бурый медведь обитает в лесах БЕЛАРУСИ.
{
"text": "Бурый медведь обитает в лесах БЕЛАРУСИ.",
"emotion": "no_emotion",
"confidence": 0.991,
"from_cache": false
}
> Бурый медведь обитает в лесах Беларуси.
{
"text": "Бурый медведь обитает в лесах Беларуси.",
"emotion": "no_emotion",
"confidence": 0.991,
"from_cache": true
}
> Я в ужасе от твоего поступка..
Ошибка сети: не удалось подключиться к серверу.
> Я в ужасе от твоего поступка..
{
"text": "Я в ужасе от твоего поступка..",
"emotion": "fear",
"confidence": 0.949,
"from_cache": false
}
Клиент выводит JSON или краткие сообщения об ошибках (таймаут, сеть, формат ответа, HTTP ошибки).
Тестирование при помощи pytest, запуск тестов:
python -m pytest
- Установленный Docker.
- Созданный
.envв корне проекта (можно скопировать и отредактироватьexample.env).
Находясь в корне проекта, выполните:
docker build . -t emotion-classifierГде:
- emotion-classifier — имя образа (можете изменить на своё).
Для запуска контейнера с прокидыванием порта и использованием .env:
docker run --rm \
--env-file .env \
-p 8000:8000 \
emotion-classifierПосле запуска приложение будет доступно по адресу:
http://127.0.0.1:8000/classify?text="Привет, друг!"
Локальная загрузка (mode="local") предусмотрена, но пока в разработке; текущая документация описывает работу через HuggingFace Inference API. Когда локальный путь модели будет готов, можно будет указать mode="local" и MODEL_PATH в .env.