vkr

0

Описание

Репозиторий для сервиса подготовки рецензий на ВКР с помощью ИИ

Языки

  • Python93%
  • TeX6,9%
  • Dockerfile0,1%
10 месяцев назад
10 месяцев назад
README.md

🤖 AI-ассистент для проверки выпускных квалификационных работ

📋 О проекте

Веб-приложение на базе Streamlit, предназначенное для автоматического анализа выпускных квалификационных работ (ВКР) с использованием больших языковых моделей.

Система осуществляет проверку наличия необходимого содержимого в тексте работы согласно специализированным критериям для конкретной роли (Аналитик, тестировщик и т.д.).

✨ Возможности

  • 📄 Загрузка и анализ документов ВКР в формате PDF
  • 🔧 Применение настраиваемых критериев проверки для ролей
  • 🧠 Использование различных LLM-моделей для анализа документов
  • 💾 Сохранение и экспорт результатов проверки
  • ⚙️ Управление промптами для настройки проверки
  • 📝 Сбор обратной связи

🔄 Процесс анализа ВКР

Анализ выпускных квалификационных работ в системе реализован на основе следующего алгоритма:

  1. 📑 Индексация документа

    • Загруженный документ разбивается на фрагменты
    • Для каждого фрагмента создается векторное представление (эмбеддинг)
    • Эмбеддинги сохраняются в векторной базе данных ChromaDB для последующего поиска
  2. 📊 Построение графа проверки

    • Формируется направленный граф обработки данных с помощью LangGraph
    • Узлы графа соответствуют отдельным этапам анализа (расширение требований, проверка соответствия и т.д.)
  3. 🔍 Выполнение проверки

    • Для каждого требования система извлекает релевантные фрагменты документа с помощью RAG (Retrieval-Augmented Generation)
    • Языковая модель анализирует найденные фрагменты на соответствие заданным критериям
    • Формируются структурированные выводы по каждому пункту требований
  4. 📋 Формирование отчета

    • Результаты анализа представляются в виде таблицы
    • Для каждого требования указывается результат проверки (найдена или не найдена информация, описание найденной информации)

🛠️ Архитектура

Проект построен с использованием следующих компонентов:

  • 🌊 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

Секция выбора LLM

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

Секция просмотра и редактирования установленных требований

4. Запуск проверки

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

Секция запуска проверки

5. Результаты проверки

После завершения проверки отображаются:

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

Секция результатов проверки

6. Сохранение результатов

Вы можете сохранить результаты проверки для дальнейшего использования в удобном формате:

  • Выберите формат файла (JSON, Excel)
  • Нажмите кнопку "📥 Скачать результаты"

Секция сохранения результатов

7. Обратная связь о качестве проверки

Ваше мнение поможет улучшить работу сервиса:

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

Секция обратной связи

Вкладка "Управление промптами"

В этой вкладке вы можете просматривать и редактировать шаблоны запросов к языковым моделям:

  • Проверка наличия требуемых элементов (CHECK_EXISTENCE_TEMPLATE) - шаблон для проверки наличия требуемых элементов в ВКР
  • Расширение требований (EXPAND_CONTENT_REQUIREMENTS_TEMPLATE) - шаблон для расширения требований к содержанию ВКР для осуществления поиска информации по требованию

Интерфейс управления промптами включает:

  1. Выпадающий список для выбора типа промпта
  2. Текстовое поле для просмотра и редактирования содержимого
  3. Кнопки управления:
    • "Сохранить изменения" - для сохранения внесенных правок
    • "Сбросить этот промпт" - для сброса текущего промпта к стандартному шаблону
    • "Сбросить все промпты" - для сброса всех промптов к стандартным шаблонам

Важно: При редактировании не изменяйте и не удаляйте переменные в формате

{...}
. Они используются для подстановки данных при выполнении проверки.

Секция управления промптами

💻 Локальный запуск приложения Streamlit

Для запуска проекта локально необходимо:

  1. Клонировать репозиторий
  2. Создать и активировать виртуальное окружение:
    • python -m venv [имя виртуального окружения]
    • для Linux:
      source [имя виртуального окружения]/bin/activate
    • для Windows:
      [имя виртуального окружения]\Scripts\activate
  3. Установить зависимости:
    pip install -r requirements.txt
  4. Настроить переменные окружения в файле
    streamlit/secrets.toml
  5. Запустить приложение:
    streamlit run app.py

