Skip to content

AI testing#447

Draft
Nickovlev wants to merge 36 commits into
mimi-net:mainfrom
Nickovlev:NickolayYackovlev/AI-chat
Draft

AI testing#447
Nickovlev wants to merge 36 commits into
mimi-net:mainfrom
Nickovlev:NickolayYackovlev/AI-chat

Conversation

@Nickovlev

@Nickovlev Nickovlev commented May 25, 2026

Copy link
Copy Markdown
Contributor

Что добавлено

Добавлен MVP модуля AI-тестирования по курсу компьютерных сетей.

Модуль встроен в существующую страницу Тестирование . Студент вводит одноразовый шестизначный код, выбирает темы и проходит тестирование. После завершения сохраняются оценка, фидбек и история ответов.

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

Для каждой выбранной темы backend проводит две пары вопросов:

  1. Основной вопрос выбирается из подготовленного банка.
  2. После ответа LLM оценивает его и формирует один связанный технический вопрос-уточнение.
  3. После ответа на уточнение backend переходит к следующей паре или завершает попытку.

Также предусмотрен режим, в котором все вопросы берутся из готовой базы. Модель не генерирует вопросы, а только участвует в оценке ответов.

LLM не управляет состоянием тестирования и не генерирует основные вопросы.

Основные изменения

  • добавлены backend-модели для настроек OpenRouter, кодов доступа, сессий и вопросов;
  • добавлены authenticated routes и API для запуска, продолжения, завершения и просмотра результата;
  • добавлена карточка входа на странице Тестирование;
  • добавлен банк вопросов по темам курса;
  • реализован backend-планировщик: две пары вопросов на каждую выбранную тему;
  • добавлен OpenRouter-провайдер с JSON-валидацией ответа и ограниченным числом повторов при невалидном ответе;
  • добавлена backend-нормализация итоговой оценки с учетом баллов и критичных ошибок;
  • добавлен лимит ответа студента: 1000 символов на frontend и backend;
  • повторная отправка уже обработанного ответа не вызывает LLM второй раз;
  • код доступа по умолчанию является одноразовым с возможностью настройки количества прохождений на пользователя. По умолчанию действует 5 дней;
  • сохраняется история последних сессий студента;
  • добавлена возможность досрочно завершить активную попытку;
  • в админке добавлены проверка OpenRouter и управление кодами доступа;
  • для production добавлена поддержка OpenRouter API key через Docker secret;
  • добавлены unit tests для основных правил модуля.

Как использовать

Для преподавателя

  1. Настроить OpenRouter API key на backend.
  2. В админке открыть AI настройки.
  3. Нажать Проверить OpenRouter.
  4. В разделе AI коды доступа сгенерировать шестизначный код.
  5. Передать код студенту.

Для студента

  1. Войти в Miminet.
  2. Открыть страницу Тестирование.
  3. Нажать карточку AI-тестирование.
  4. Ввести код доступа.
  5. Выбрать одну или несколько тем.
  6. Выбрать режим: с генерацией вопросов ИИ или без
  7. Ответить на вопросы.
  8. После завершения посмотреть оценку, фидбек и разбор ответов.
  9. При необходимости открыть завершенную сессию из истории.

Настройка OpenRouter

Dev

В front/.env:

OPENROUTER_API_KEY=your_api_key

Используется модель:

google/gemini-3.1-flash-lite

Prod

Для production ключ хранится в secret-файле:

/opt/miminet/secrets/openrouter_api_key

На сервере создать каталог для secret-файла:

sudo mkdir -p /opt/miminet/secrets

Создать и открыть файл с ключом:

sudo nano /opt/miminet/secrets/openrouter_api_key

Записать в файл только OpenRouter API key, без префикса OPENROUTER_API_KEY=:

sk-or-v1-...

Ограничить доступ к файлу:

sudo chmod 600 /opt/miminet/secrets/openrouter_api_key

Перезапустить контейнеры из каталога front:

docker compose -f docker-compose-prod.yml up -d --build

Тесты

Добавлены unit tests:

front/tests/test_ai_interview.py

@Nickovlev Nickovlev changed the title Nickolay yackovlev/ai chat AI testing Jun 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant