LLM-судья для образовательного контента: как мы добились 80-85% согласия с экспертами при стоимости $0.014 за курс
AI генерирует контент. Но кто проверяет, что этот контент не содержит галлюцинаций, соответствует педагогическим стандартам и не ушёл в Wikipedia-подобную сложность? Мы построили систему автоматической валидации с ROI 5,700-17,000x по сравнению с ручной проверкой.
Автор
Игорь Масленников, в IT с 2013 года. Последние 2 года занимаюсь AI и автоматизацией разработки. Работаю в DNA IT, где мы создали AI Dev Team — подразделение из 3 человек + 33 AI-агента, которое конкурирует с традиционными командами из 20+ специалистов.
Реальность: всё больше клиентов выбирают AI-подразделение вместо традиционных команд. Причина: быстрее (1-2 недели vs 2-3 месяца), дешевле (-80% стоимости), качественнее (автоматические проверки качества).
Сейчас мы строим платформу для генерации образовательных курсов. Это исследование — часть работы над Stage 6 нашего пайплайна: валидация сгенерированного контента уроков.
Проблема: спецификация не гарантирует качество
Мы используем многоэтапный пайплайн генерации курсов. Stage 5 создаёт спецификацию урока (цели, структура, архетип контента). Stage 6 генерирует сам контент на основе этой спецификации.
Наивная гипотеза: "Если спецификация валидна, контент будет качественным."
Реальность: Это опасное заблуждение.
Почему спецификация недостаточна?
1. Стохастическая природа LLM
Даже идеальная спецификация может дать галлюцинированный контент. LLM — это вероятностная модель. Она предсказывает следующий токен на основе распределения, не факта.
Пример: Спецификация требует урок "Ньютоновская физика" с хуком "Историческая аналогия". Stage 5 валидация подтверждает — всё корректно. Stage 6 генерирует историю про Исаака Ньютона, которого ударил по голове арбуз вместо яблока.
Спецификация была идеальной. Исполнение — нет.
2. Педагогический дрифт
LLM обучены на огромных корпусах интернет-данных. Они тяготеют к "среднему" уровню сложности — типичной Wikipedia-статье.
Что происходит: Урок начинается простым введением для 5-го класса (как указано в спецификации). Постепенно язык усложняется. К концу — академический жаргон, непонятный целевой аудитории.
Этот дрифт происходит во время генерации, невидимо для валидатора спецификаций.
3. "Assertiveness Bias" — уверенность не равна истине
Исследование Galileo.ai показало: люди систематически принимают уверенно написанный контент за достоверный. Профессиональный тон и чёткая структура "продают" галлюцинации.
Следствие: Если система полагается на человеческую проверку непровалидированного контента, люди будут одобрять уверенно звучащие ошибки.
Решение: LLM-судья с кросс-модельной архитектурой
Почему нужен отдельный судья?
Stage 5 проверяет намерение (спецификацию). Stage 6 Judge проверяет исполнение (контент).
Без судьи Stage 6 наш Hybrid Map-Reduce-Refine пайплайн превращается в waterfall: Plan -> Generate -> Publish. Компонент "Refine" не получает сигнала для исправления.
С судьёй Stage 6 создаётся feedback loop: Judge идентифицирует проблемы -> Refiner исправляет конкретные секции -> Re-evaluation.
Критическое открытие: Self-Evaluation Bias
Использование той же модели для генерации и оценки создаёт измеримый bias:
Модель - Self-Preference Bias
GPT-4 - +10% (оценивает свой output выше)
Claude-v1 - +25% (наиболее выраженный bias)
GPT-3.5 - Минимальный (исключение)
Причина: Perplexity-based familiarity. Модели предпочитают output с низкой perplexity (знакомые паттерны), независимо от реального качества.
Наше решение: Cross-Model Adjudication. Qwen3-235B генерирует -> DeepSeek Terminus оценивает. Разные архитектуры, разные training distributions.
Архитектура валидации: каскадное голосование
Проблема наивного 3x voting
Стандартный подход: каждый урок проходит 3 оценки, итог — консенсус.
Проблема: В 80% случаев урок либо явно отличный, либо явно провальный. Тратить 3 inference-вызова на подтверждение очевидного — waste бюджета.
Cascading Evaluation Architecture
Tier 1 (Single Pass): DeepSeek Terminus, Temperature 0.0.
- Если score > 0.85 (Clear Pass) или < 0.50 (Clear Fail) -> решение принято
- Стоимость: 1x
Tier 2 (Consensus Check): Если score в "Ambiguity Zone" (0.50-0.85):
- 2 дополнительных оценки
- Temperature 0.1-0.2 (diversity в reasoning paths)
- Финальный score — weighted average
- Стоимость: 3x (только для 20% уроков)
Результат: 67% экономии по сравнению с blanket 3x voting.
CLEV (Consensus via Lightweight Efficient Voting)
# Начинаем с 2 судей
judge1 = gemini_flash(content, temp=0.1) judge2 = gpt4o_mini(content, temp=0.1)
if judge1.score == judge2.score: # 70-85% случаев
return judge1 # Agreement - 3-й судья не нужен
else: judge3 = claude_haiku(content, temp=0.1) # Tiebreaker
return majority_vote([judge1, judge2, judge3])
Cost reduction: 3-й судья вызывается только в 15-30% случаев.
Рубрика оценки: OSCQR + веса
OSCQR Framework
OSCQR (Open SUNY Course Quality Review) — 50 стандартов для оценки образовательного контента. Мы выбрали релевантные для автоматической проверки:
Weighted Hierarchical Rubric
Не все критерии равны. Провал в Factual Integrity делает урок опасным. Провал в Engagement делает его скучным.
Veto Rules: Критический провал в первых двух категориях отклоняет урок независимо от общего score.
JSON Output Format
Структурированный output критичен для programmatic correction workflows:
{
"overall_score": 0.82,
"verdict": "PASS",
"dimensions": {
"factual_integrity": {
"score": 0.9,
"reasoning": "No hallucinations detected. Claims align with RAG context."
},
"pedagogical_alignment": {
"score": 0.8,
"reasoning": "Covers 2/3 objectives. Misses the 'application' objective."
},
"engagement": {
"score": 0.6,
"reasoning": "Tone is academic. Lacks analogies or hook."
}
},
"fix_recommendation": "Rewrite the introduction to include a real-world analogy."
}
Почему JSON, а не категории: Программный парсинг, multi-dimensional feedback для targeted fixes, confidence scores для CLEV conditional voting.
Детекция галлюцинаций без RAG
Проблема: RAG дорогой
Для проверки фактической точности судье нужен доступ к source materials (RAG context). Но передача 5,000+ токенов контекста для каждого урока съедает бюджет.
Дополнительная проблема: "Lost in the Middle" phenomenon — большие контексты деградируют reasoning performance модели.
Решение: Log-Probability Entropy как proxy
Когда LLM галлюцинирует, её внутренняя уверенность обычно ниже, даже если generated text выглядит assertive.
Механизм:
- Token-Level Analysis: Во время Stage 6 генерации запрашиваем logprobs для каждого токена
- Entropy Calculation: Для каждого предложения вычисляем среднюю entropy (uncertainty)
- Heuristic Trigger: Если предложение содержит factual claims (Named Entity Recognition) И имеет высокую entropy -> флаг "Potential Hallucination"
Implementation:
# Step 1: Вычисляем entropy во время генерации (бесплатно)
entropy_scores=calculate_sentence_entropy(logprobs)
# Step 2: Если Entropy > Threshold -> Flag for RAG Check
flagged_sentences= [sforsinsentencesifs.entropy>0.8]
# Step 3: Conditional RAG
ifflagged_sentences:
# Только для flagged случаев передаём RAG context
deep_verify(flagged_sentences, rag_context)
else:
# 80% уроков — "safe", RAG не нужен
pass
Результат: Избегаем RAG-based verification для 80% "safe" уроков. Conditional RAG только для high-uncertainty случаев.
Ограничения: Этот метод ловит "Confabulations" (uncertainty-based errors), но может пропустить "Misconceptions" (модель уверенно ошибается, потому что training data был неверным).
Стратегия исправлений: Targeted Self-Refinement
Почему не полная регенерация?
При score < 0.75 наивный подход: регенерировать весь урок.
Проблема: Это отбрасывает успешные части контента и надеется, что новый random seed даст лучший результат.
Targeted Self-Refine
Исследования показывают: LLM значительно лучше улучшают контент на основе конкретного feedback, чем генерируют идеальный контент zero-shot.
Workflow:
- Diagnosis: Judge идентифицирует конкретную failing dimension: "Engagement Score: 0.4. Reason: The hook is weak and unrelated to the topic."
- Context Preservation: Fixer получает surrounding context (параграф до и после target section) для seamless blending.
Cost Implications
Даже с overhead Fix Prompt: refinement стоит 20-30% от full regeneration.
Iteration Limits
Research показывает: performance gains plateau после 2-3 iterations. После этого модель циклится между субоптимальными состояниями или деградирует текст через over-editing.
Наша политика:
- Max Refinements: 2
- Fallback: Если score < 0.75 после 2 fixes -> "Manual Review Required" + judge critique для ускорения human review
Экономика: $0.014 за курс
Budget Constraint
Наш target: $0.20-$0.50 на курс (10-30 уроков). Это $0.006-$0.05 на урок.
Cost Modeling (DeepSeek Terminus)
Цены:
- Input: $0.27 / 1M токенов
- Output: $1.10 / 1M токенов
- Context caching: $0.07 / 1M токенов
Сценарий A (простой, без исправлений):
- Input 2,5k токенов (рубрика 1k — в кэше) Стоимость: (1.5k × 0.27) + (1k × 0.07) = $0.000475
- Output 200 токенов: $0.00022
Итог: $0.0007 за оценку (~10% от минимального бюджета $0.006/урок — ок)
Сценарий B (сложный: голосование + 1 правка):
- Tier 1 eval: $0.0007
- Tier 2 voting (ещё 2 прогона): $0.0014
- Refinement generation: $0.0005
- Re-evaluation: $0.0007
Итог: $0.0033 (всё ещё ~половина минимального бюджета за урок)
Hybrid Cascade: $0.014 за курс
Stage 1 — бесплатные эвристики
- длина, читабельность, ключевые слова → отсев 30–50%
Stage 2 — дешёвый judge (50–70% после Stage 1)
- Gemini Flash (T=0.1)
- confidence > 0.8 → ACCEPT
- иначе → Stage 3
Stage 3 — CLEV 3× voting (15–20% контента)
- 2 судьи
- 3-й только при расхождении
Разбивка стоимости:
- Stage 1: $0 (отсев 30–50%)
- Stage 2: $0.00065 × 50% = $0.00033/урок
- Stage 3: $0.00195 × 20% = $0.00039/урок
Итого: $0.00072/урок 20 уроков: $0.014
ROI (vs ручная проверка): Человек: $4–12 за урок / $80–240 за курс LLM: $0.014 за курс Экономия: 5,700–17,000×
Эскалация к человеку:
- Score < 0.75 после 2 итераций
- Низкая уверенность модели
- Критические фактические ошибки
- Стоимость итераций > 5× стоимости генерации
Human-in-the-Loop Workflow
Бюджет на ручную проверку:
- 10% выборка Tier 2: 2 урока × $1 = $2 за курс
- Полная проверка Tier 3: 2 урока × $8 = $16 за курс
Итого: $18 за курс
Общая стоимость с автоматической проверкой: $18 (ручная проверка) + $0.014 (автоматическая) = $18.014 за курс
Всё ещё 4-13x дешевле 100% human review ($80-240/course).
Производственные метрики
Что LLM-Judge делает хорошо (80–90% совпадение с человеком)
- Лингвистическое качество: беглость, связность, читабельность
- Педагогическая структура: логика «введение — основная часть — вывод»
- Проверка на соответствие целям обучения
- Факторы вовлечения: качество «hook», уместность примеров
Где LLM-Judge нуждается в помощи (требуется RAG/человек)
- Фактическая точность: ~70% ошибок без референс-материалов
- Математическое рассуждение: даже GPT-4 ошибается в базовой математике
- Экспертные домены: только 60–68% совпадения с профильными экспертами
Дорожная карта внедрения
1 этап: Запуск гибридной каскадной проверки в работе
2 этап: Настройка панели мониторинга и раз в три месяца проверка точности Постоянно: Проверка 10% уроков человеком для контроля качества
Сухие факты:
- Medical Education (2024): GPT-4 и Gemini достигли moderate agreement с преподавателями на 2,288 студенческих работах
- Science Writing (Garuda et al., 2024): GPT-4 matched instructor grades на astronomy/astrobiology MOOCs — reliable than peer grading
- Programming Assessment (2025): GPT-4o achieved statistically equivalent grading to humans (±5 points on 0-100)
Если не согласны — отлично. Изучите исследования, попробуйте на своих данных, потом скажите, где я неправ. Я предпочитаю технические аргументы эмоциональным реакциям.
Обратна связь и мои контакты
Telegram
Канал (редкие, но интересные посты): https://t.me/maslennikovigor Заходите, читайте мои мысли и статьи. Пишу редко, но когда пишу — стоит прочитать.
Прямой контакт: https://t.me/maslennikovig Нужно поговорить? Пишите напрямую. Всегда рад общению.
Feedback: я максимально открыт
Что мне интересно услышать:
- Критику — Что не так с этим подходом? Где слабые места?
- Идеи — Как улучшить рубрику? Какие критерии добавить?
- Предложения — Какие модели работают лучше для вашего домена?
- Вопросы — Что-то непонятно? Спрашивайте.
Каналы для feedback:
- GitHub Issues: https://github.com/maslennikov-ig/claude-code-orchestrator-kit/issues
- GitHub Discussions: https://github.com/maslennikov-ig/claude-code-orchestrator-kit/discussions
- Telegram: https://t.me/maslennikovig
Итого
Мы построили систему автоматической валидации образовательного контента:
- Cross-Model Architecture: Qwen генерирует -> DeepSeek оценивает (eliminates self-preference bias)
- Cascading Voting: 67% cost savings vs blanket 3x voting
- OSCQR-Based Rubric: 4 weighted dimensions, veto rules для critical failures
- Reference-Free Hallucination Detection: Log-probability entropy как cheap proxy, conditional RAG
- Targeted Self-Refinement: 20-30% cost of regeneration, max 2 iterations
Результат: $0.014/course при 80-85% human agreement. ROI 5,700-17,000x vs manual review.
Stage 6 validation — необходимый слой между генерацией и публикацией. Без него идеальная спецификация может дать галлюцинированный, педагогически дрифтующий контент.
Исследование протестировано на реальных данных. Battle-tested на клиентских проектах DNA IT / AI Dev Team.