vkr
Описание
Репозиторий для сервиса подготовки рецензий на ВКР с помощью ИИ
Языки
- Python93%
- TeX6,9%
- Dockerfile0,1%
🤖 AI-ассистент для проверки выпускных квалификационных работ

📋 О проекте
Веб-приложение на базе Streamlit, предназначенное для автоматического анализа выпускных квалификационных работ (ВКР) с использованием больших языковых моделей.
Система осуществляет проверку наличия необходимого содержимого в тексте работы согласно специализированным критериям для конкретной роли (Аналитик, тестировщик и т.д.).
✨ Возможности
- 📄 Загрузка и анализ документов ВКР в формате PDF
- 🔧 Применение настраиваемых критериев проверки для ролей
- 🧠 Использование различных LLM-моделей для анализа документов
- 💾 Сохранение и экспорт результатов проверки
- ⚙️ Управление промптами для настройки проверки
- 📝 Сбор обратной связи
🔄 Процесс анализа ВКР
Анализ выпускных квалификационных работ в системе реализован на основе следующего алгоритма:
-
📑 Индексация документа
- Загруженный документ разбивается на фрагменты
- Для каждого фрагмента создается векторное представление (эмбеддинг)
- Эмбеддинги сохраняются в векторной базе данных ChromaDB для последующего поиска
-
📊 Построение графа проверки
- Формируется направленный граф обработки данных с помощью LangGraph
- Узлы графа соответствуют отдельным этапам анализа (расширение требований, проверка соответствия и т.д.)
-
🔍 Выполнение проверки
- Для каждого требования система извлекает релевантные фрагменты документа с помощью RAG (Retrieval-Augmented Generation)
- Языковая модель анализирует найденные фрагменты на соответствие заданным критериям
- Формируются структурированные выводы по каждому пункту требований
-
📋 Формирование отчета
- Результаты анализа представляются в виде таблицы
- Для каждого требования указывается результат проверки (найдена или не найдена информация, описание найденной информации)
🛠️ Архитектура
Проект построен с использованием следующих компонентов:
- 🌊 Streamlit: фреймворк для создания веб-интерфейса
- ⛓️ LangChain: библиотека для работы с языковыми моделями и построения цепочек обработки текста
- 📊 LangGraph: библиотека для создания графов обработки данных с помощью языковых моделей
- 🗄️ ChromaDB: векторная база данных для хранения и поиска текстовых эмбеддингов
- 🔎 RAG (Retrieval-Augmented Generation): подход к генерации ответов с поиском релевантной информации
📘 Руководство пользователя
Вкладка "Проверка ВКР"
1. Загрузка файлов
- Документ ВКР (обязательный файл в формате PDF)
Документ с текстом выпускной квалификационной работы для проверки.

2. Дополнительные настройки
-
Выбор режима работы с ролями
- Активируйте или деактивируйте переключатель "🔄 Использовать предустановленные роли" (по умолчанию включен)
- При активации переключателя доступны предустановленные роли (Аналитик, Тестировщик и т.д.)
- При деактивации переключателя вы сможете ввести собственную роль и требования
-
Выбор или создание роли
-
При использовании предустановленных ролей:
- Выберите роль, которой соответствует ВКР (Аналитик, Тестировщик и т.д.) из выпадающего списка

-
При использовании пользовательских ролей:
- Введите название своей роли в поле "Введите название роли"
- Введите требования к содержимому ВКР в текстовое поле "Введите требования к содержимому ВКР"
Пример требований:1. Проблема 2. Цель 3. Задачи 4. Описание методологии исследования 5. Описание результатов исследования 6. Описание методов оценки 7. Оценка экономической эффективности

-
-
Выбор LLM
- Выберите модель для проверки ВКР
- Доступные модели:
- Mistral
- DeepSeek Chat
- DeepSeek R1
- YandexGPT Pro
- YandexGPT Lite
- Gemini 2.0 Flash
- Qwen 32B
- Qwen 2.5 72B

