Вернуться к статьям

LLM-судья для образовательного контента: как мы добились 80-85% согласия с экспертами при стоимости $0.014 за курс

Igor Maslennikov
25 ноября 2025 г.
14 minutes read
AI
LLM
validation
education
quality assurance
EdTech

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.

Механизм:

  1. Token-Level Analysis: Во время Stage 6 генерации запрашиваем logprobs для каждого токена
  2. Entropy Calculation: Для каждого предложения вычисляем среднюю entropy (uncertainty)
  3. 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:

  1. Diagnosis: Judge идентифицирует конкретную failing dimension

    • "Engagement Score: 0.4. Reason: The hook is weak and unrelated to the topic."
  2. 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.
    
  3. 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.