Лейтнер, Elo и поправка на угадывание: как работает движок тренажёра собеседований без единого вызова LLM

Введение

Когда речь заходит об AI-тренажёрах для собеседований, большинство сразу представляет себе генеративные модели: LLM задают вопросы, оценивают ответы и дают обратную связь. Однако на практике такой подход сталкивается с серьёзными ограничениями: высокая стоимость каждого запроса, непредсказуемость качества генерации и сложность контроля над логикой оценки.

Недавняя публикация на Habr Источник раскрывает альтернативный путь — создание движка тренажёра собеседований, который полностью обходится без вызовов LLM. Вместо этого используются проверенные временем алгоритмы: система интервальных повторений Лейтнера, рейтинговая система Elo (изначально разработанная для шахмат) и статистическая поправка на угадывание. Разберём, как эти компоненты работают вместе и почему такой подход может быть эффективнее «наивного» использования больших языковых моделей.

Проблема: почему LLM не подходят для массового тренажёра

Авторы статьи отмечают, что типичный тренажёр собеседований на основе LLM сталкивается с несколькими фундаментальными проблемами:

  1. Стоимость. Каждый запрос к GPT-4 или аналогичной модели стоит денег. При тысячах пользователей, проходящих десятки вопросов, затраты становятся непомерными.
  2. Нестабильность. LLM могут генерировать разные ответы на один и тот же вопрос, что нарушает воспроизводимость оценки.
  3. Контроль качества. Невозможно гарантировать, что модель не «галлюцинирует» или не даст некорректный фидбек.
  4. Сложность настройки. Изменение логики оценки требует дообучения или сложного промпт-инжиниринга.

Вместо того чтобы бороться с этими ограничениями, разработчики из описанного проекта решили пойти другим путём: построить систему на классических алгоритмах, которые десятилетиями доказывали свою эффективность в обучении и рейтинговании.

Компонент 1: Система Лейтнера — основа интервальных повторений

Система Лейтнера, предложенная немецким психологом Себастьяном Лейтнером в 1970-х годах, — это метод интервальных повторений, основанный на «кривой забывания» Эббингауза. В классическом варианте карточки с вопросами распределяются по нескольким ящикам. Если пользователь отвечает правильно, карточка перемещается в следующий ящик (с большим интервалом повторения). Если ошибается — возвращается в первый ящик.

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

Ящик Интервал повторения Типичные вопросы
1 1 день Вопросы, на которые пользователь ошибся или отвечал неуверенно
2 3 дня Вопросы с одной ошибкой за последние 2 попытки
3 7 дней Вопросы с двумя правильными ответами подряд
4 14 дней Хорошо усвоенные вопросы
5 30 дней Вопросы, не вызывающие затруднений

Авторы статьи подчёркивают, что адаптация Лейтнера к собеседованиям потребовала модификации: вместо бинарного «правильно/неправильно» используется взвешенная оценка, учитывающая время ответа и уверенность пользователя. Например, если пользователь ответил верно, но потратил на размышление 30 секунд вместо типичных 10, вопрос может остаться в текущем ящике, а не перейти в следующий.

Компонент 2: Рейтинг Elo — как оценить сложность вопроса

Система Elo, разработанная Арпадом Эло для шахматных рейтингов, идеально подходит для оценки относительной сложности вопросов и уровня подготовки пользователя. В оригинальной версии каждый игрок имеет рейтинг, который обновляется после каждой партии: победитель получает очки от проигравшего.

В тренажёре собеседований Elo работает так:

  • Каждый вопрос имеет свой рейтинг сложности (начальное значение — 1500).
  • Каждый пользователь имеет рейтинг подготовки (начальное значение — 1500).
  • После ответа на вопрос рейтинги пересчитываются: если пользователь ответил правильно, его рейтинг растёт, а рейтинг вопроса падает (вопрос становится «легче»). Если ответ неверный — наоборот.

Формула обновления рейтинга:

R_new = R_old + K * (S - E)