- Просмотр и редактирование установленных требований к содержанию ВКР (доступно только в режиме предустановленных ролей)
- Установленные требования к содержанию ВКР доступны для просмотра через выпадающую секцию "Установленные требования к содержанию для выбранной роли:"
- Вы можете редактировать установленные требования:
- Активируйте переключатель "🔄 Актуализировать требования к содержанию"
- Введите или отредактируйте требования в появившемся текстовом поле

4. Запуск проверки
- Установите флажок согласия на обработку и хранение файлов
- Нажмите кнопку "🔍 Проверить ВКР на наличие требуемых элементов"
- Дождитесь завершения процесса проверки
- Во время проверки будет отображаться текущий этап выполнения

5. Результаты проверки
После завершения проверки отображаются:
- Результаты проверки
- Детальный анализ соответствия ВКР каждому критерию требований
- Для каждого пункта указывается:
- Найдена ли соответствующая информация в работе
- Описание найденной информации
- Разделы ВКР, в которых осуществляется поиск информации

6. Сохранение результатов
Вы можете сохранить результаты проверки для дальнейшего использования в удобном формате:
- Выберите формат файла (JSON, Excel)
- Нажмите кнопку "📥 Скачать результаты"

7. Обратная связь о качестве проверки
Ваше мнение поможет улучшить работу сервиса:
- Откройте раздел "Оставить обратную связь о результатах проверки"
- Оцените качество проверки (хорошо или плохо).
- Добавьте комментарий (необязательно), указав:
- Что было особенно полезным
- Предложения по развитию сервиса
- Нажмите "Отправить обратную связь"

Вкладка "Управление промптами"
В этой вкладке вы можете просматривать и редактировать шаблоны запросов к языковым моделям:
- Проверка наличия требуемых элементов (CHECK_EXISTENCE_TEMPLATE) - шаблон для проверки наличия требуемых элементов в ВКР
- Расширение требований (EXPAND_CONTENT_REQUIREMENTS_TEMPLATE) - шаблон для расширения требований к содержанию ВКР для осуществления поиска информации по требованию
Интерфейс управления промптами включает:
- Выпадающий список для выбора типа промпта
- Текстовое поле для просмотра и редактирования содержимого
- Кнопки управления:
- "Сохранить изменения" - для сохранения внесенных правок
- "Сбросить этот промпт" - для сброса текущего промпта к стандартному шаблону
- "Сбросить все промпты" - для сброса всех промптов к стандартным шаблонам
Важно: При редактировании не изменяйте и не удаляйте переменные в формате
. Они используются для подстановки данных при выполнении проверки.{...}

