Сервис для проверки контента
Требования:
- Python 3.9
- Форматтер кода Ruff
- Docker
Создаем виртуальное окружение
python3 -m venv venvПереходим в него
source venv/bin/activateУстанавливаем зависимости (пока там пусто, все зависимости типа pandas и тд пишите в этот файл)
pip install -r requirements.txtЗапускаем сервис. Пример вызова класса там же
python3 ./repositories/llm_rewrite.py- Модули и файлы —
snake_case. - Классы —
PascalCase. - Константы —
UPPER_SNAKE_CASE. - Каждую фичу пишем в своей ветке (пример:
feature/llm_rewrite). - Перед комитом прогоняем Ruff форматирование
- Текст коммита на английском
- Название коммита: для фичи —
feat: <название>, для багфикса —fix: <название>. - Комменты: https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
- Содержит чистые модели (
@dataclass):BotMessageCheckResultViolationи др.
- Не зависит ни от БД, ни от API, ни от ML.
- Интерфейсы (абстракции, «порты») для внешних систем:
DBConnector(логирование, хранение)QueueManager(Kafka/Redis)MLServiceGateway(вызовы PII, Safety, Ad-filter, Off-topic, Rewrite)
- Не содержит реализации, только методы
abstractmethod.
- Главный сценарий (Decision Engine):
- Отправляет в конструктор пять портов (PII, Safety, Ad, OffTopic, LLM-rewrite).
- Вызывает каждый из них последовательно или параллельно.
- Собирает и агрегирует результаты в единый
CheckResult. - Применяет рекурсивное переписывание (rewrite) при необходимости.
- Конкретные адаптеры для каждого порта:
- Вызовы ML-сервисов (BERT, NER, TF-IDF, эмбеддинги)
- БД-коннектор (Postgres, SQLite…)
- Очередь сообщений (Kafka, RabbitMQ…)
- Основная логика находится здесь
- Точка входа в приложение:
- Загружает конфиг из
.env. - Составляет DI-контейнер: какие адаптеры впрыскивать в Use Case.
- Поднимает HTTP-сервер (FastAPI/Flask) или CLI, обрабатывает входящие запросы, вызывает
CheckMessageUseCase.execute()и возвращает JSON.
- Загружает конфиг из