Где:
- R_new — новый рейтинг
- R_old — текущий рейтинг
- K — коэффициент (обычно 32)
- S — результат (1 за правильный ответ, 0 за неправильный)
- E — ожидаемый результат (вероятность правильного ответа, рассчитанная на основе разницы рейтингов)

Ожидаемый результат E вычисляется по формуле:

E = 1 / (1 + 10^((R_user - R_question) / 400))

Таким образом, если пользователь с рейтингом 1500 отвечает на вопрос с рейтингом 1500, E = 0.5. Если ответ правильный, рейтинг пользователя увеличивается на 16 пунктов (32 * (1 - 0.5)), а рейтинг вопроса уменьшается на 16. Это позволяет системе динамически подстраивать сложность: после нескольких правильных ответов пользователя вопрос становится «легче» и реже предлагается, а сложные вопросы накапливают рейтинг.

Компонент 3: Поправка на угадывание — борьба с шумом

Одна из ключевых проблем любых тестов — пользователь может угадать правильный ответ, особенно в формате multiple-choice. Без поправки система Лейтнера и Elo будут искажать реальную картину: вопрос, на который ответили угадыванием, может быть помечен как «усвоенный», хотя на самом деле пользователь не знает ответа.

Авторы статьи применили статистическую поправку, основанную на теории вероятностей. Если вопрос имеет n вариантов ответа, и пользователь выбирает правильный, то вероятность, что это было угадывание, а не знание, равна:

P_guess = (1 - P_know) / n

Где P_know — вероятность, что пользователь действительно знает ответ. Её оценивают на основе истории ответов пользователя на другие вопросы той же темы. Например, если пользователь правильно ответил на 80% вопросов по теме «SQL-запросы», то для нового вопроса по той же теме P_know = 0.8, а вероятность угадывания = (1 - 0.8) / 4 = 0.05 (при 4 вариантах ответа).

Фактический результат S в формуле Elo корректируется:

S_adjusted = S * (1 - P_guess) + 0.5 * P_guess

То есть, если пользователь ответил правильно, но с высокой вероятностью угадывания, его рейтинг растёт меньше, чем если бы ответ был дан уверенно. Это предотвращает «накрутку» рейтинга и обеспечивает более точную оценку реальных знаний.

Как компоненты работают вместе

В описанной системе три компонента образуют единый цикл:

  1. Выбор вопроса. Система Лейтнера определяет, какие вопросы давно не повторялись (по ящикам). Elo выбирает среди них вопросы с рейтингом, близким к рейтингу пользователя, чтобы обеспечить оптимальный уровень сложности.
  2. Ответ и оценка. Пользователь отвечает на вопрос. Поправка на угадывание корректирует результат.
  3. Обновление рейтингов. Elo пересчитывает рейтинги пользователя и вопроса.
  4. Перемещение по ящикам. Лейтнер перемещает вопрос в следующий или предыдущий ящик в зависимости от скорректированного результата.

Этот цикл не требует ни одного вызова LLM — все расчёты выполняются на стороне сервера с минимальными вычислительными затратами. В статье приводятся данные, что система способна обрабатывать до 10 000 одновременных пользователей на одном сервере среднего уровня.

Пример из практики

Предположим, пользователь Иван готовится к собеседованию на Junior Python Developer. Система предлагает вопрос:

Что такое декоратор в Python?

Варианты ответа:
1. Функция, которая изменяет поведение другой функции
2. Специальный тип данных
3. Метод для работы с файлами
4. Класс для создания исключений

Иван выбирает вариант 1 — правильно. Но система видит, что:
- Рейтинг Ивана по теме «Python» — 1200 (ниже среднего)
- Рейтинг вопроса — 1500
- Ожидаемый результат E = 1 / (1 + 10^((1200 - 1500)/400)) = 1 / (1 + 10^(-0.75)) ≈ 0.85
- Вероятность угадывания при 4 вариантах: если P_know = 0.6 (по истории Ивана), то P_guess = (1 - 0.6)/4 = 0.1
- Скорректированный результат S_adjusted = 1 * (1 - 0.1) + 0.5 * 0.1 = 0.95