📦 Локальный запуск CLI-приложения

Для запуска CLI-приложения необходимо:

  1. Клонировать репозиторий

  2. Создать и активировать виртуальное окружение:

    • python -m venv [имя виртуального окружения]
    • для Linux:
      source [имя виртуального окружения]/bin/activate
    • для Windows:
      [имя виртуального окружения]\Scripts\activate
  3. Установить зависимости:

    pip install -r requirements.txt

  4. Настроить переменные окружения в файле

    .env
    (см.
    .env.example
    ).
    Если не планируется использование LLM определенного провайдера, то соответствующие поля можно оставить пустыми.

  5. Инициализировать проект:

    python init_project.py --project_dir [путь к директории с проектом] --roles [роли, которым соответствуют проверяемые ВКР (через пробел)]

    Пример:

    python init_project.py --project_dir 'Проверки' --roles 'Аналитик' 'ML инженер'

    В результате выполнения скрипта в папке с проектом будут созданы следующие директории и файлы:

    • requirements
      — директория для загрузки требований к содержанию ВКР для каждой роли
    • prompts
      — директория для хранения промптов
    • директории для загрузки документов ВКР для каждой роли

    Для команды в примере будут созданы директории:

    • Аналитик
    • ML инженер
    • prompts
    • requirements
  6. При желании можно настроить тексты запросов для проверки в директории

    prompts
    :

    • check_existence.txt
      — текст запроса для проверки наличия требуемых элементов в ВКР
    • extend_content_requirements.txt
      — текст запроса для расширения требований к содержанию ВКР (расширение требований для осуществления поиска информации по требованию в тексте ВКР)

    ⚠️ Важно! При редактировании промптов необходимо сохранять все поля-заполнители

    {...}
    (placeholders) в исходном виде, так как они используются для подстановки данных в процессе работы приложения.

  7. Необходимо загрузить в директорию

    requirements
    файлы с требованиями к содержанию ВКР для каждой роли в формате
    *.txt
    . При этом название файла должно соответствовать названию роли.

    Пример:

    • Аналитик.txt
    • ML инженер.txt

    Пример содержимого файла

    Аналитик.txt
    :

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

    Пример:

    • Аналитик/Разработка дашборда для анализа данных.pdf
    • ML инженер/Разработка нейронной сети для классификации текстов.pdf
  9. Запустить приложение:

    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'
  10. Далее будет выполнена проверка ВКР каждой моделью на наличие требуемых элементов в соответствии с установленными требованиями к содержанию ВКР для каждой роли.

  11. В результате выполнения скрипта в директории с проектом будет создана директория

    output
    со следующей структурой:

    • chroma
      — директория для хранения векторной базы данных ChromaDB
    • extended_requirements
      — директория для хранения расширенных требований к содержанию ВКР
    • директории с результатами проверки для каждой роли (название директорий соответствует названию ролей)
    • docs_status.json
      — файл для хранения статуса проверки документов ВКР
    • uuid_mapping.json
      — файл для хранения соответствия уникальных идентификаторов и названий документов ВКР (необходимо для осуществления соответствия между наименованиями документов ВКР и коллекций в векторной базе данных ChromaDB)

    Также в корневой директории проекта будет создан файл

    ai_assistant_vkr.log
    с логами выполнения скрипта.

    Директории с результатами проверки для каждой роли имеют следующую структуру:

    • excel/[Название документа ВКР]/[Название документа ВКР]_[модель].xlsx
      — файл с результатами проверки в формате Excel
    • json/[Название документа ВКР]/[Название документа ВКР]_[модель].json
      — файл с результатами проверки в формате JSON

    Пример:

    • excel/Разработка дашборда для анализа данных/Разработка дашборда для анализа данных_Mistral.xlsx
    • json/Разработка дашборда для анализа данных/Разработка дашборда для анализа данных_Mistral.json

    Если не для всех документов ВКР и моделей была выполнена проверка (в результате каких-либо ошибок), то проверку можно запустить повторно.
    В файле

    docs_status.json
    отображен статус проверки для каждого документа ВКР и модели.
    Чтобы обработать оставшиеся документы ВКР, необходимо запустить скрипт повторно при помощи той же команды:

    python cli_app.py --project_dir [путь к директории с проектом] --models [модели, которые будут использоваться для проверки]

    В ходе выполнения скрипта будет проведена проверка оставшихся документов ВКР для выбранных моделей.