💻 Локальный запуск приложения Streamlit
Для запуска проекта локально необходимо:
- Клонировать репозиторий
- Создать и активировать виртуальное окружение:
- python -m venv [имя виртуального окружения]
- для Linux: source [имя виртуального окружения]/bin/activate
- для Windows: [имя виртуального окружения]\Scripts\activate
- Установить зависимости: pip install -r requirements.txt
- Настроить переменные окружения в файле streamlit/secrets.toml
- Запустить приложение: streamlit run app.py
📦 Локальный запуск CLI-приложения
Для запуска CLI-приложения необходимо:
-
Клонировать репозиторий
-
Создать и активировать виртуальное окружение:
- python -m venv [имя виртуального окружения]
- для Linux: source [имя виртуального окружения]/bin/activate
- для Windows: [имя виртуального окружения]\Scripts\activate
-
Установить зависимости:
pip install -r requirements.txt -
Настроить переменные окружения в файле
(см..env)..env.example
Если не планируется использование LLM определенного провайдера, то соответствующие поля можно оставить пустыми. -
Инициализировать проект:
python init_project.py --project_dir [путь к директории с проектом] --roles [роли, которым соответствуют проверяемые ВКР (через пробел)]Пример:
python init_project.py --project_dir 'Проверки' --roles 'Аналитик' 'ML инженер'В результате выполнения скрипта в папке с проектом будут созданы следующие директории и файлы:
— директория для загрузки требований к содержанию ВКР для каждой ролиrequirements— директория для хранения промптовprompts- директории для загрузки документов ВКР для каждой роли
Для команды в примере будут созданы директории:
- Аналитик
- ML инженер
- prompts
- requirements
-
При желании можно настроить тексты запросов для проверки в директории
:prompts— текст запроса для проверки наличия требуемых элементов в ВКРcheck_existence.txt— текст запроса для расширения требований к содержанию ВКР (расширение требований для осуществления поиска информации по требованию в тексте ВКР)extend_content_requirements.txt
⚠️ Важно! При редактировании промптов необходимо сохранять все поля-заполнители
(placeholders) в исходном виде, так как они используются для подстановки данных в процессе работы приложения.{...} -
Необходимо загрузить в директорию
файлы с требованиями к содержанию ВКР для каждой роли в форматеrequirements. При этом название файла должно соответствовать названию роли.*.txtПример:
- Аналитик.txt
- ML инженер.txt
Пример содержимого файла
:Аналитик.txt1. Проблема 2. Цель 3. Задачи 4. Методология исследования 5. Результаты исследования 6. Методы оценки 7. Оценка экономической эффективности -
Необходимо загрузить документы с ВКР в формате PDF по ролям в соответствующие директории:
Пример:
- Аналитик/Разработка дашборда для анализа данных.pdf
- ML инженер/Разработка нейронной сети для классификации текстов.pdf
-
Запустить приложение:
python cli_app.py --project_dir [путь к директории с проектом] --models [модели, которые будут использоваться для проверки]- Доступные модели:
- Mistral
- DeepSeek Chat
- DeepSeek R1
- YandexGPT Pro
- YandexGPT Lite
- Gemini 2.0 Flash
- Qwen 32B
- Qwen 2.5 72B
Пример:
python cli_app.py --project_dir 'Проверки' --models 'Mistral' 'DeepSeek Chat' - Доступные модели:
-
Далее будет выполнена проверка ВКР каждой моделью на наличие требуемых элементов в соответствии с установленными требованиями к содержанию ВКР для каждой роли.
-
В результате выполнения скрипта в директории с проектом будет создана директория
со следующей структурой:output— директория для хранения векторной базы данных ChromaDBchroma— директория для хранения расширенных требований к содержанию ВКРextended_requirements- директории с результатами проверки для каждой роли (название директорий соответствует названию ролей)
— файл для хранения статуса проверки документов ВКРdocs_status.json— файл для хранения соответствия уникальных идентификаторов и названий документов ВКР (необходимо для осуществления соответствия между наименованиями документов ВКР и коллекций в векторной базе данных ChromaDB)uuid_mapping.json
Также в корневой директории проекта будет создан файл
с логами выполнения скрипта.ai_assistant_vkr.logДиректории с результатами проверки для каждой роли имеют следующую структуру:
— файл с результатами проверки в формате Excelexcel/[Название документа ВКР]/[Название документа ВКР]_[модель].xlsx— файл с результатами проверки в формате JSONjson/[Название документа ВКР]/[Название документа ВКР]_[модель].json
Пример:
- excel/Разработка дашборда для анализа данных/Разработка дашборда для анализа данных_Mistral.xlsx
- json/Разработка дашборда для анализа данных/Разработка дашборда для анализа данных_Mistral.json
Если не для всех документов ВКР и моделей была выполнена проверка (в результате каких-либо ошибок), то проверку можно запустить повторно.
В файлеотображен статус проверки для каждого документа ВКР и модели.docs_status.json
Чтобы обработать оставшиеся документы ВКР, необходимо запустить скрипт повторно при помощи той же команды:python cli_app.py --project_dir [путь к директории с проектом] --models [модели, которые будут использоваться для проверки]В ходе выполнения скрипта будет проведена проверка оставшихся документов ВКР для выбранных моделей.