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 стандартов для оценки образовательного контента. Мы выбрали релевантные для автоматической проверки:
| Стандарт | LLM Translation |
|---|---|
| Standard 30 (Higher Order Thinking) | Есть ли открытые вопросы? Выходит ли контент за пределы определений к применению? |
| Standard 2 (Learning Objectives) | Семантическое сравнение: ключевые концепты vs Learning Objectives из спецификации |
| Standard 19 (Instructions) | Структура и signposting: переходы между Introduction и Body |
| Standard 31 (Authentic Activities) | Real-world grounding: аналогии, case studies, примеры из реальной жизни |
| Standard 34 (Text Accessibility) | Flesch-Kincaid Grade Level в пределах +/-1 от целевой аудитории |
Weighted Hierarchical Rubric
Не все критерии равны. Провал в Factual Integrity делает урок опасным. Провал в Engagement делает его скучным.
| Критерий | Вес | Critical Failure (Veto) |
|---|---|---|
| Factual Integrity | 35% | Да (score < 0.6 = Fail) |
| Pedagogical Alignment | 25% | Да (score < 0.5 = Fail) |
| Clarity & Structure | 20% | Нет |
| Engagement & Tone | 20% | Нет |
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 = [s for s in sentences if s.entropy > 0.8]
# Step 3: Conditional RAG
if flagged_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."
-
Targeted Fix Prompt:
You are an expert pedagogical editor. The following lesson text has been flagged for a weak hook. Critique: [judge feedback] Task: Rewrite ONLY the Introduction paragraph to include a compelling analogy. Do not change the Body sections. -
Context Preservation: Fixer получает surrounding context (параграф до и после target section) для seamless blending.
Cost Implications
| Approach | Token Cost |
|---|---|
| Full Regeneration | 2,000 tokens (Output) |
| Targeted Refinement | ~300 tokens (только fix) |
Даже с 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)
DeepSeek Terminus Pricing:
- Input: $0.27 / 1M tokens
- Output: $1.10 / 1M tokens
- Context Caching: $0.07 / 1M tokens
Scenario A: Happy Path (Single Pass, No Fixes)
Input: 2,500 tokens (Lesson + Spec + Rubric)
- Rubric (1,000 tokens) cached
- Cost: (1.5k × $0.27) + (1k × $0.07) = $0.000475
Output: 200 tokens (JSON verdict)
- Cost: 200 × $1.10 = $0.00022
Total Evaluation Cost: $0.0007 (~$0.0007)
10% от минимального per-lesson budget ($0.006) — sustainable.
Scenario B: Complex Path (Voting + 1 Refinement)
Tier 1 Eval: $0.0007
Tier 2 Voting (2 extra passes): $0.0014
Refinement Generation: $0.0005
Re-Evaluation: $0.0007
Total Cost: $0.0033
Даже в complex scenario: $0.003, что составляет половину минимального per-lesson budget.
Hybrid Cascade: $0.014/course
Stage 1: Heuristic pre-filters (FREE)
- Length checks, Flesch-Kincaid readability, keyword coverage
→ Filters 30-50% content instantly
Stage 2: Single cheap judge (50-70% of content passing Stage 1)
- Gemini Flash at T=0.1
- If confidence > 0.8 → ACCEPT
- Else → proceed to Stage 3
Stage 3: CLEV conditional 3x voting (15-20% of content)
- 2 judges initially
- 3rd judge only if disagreement
Cost breakdown:
- Stage 1: $0 (30-50% filtered)
- Stage 2: $0.00065/lesson × 50% = $0.00033/lesson
- Stage 3: $0.00195/lesson × 20% = $0.00039/lesson
- Total per lesson: $0.00072
- Per 20-lesson course: $0.014
ROI vs Manual Review
Manual Review Baseline:
- Human expert: $25-50/hour
- Time per lesson: 10-15 minutes
- Cost per lesson: $4-12
- Cost per 20-lesson course: $80-240
LLM Judge (optimized):
- Hybrid cascade: $0.014/course
- ROI: 5,700-17,000x savings
Fallback: когда corrections не работают
Escalation Triggers
Automatic escalation to human review когда:
- Score < 0.75 после 2 refinement iterations
- Judge confidence consistently "low" across all votes
- Critical factual accuracy flags
- Iteration cost exceeds 5x base generation
Human-in-the-Loop Workflow
| Tier | Criteria | Action | % Lessons |
|---|---|---|---|
| Tier 1 | Score > 0.85, high confidence | Auto-publish | 70-80% |
| Tier 2 | Score 0.75-0.85, moderate issues | Queue for 10% sampling | 15-20% |
| Tier 3 | Score < 0.75 after corrections | Full expert review | 5-10% |
Budget for human review:
- 10% sampling of Tier 2: 2 lessons @ $1 = $2/course
- Full review of Tier 3: 2 lessons @ $8 = $16/course
- Total: $18/course
Combined cost: $18 human review + $0.014 automated judge = $18.014/course
Всё ещё 4-13x дешевле 100% human review ($80-240/course).
Production Metrics
| Metric | Value |
|---|---|
| Judge-Human Agreement | 80-85% |
| Happy Path Evaluation Cost | ~$0.0007/lesson |
| Complex Path Cost | ~$0.003/lesson |
| Hybrid Cascade Cost | $0.014/course |
| ROI vs Manual Review | 5,700-17,000x |
| Auto-Fix Rate (target) | >60% |
| Escalation Rate | 5-10% |
What LLM Judge Does Well (80-90% human agreement)
- Linguistic quality: fluency, coherence, readability
- Pedagogical structure: intro-body-conclusion flow
- Alignment assessment: learning objectives coverage
- Engagement factors: hook quality, example relevance
Where LLM Judge Needs Help (requires RAG/human)
- Factual accuracy: 70% failure rate without reference materials
- Mathematical reasoning: even GPT-4 makes elementary math errors
- Domain expertise: 60-68% agreement with subject matter experts
Implementation Roadmap
| Phase | Action | Success Metric |
|---|---|---|
| 1. Calibration | Run DeepSeek Judge on 100 manual lessons. Tune prompts. | Correlation > 0.8 with human |
| 2. Integration | Deploy Judge to Stage 6 pipeline. Implement Logprob entropy checks. | Latency < 5s |
| 3. Optimization | Enable Context Caching for Rubric prompt. | Eval Cost < $0.001 |
| 4. Production | Activate Fix Loop (Refinement). | Auto-Fix Rate > 60% |
Quarter 1: Hybrid cascade в production Quarter 2: Monitoring dashboard + quarterly calibration Ongoing: 10% sampling для continuous human validation
Key Takeaways
1. Stage 5 validation !== Stage 6 quality
Спецификация контролирует намерение, не исполнение. LLM — стохастическая система. Perfect spec -> flawed output возможен и происходит.
2. Cross-model evaluation eliminates self-preference bias
GPT-4 оценивает свой output на 10% выше. Claude — на 25%. Используйте разные model families для генерации и оценки.
3. Cascading voting saves 67% cost
80% уроков — clearly pass или clearly fail. Blanket 3x voting — waste. Conditional voting для "ambiguity zone" только.
4. Log-probability entropy — cheap hallucination proxy
Conditional RAG: дорогая fact-checking только когда uncertainty высокая. 80% "safe" уроков — без RAG.
5. Targeted refinement beats regeneration
20-30% cost of full regeneration. Max 2 iterations (diminishing returns after that).
6. $0.014/course при 80-85% human agreement
ROI 5,700-17,000x vs manual review. Production-grade quality assurance.
Disclaimer: Expected Pushback
Я понимаю, что эта статья вызовет критику. "LLM не может оценивать образовательный контент", "80% agreement недостаточно", "Это автоматизация качества за счёт качества".
Моё мнение: эти реакции — скорее страх смешанный с высокомерием, чем реальные технические аргументы.
Страх: "Если AI может проверять контент, что будет с QA-специалистами?"
Высокомерие: "Только люди могут оценить настоящее педагогическое качество, AI — просто игрушка."
Реальность: AI не заменяет хороших экспертов. Он усиливает их. LLM Judge — не о том, чтобы заменить методистов. Это о том, чтобы автоматизировать 70-80% рутинных проверок, оставляя экспертам 5-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)
Если не согласны — отлично. Изучите исследования, попробуйте на своих данных, потом скажите, где я неправ. Я предпочитаю технические аргументы эмоциональным реакциям.
Contact & Feedback
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
Тон: Максимально открыт для конструктивного диалога. Без ego, просто хочу сделать систему лучше.
Итого
Мы построили систему автоматической валидации образовательного контента:
- 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.