SuzyLawyer — это AI-ассистент для ответов на юридические вопросы, основанный на казахском законодательстве. Система использует технологию RAG (Retrieval-Augmented Generation) для поиска релевантных правовых документов и генерации точных ответов.
Кратко:
- Отвечает на юридические вопросы на основе российского законодательства
- Анализирует PDF-документы с правовыми актами
- Использует умный поиск с cross-encoder для точности
- Работает через Telegram-бота и REST API
- Генерирует ответы с помощью Together LLM
Для кого:
- Юристы и правоведы
- Студенты юридических факультетов
- Граждане, ищущие правовую информацию
- Разработчики, интегрирующие правовые AI-решения
Основные задачи:
- Быстрый поиск релевантных правовых норм
- Генерация понятных ответов на юридические вопросы
- Обеспечение доступа к правовой информации через удобные интерфейсы
[Здесь будет размещена демонстрация на хостинге]
- Python: версия 3.9 или выше
- Docker: версия 20.10 или выше
- Docker Compose: версия 2.0 или выше
# Проверка Python
python --version
# Проверка Docker
docker --version
# Проверка Docker Compose
docker compose versionМинимальный набор команд для запуска приложения "из коробки":
# Клонирование репозитория
git clone https://github.com/Kairatzh/SuzyLawyer.git
cd SuzyLawyer
# Запуск приложения в Docker
make up
# Остановка приложения
make down# Установка Python-зависимостей
pip install -r requirements.txtСкопируйте файл .env.example в .env и заполните необходимые переменные:
cp .env.example .envСм. пример в .env.example
Обязательные переменные:
BOT_TOKEN— токен Telegram-бота (получить у @BotFather)TOGETHER_API_KEY— API-ключ Together AI для доступа к LLMFASTAPI_HOST— хост для FastAPI (по умолчанию: http://localhost:8000)PDF_PATH— путь к PDF-файлу с законодательствомVECTOR_STORE_PATH— путь для сохранения векторной базы данных
# Запуск всех сервисов
make up
# Запуск в фоновом режиме
make up-detached
# Остановка
make down
# Просмотр логов
make logs# Запуск FastAPI сервера
cd src
uvicorn app.main:app --host localhost --port 8000 --reload --log-level debug
# Запуск Telegram-бота (в отдельном терминале)
cd src
python app/bot.py# Запуск с продакшн-конфигурацией
docker compose -f docker-compose.prod.yml up -d# Запрос к API
curl -X 'POST' \
'http://localhost:8000/get_question' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"question": "Какие документы нужны для регистрации ООО?"
}'
# Формат ответа
{
"answer": "Для регистрации ООО необходимы следующие документы..."
}
# Проверка здоровья сервиса
curl http://localhost:8000/health- Найдите бота в Telegram по токену
- Отправьте команду
/start - Задайте юридический вопрос
- Получите ответ на основе законодательства
SuzyLawyer/
├── src/
│ ├── app/ # Основное приложение
│ │ ├── main.py # FastAPI сервер
│ │ └── bot.py # Telegram-бот
│ ├── rag_main/ # RAG система
│ │ ├── rag_system.py # Конфигурация и индексация
│ │ ├── rag_inference.py # Логика ответов
│ │ └── rag_reranker.py # Переранжирование результатов
│ ├── prompt/ # Шаблоны промптов
│ │ └── templates/
│ ├── datasets/ # Правовые документы
│ │ └── kodeks.pdf # PDF с законодательством
│ ├── vectordb/ # Векторная база данных
│ ├── utils/ # Вспомогательные модули
│ │ └── logger.py # Логирование
│ └── tests/ # Тесты
├── docker-compose.yml # Docker Compose конфигурация
├── docker-compose.prod.yml # Продакшн конфигурация
├── Dockerfile # Docker образ
├── Makefile # Команды для управления
├── requirements.txt # Python зависимости
├── .env.example # Пример переменных окружения
└── README.md # Документация
Запуск тестов производится с помощью pytest:
# Запуск всех тестов
pytest src/tests/
# Запуск с подробным выводом
pytest src/tests/ -v
# Запуск конкретного теста
pytest src/tests/test_rag_system.py
# Запуск с покрытием кода
pytest src/tests/ --cov=src --cov-report=html# Линтер
flake8 src/ --max-line-length=120
# Форматтер
black src/ --check
# Статический анализ типов
mypy src/
# Безопасность
bandit src/После запуска приложения доступна автоматическая документация:
| Компонент | Инструмент |
|---|---|
| LLM | meta-llama/Llama-3.3-70B-Instruct-Turbo |
| Embedding | paraphrase-multilingual-MiniLM-L12-v2 |
| Reranker | cross-encoder/ms-marco-MiniLM-L-6-v2 |
| Vector DB | FAISS |
| Backend API | FastAPI |
| Telegram Bot | aiogram 3.x |
| Контейнеризация | Docker & Docker Compose |
| Управление | Make |
MIT License
- Создайте Issue в GitHub для сообщения о багах
- Предложения по улучшению приветствуются через Pull Request