Изменение рейтинга Ивана: 32 * (0.95 - 0.85) = +3.2 пункта (вместо +4.8 без поправки). Вопрос перемещается из ящика 2 в ящик 3 (интервал 7 дней), так как ответ был правильным, но с небольшой вероятностью угадывания.

Если бы Иван ошибся, рейтинг упал бы сильнее, а вопрос вернулся бы в ящик 1 для повторения на следующий день.

Преимущества подхода без LLM

Авторы статьи выделяют несколько ключевых преимуществ:

  1. Экономичность. Стоимость обработки одного ответа — доли копейки, в отличие от центов за запрос к LLM.
  2. Предсказуемость. Логика полностью детерминирована — одинаковые ответы всегда приводят к одинаковым результатам.
  3. Масштабируемость. Система легко горизонтально масштабируется, так как не зависит от внешних API.
  4. Прозрачность. Каждое изменение рейтинга можно объяснить формулой — это важно для доверия пользователей.
  5. Автономность. Система работает даже при отсутствии интернета (после загрузки данных).

Ограничения и когда LLM всё же нужен

Конечно, подход не универсален. Он хорошо работает для тестов с фиксированными вариантами ответов — например, для проверки знания терминов, алгоритмов, синтаксиса языков программирования. Но он не подходит для:

  • Оценки развёрнутых ответов (например, «расскажите о своём опыте»)
  • Генерации новых вопросов (нужна база вопросов, созданная экспертами)
  • Анализа soft skills (коммуникация, стрессоустойчивость)

Для этих задач LLM остаётся незаменимым инструментом. Однако для массового тренинга по hard skills комбинация Лейтнера, Elo и поправки на угадывание показывает впечатляющие результаты.

Выводы

Статья на Habr демонстрирует, что не всегда нужно «заливать» каждую задачу AI-генерацией. Классические алгоритмы, проверенные десятилетиями, могут быть более эффективными в конкретных сценариях. Система Лейтнера обеспечивает оптимальное распределение повторений, Elo — динамическое оценивание сложности, а поправка на угадывание — очистку данных от шума.

Для разработчиков тренажёров это важный урок: прежде чем подключать дорогой LLM, стоит проанализировать, можно ли решить задачу с помощью комбинации простых, но мощных алгоритмов. В случае с собеседованиями — ответ оказался положительным.

Если вы разрабатываете подобные системы, обратите внимание на то, что описанный подход легко интегрируется с любыми платформами обучения. ASI Biont поддерживает подключение к системам интервальных повторений через API — подробнее на asibiont.com/courses. Это позволяет создавать гибридные решения, где классические алгоритмы отвечают за рутину, а AI — за креативные задачи.

← Все статьи

Комментарии

Читайте также

Hermes Agent Maker от Nous Research: как оценка в $1.5 млрд меняет правила игры в Vibe Coding

14 июля 2026

Освойте современное системное программирование: Go и Rust — курс системного программирования на Asibiont

14 июля 2026

Освоение пожарной безопасности: курс «Пожарная безопасность» на asibiont.com – ваш путь к соблюдению требований и уверенности с помощью ИИ

14 июля 2026

AS Biont + Railway: Как AI-агент превращает ручной деплой в одно сообщение в чате

14 июля 2026

Ethernet (W5500, ENC28J60) + ASI Biont: проводной IoT без программирования — будущее автоматизации

14 июля 2026

Интеграция RC522 (RFID) с AI-агентом ASI Biont: пошаговое руководство по подключению и автоматизации

14 июля 2026

Промышленная безопасность: как избежать штрафов и аварий на ОПО в 2026 году — курс от экспертов Ростехнадзора

14 июля 2026

Почему курс по системам реального времени — ваш следующий шаг в карьере: WebSockets, WebRTC и голосовые ассистенты

14 июля 2026

Как я собирал AI-агентную команду для реального бизнеса, а не ассистента в чате

14 июля 2026