3,583 papers
arXiv:2610.12114 82 8 окт. 2026 г. FREE

UTT (Universal Textual Teaching): сильная модель пишет «учебник» для слабой по её собственным ошибкам

КЛЮЧЕВАЯ СУТЬ
Проблема: общий промпт «будь внимателен, рассуждай по шагам» почти не помогает дешёвой модели, потому что он не знает, где именно она ошибается. Метод UTT позволяет собрать для слабой модели готовый учебник правил (в статье он называется Primer) и просто положить его в контекст, без дообучения. Фишка: учебник растёт только из задач, которые сильная модель решила, а слабая провалила. Сильная модель разбирает каждую ошибку, третья роль сводит разборы в один текст, а каждое дополнение проходит шлюз: стало хуже на тех же задачах — выкидываем. Статья показывает прирост порядка 40 пунктов на коде при стартовых 9%. Учебник, написанный для одной модели, заработал и на другой.
Адаптировать под запрос
⚡

TL;DR

UTT — техника, в которой слабая модель решает задачи, на ошибках сильная модель показывает правильное решение, а третья роль сводит уроки в один текст — «учебник» (Primer). Каждое новое дополнение проверяют: если на тех же задачах слабая модель с ним стала хуже, дополнение выкидывают. Готовый Primer просто кладут слабой модели в контекст. Веса не трогают, дообучение не нужно.

Обычно слабой модели пишут общий промпт: «будь внимателен, рассуждай по шагам». Это почти не помогает, потому что промпт не знает, где именно эта модель ошибается. Сильная модель, которую просят «написать инструкцию для слабой», тоже гадает. В UTT учебник строится только из реальных провалов: берут задачи, которые сильная решила, а слабая нет. Поэтому в тексте оказываются конкретные приёмы и подводные камни, которых слабой модели не хватало. Удивительная часть: такой текст, написанный для одной слабой модели, заработал и на другой, которая в его создании не участвовала.

Цикл из четырёх ролей: Student (слабая модель) решает задачу. Если ошиблась, Prompter по задаче и отзыву проверки формулирует учебную инструкцию. Teacher (сильная) по ней даёт целевое решение, и оно должно пройти проверку. Synthesizer вливает проверенные записи в общий Primer. Кандидата принимают, только если он не хуже прежней версии на том же пакете задач.

🔬

Схема метода

ПОДГОТОВКА: прогнать Teacher и Student на наборе задач с проверяемым ответом
            → оставить задачи, где Teacher решает лучше Student (обучающая часть)
            → отложить отдельные задачи для финального теста

ЦИКЛ по пакетам задач (в статье пакет = 16):
  ШАГ 1 Student: решает задачу с текущим Primer → ответ
         верно → следующая задача
  ШАГ 2 Prompter: задача + отзыв проверки → учебная инструкция (в чём разрыв)
  ШАГ 3 Teacher: задача + инструкция → показательное решение
         решение не прошло проверку → запись выбрасывается
  ШАГ 4 Synthesizer: текущий Primer + проверенные записи → кандидат Primer
  ШАГ 5 ШЛЮЗ: Student с кандидатом на том же пакете не хуже, чем с прежним Primer?
         да → кандидат становится Primer; нет → остаётся старый

ИТОГ: Primer кладут в контекст Student (или другой модели) как есть

В статье цикл гоняет код. Роли можно разыграть в разных чатах вручную, о чём ниже.

🚀

Пример применения

Задача: Вы ведёте магазин на Ozon и Wildberries. Бухгалтерия присылает сканы УПД, дешёвая модель вытаскивает из них ИНН, ставку НДС, сумму без НДС и дату. Она стабильно путает «НДС 20/120» и «НДС 20%», берёт ИНН посредника вместо поставщика и теряется на документах с несколькими ставками. Дорогая модель такие документы разбирает верно. Есть 40 документов с проверенными вручную правильными ответами. Сверка ответа с эталоном — это проверка из метода.

Промпт (шаг 2 — Prompter, в чате с дорогой моделью):

Ты — Prompter. Вот документ, ответ дешёвой модели и результат сверки с эталоном.

Документ: УПД №412 от 14.03, поставщик ООО «Ромашка» (ИНН 7701234567), 
посредник ИП Сидоров (ИНН 770987654321), две позиции: НДС 20% и НДС 10%.
Ответ модели: ИНН 770987654321, НДС 20%, сумма без НДС 118 400 ₽.
Результат сверки: ИНН неверный (взят посредник), ставка НДС неполная 
(пропущена вторая), сумма без НДС неверная.

Сформулируй учебную инструкцию для дешёвой модели: что именно она сделала 
не так и какому правилу ей надо следовать. Не решай документ сам.

Результат: Модель выдаст короткую учебную инструкцию с диагнозом: какое поле перепутано и на каком признаке документа это видно. Дальше вы отдаёте эту инструкцию и документ дорогой модели (роль Teacher), сверяете её ответ с эталоном и складываете проверенные записи для Synthesizer. После 10–15 таких записей получается Primer: список правил разбора УПД с примерами. Его вы вставляете в системный промпт дешёвой модели и проверяете на документах, которых не было в обучении.

🧠

Почему это работает

Слабость. Общие подсказки («проверь ИНН, будь внимателен») не знают, где именно эта модель ошибается. Если сильную модель просто попросить написать инструкцию, она сочинит советы «вообще». Модель, которой показали только правильные ответы, не понимает, чем её ход мыслей отличался.

Сильная сторона. LLM хорошо следует текстовым правилам и приёмам, если они конкретны и подкреплены разбором. Сильная модель умеет объяснить, чем ошибочный путь отличается от правильного. Проверка на эталоне отсекает красивые, но неверные объяснения.

Как метод это использует. Учебник растёт только из реальных провалов: берутся задачи, где сильная права, а слабая нет. Урок попадает в текст, только если демонстрация прошла проверку. Новая версия принимается, только если не ухудшила результат на тех же задачах. Так в Primer остаётся то, что реально закрывает разрыв.

Рычаги: - Размер пакета (в статье 16) → меньше пакет: чаще обновления и дешевле проверка, но шумнее решение «принять/отклонить». - Критерий шлюза («не хуже») → ужесточите до «строго лучше», если Primer раздувается. - Роли → Prompter и Synthesizer можно дать той же сильной модели. В статье так и сделано, Teacher, Prompter и Synthesizer — одна модель. - Набор задач → чем разнообразнее типы ошибок, тем шире Primer. Но он длиннее, а значит дороже в токенах. - Тестовые задачи → держите отдельно, иначе измерите зубрёжку, а не обучение.

📋

Шаблон промпта

В статье у каждой роли свой общий системный промпт без привязки к задаче. Конкретные тексты лежат в Приложении A.3, в предоставленном фрагменте их нет. Ниже реконструкция по описанию ролей, с сохранением логики и структуры.


Ты решаешь задачи типа: {тип_задач}.
Перед решением внимательно прочитай учебник ниже и следуй его правилам.

{текущий_Primer}

Задача: {задача}
Дай ответ в формате: {формат_ответа}



Ты — Prompter. Тебе дают задачу, ответ ученика и результат проверки.
1. Определи, в чём конкретно ошибся ученик.
2. Сформулируй учебную инструкцию: какое правило или приём ему не хватило.
3. Не решай задачу сам. Только диагноз и инструкция.
Задача: {задача}
Ответ ученика: {ответ_ученика}
Результат проверки: {отзыв_проверки}



Ты — Teacher. Реши задачу, следуя учебной инструкции.
Покажи ход решения и итоговый ответ в формате {формат_ответа}.
Задача: {задача}
Инструкция: {учебная_инструкция}

(Проверь ответ Teacher по эталону. Не прошёл — запись не используем.)


Ты — Synthesizer. Есть текущий учебник и новые проверенные записи.
Каждая запись: задача, ошибка ученика, инструкция, верное решение.
1. Извлеки из записей общие правила и приёмы, а не частные ответы.
2. Влей их в учебник: объедини повторы, убери противоречия, сохрани то, что уже работало.
3. Верни полный обновлённый учебник.
{текущий_Primer}
{проверенные_записи}



Прогони Student на том же пакете задач дважды: с текущим учебником и с кандидатом.
Считай верные ответы.
Если N_верных(кандидат) >= N_верных(текущий) → принять кандидата.
Иначе → оставить текущий.

Что подставлять: {тип_задач} — ваш рабочий тип задач с проверяемым ответом. {задача} — один пример. {отзыв_проверки} — что именно не совпало с эталоном. {текущий_Primer} — на старте пустой или короткая вводная.

🚀 Быстрый старт — вставь в чат:

Вот шаблон UTT (Universal Textual Teaching). Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

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

⚠️

Ограничения

⚠️ Нужна проверка с однозначным ответом. Метод держится на сверке с эталоном: она решает, верна ли демонстрация Teacher и принимать ли кандидата. В статье это математика с готовыми ответами и GPU-код, который запускают и измеряют. Для текстов в духе «хороший пост» или «убедительное письмо» такой проверки нет.

⚠️ Нужен набор задач. Бюджет в статье — 100 и 200 примеров на задачу, плюс отдельные тестовые. Без размеченных кейсов цикл не запустить, а ручной прогон 10–15 примеров даёт слабый, неустойчивый Primer.

⚠️ Teacher должен решать лучше Student. Обучающие задачи — только те, где сильная модель права, а слабая нет. Если Teacher не справляется, урок брать неоткуда.

⚠️ Побочный вред возможен. На части задач, которые слабая модель и так решала, точность после Primer упала. В математике у двух из трёх конфигураций заметное падение, в статье называют 9,2 и 14 пунктов, остальной текст обрезан. В коде такого не было. Всегда проверяйте Primer на задачах, которые модель решала и без него.

⚠️ Перенос неравномерный. Primer, созданный для одной модели, на другой обычно работал, но не одинаково. На математике Primer, написанный под Qwen, дал Flash заметно меньший прирост, чем собственный Primer Flash. На быстродействии кода перенос с Opus на Qwen был слабее. Для важной задачи проверяйте Primer на целевой модели.

⚠️ Широта проверки узкая, исходный уровень низкий. Статья проверила только математику и GPU-код. Начальная точность там была очень низкой (около 9% на коде), а у такой отправной точки прирост всегда сильнее. Не рассчитывайте на +40 пунктов, если ваша модель уже решает 80% задач.

⚠️ Контекст и цена. Primer — это длинный текст на каждом запросе. Он ест токены и место в контексте.

🔍

Как исследовали

Идея была простой: вместо дообучения слабой модели написать ей учебник. Взяли две трудные задачи: олимпиадную математику (Omni-MATH-2) и генерацию GPU-ядер (KernelBench), где код запускают и меряют корректность и скорость. Собрали три пары «учитель → ученик»: DeepSeek Pro → Flash, Pro → Qwen3.6-27B и Claude Opus → Flash. Все задачи прогнали у обеих моделей и разбили на подмножества: где учитель сильнее (из них учебные и тестовые), где слабая и так решала, где не справились обе. Учебник строили только на обучающей части, остальное оставили для чистой проверки.

Результаты в таблице: на KernelBench точность Flash с Primer выросла с 9,4% до 48,6%, быстрые решения (Fast1) с 9% до 35%, на математике с 27,6% до 51,7%. Сравнили с one-shot, few-shot, суммой от учителя, автооптимизаторами промптов (APE, MIPROv2, GEPA) и методами с дообучением (SeqKD, Fine-tune-CoT, RSR, LUFFY). По авторам, UTT их превосходит, но цифры в доступном фрагменте обрезаны.

Самое удивительное: Primer, созданный для Flash, подняли в Qwen, который в его создании не участвовал, и точность там выросла на 32 пункта. Примерно так же сработал Primer, созданный Opus, на Qwen (51,0% на коде и 65,8% на математике). Главный вывод для практики: текстовые уроки, добытые на ошибках одной модели, часто обобщаются на другую. А на задачах, которые слабая модель решала и так, на коде точность не просела, а выросла.

💡

Адаптации и экстраполяции

Это мои переносы идеи. Авторы их не проверяли.

💡 Адаптация для файла инструкций агента: вместо Primer для чат-модели собираем правила для CLAUDE.md или AGENTS.md. Агент выполняет 10–20 типовых задач, на провалах сильная модель (или вы) разбирает, какое правило ему не хватило, Synthesizer сводит их в файл. Шлюз: перед принятием правил прогоните агента на тех же задачах.

Ты — Synthesizer. Вот текущий CLAUDE.md и разбор {N} провалов агента 
(задача, что агент сделал не так, что надо было сделать).
Выведи общие правила, объедини повторы, убери противоречия. 
Верни обновлённый CLAUDE.md не длиннее {лимит} строк.

🔧 Техника: шлюз как отдельный приём → защита от «раздувания» инструкций. Любую правку системного промпта принимайте, только если на фиксированном наборе из 10–20 кейсов результат не хуже прежнего. Это работает и без остальных ролей.

Вот два варианта системного промпта: A (текущий) и B (с новыми правилами). Прогони оба на этих 15 кейсах и посчитай, сколько ответов совпало с эталоном. Если B не хуже A — оставь B, иначе A.

🔗

Ресурсы

  • Universal Textual Teaching for LLMs — Zhanyi Lu, Huan Wang, Westlake University
  • Страница проекта: https://alexlu99.github.io/UTT/
  • Бенчмарки: KernelBench (Ouyang et al., 2025), Omni-MATH-2 (Ballon et al., 2026)
  • Связанные методы: APE, ProTeGi, OPRO, MIPROv2, TextGrad, GEPA, Dynamic Cheatsheet, ExpeL, AutoManual, SkillX

📋 Дайджест исследования

Ключевая суть

Проблема: общий промпт «будь внимателен, рассуждай по шагам» почти не помогает дешёвой модели, потому что он не знает, где именно она ошибается. Метод UTT позволяет собрать для слабой модели готовый учебник правил (в статье он называется Primer) и просто положить его в контекст, без дообучения. Фишка: учебник растёт только из задач, которые сильная модель решила, а слабая провалила. Сильная модель разбирает каждую ошибку, третья роль сводит разборы в один текст, а каждое дополнение проходит шлюз: стало хуже на тех же задачах — выкидываем. Статья показывает прирост порядка 40 пунктов на коде при стартовых 9%. Учебник, написанный для одной модели, заработал и на другой.

Принцип работы

Цикл как конвейер на заводе: у каждой роли своя работа, а не всё разом. 1. Ученик (слабая модель) решает задачу. Верно — идём дальше. 2. Составитель (Prompter) смотрит на ошибку и пишет короткий диагноз: какого правила не хватило. 3. Учитель (сильная модель) решает задачу по этому диагнозу. Ответ не совпал с эталоном — запись летит в мусор. 4. Сводчик (Synthesizer) вливает проверенные записи в учебник. 5. Шлюз: Ученик с новым учебником решает тот же пакет из 16 задач. Не хуже прежнего — принимаем. Учебник пишется по следам реальных провалов, а не по догадкам. Чем-то похоже на репетитора: он не читает лекцию обо всём, а разбирает твою контрольную с красными галочками.

Почему работает

Сильная модель, которую просто просят «напиши инструкцию», гадает и выдаёт советы «вообще». Модель, которой показали только правильные ответы, не понимает, чем её ход мыслей отличался. Разбор ошибки закрывает именно эту дыру: видно, где свернула не туда и по какому признаку это было заметно. Две проверки по эталону отсекают красивые, но неверные объяснения: сначала решение Учителя, потом весь учебник целиком. LLM хорошо следует конкретным текстовым правилам, если они подкреплены разбором. Теперь честно про минусы. В математике у двух из трёх конфигураций точность на уже решаемых задачах упала на 9,2 и 14 пунктов. Старт был низкий, а у низкой точки прирост всегда выглядит эффектнее. Если ваша модель уже решает 80% задач, до +40 вам далеко.

Когда применять

Извлечение данных, математика, код → задачи с однозначным ответом, где дешёвая модель стабильно путает одно и то же, а дорогая справляется. Нужны минимум 10–15 размеченных примеров для пробы и 100–200 для нормального цикла, плюс отдельные тестовые задачи. НЕ подходит для «хороший пост» и «убедительное письмо»: нет эталона, шлюз и отбор записей не работают. НЕ подходит, если сильная модель сама не решает задачу: урок брать неоткуда.

Мини-рецепт

1. Собери полигон: 40–200 задач с проверенными ответами. Прогони дешёвую и дорогую модель, оставь те, где дорогая права, а дешёвая нет.
2. Спрячь тест: отложи часть задач для финальной проверки. Иначе замеришь зубрёжку, а не обучение.
3. Разбери провал: дай дорогой модели задачу, ответ дешёвой и вердикт сверки. Попроси диагноз и правило, но не решение.
4. Проверь Учителя: пусть дорогая модель решит задачу по этому диагнозу. Ответ не совпал с эталоном — выбрасывай запись без жалости.
5. Слей в учебник: каждые 10–16 проверенных записей отдавай Сводчику вместе с текущим учебником. Просишь общие правила, а не частные ответы.
6. Поставь шлюз: прогони дешёвую модель на том же пакете с новым и со старым учебником. Новый не хуже — берём. Учебник пухнет — ужесточи до «строго лучше».
7. Вставь и проверь: положи учебник в системный промпт. Прогони тестовые задачи и отдельно те, что модель решала и без него, чтобы поймать побочный вред.
8. Меняешь модель? Проверь учебник на новой. Перенос работает, но неравномерно.

Примеры

[ПЛОХО] Задача: дешёвая модель разбирает сканы УПД (универсальных передаточных документов) и путает ИНН поставщика с ИНН посредника. : Ты внимательный бухгалтер. Проверяй ИНН и ставку НДС, рассуждай по шагам.
[ХОРОШО] : шаг Составителя, чат с дорогой моделью: Ты — Prompter. Документ: УПД №412, поставщик ООО «Ромашка» (ИНН 7701234567), посредник ИП Сидоров (ИНН 770987654321), две позиции: НДС 20% и НДС 10%. Ответ дешёвой модели: ИНН 770987654321, НДС 20%. Результат сверки: ИНН неверный (взят посредник), вторая ставка пропущена. Сформулируй учебную инструкцию: что она сделала не так и какому правилу следовать. Сам документ не решай. После 10–15 таких разборов в учебнике появляются правила вроде: 1) ИНН берём из блока «Продавец», а не из строки «Посредник». 2) Если в документе несколько ставок НДС, выписываем каждую отдельно. 3) «НДС 20/120» — это расчётная ставка, а не 20%. Такой учебник вставляют в системный промпт дешёвой модели и проверяют на документах, которых не было в обучении.
Источник: Universal Textual Teaching for LLMs
ArXiv ID: 2610.12114 | Сгенерировано: 2026-10-09 06:00

Проблемы LLM

ПроблемаСутьКак обойти
Общие советы в промпте почти не помогают слабой моделиПишешь "будь внимателен, проверяй по шагам". Или просишь сильную модель написать инструкцию для слабой. Получаются советы "вообще". Они не знают, где именно эта модель ошибается. Слабая модель продолжает путать те же вещи. Одни правильные ответы тоже не объясняют ей, чем её ход мыслей был невернымСтрой инструкцию из реальных провалов. Прогони слабую модель на задачах с известным ответом. Возьми только те, где она ошиблась, а сильная решила. Пусть сильная модель объяснит разрыв: что перепутано и по какому признаку это видно. Из этих объяснений собери правила (см. метод ниже)

Методы

МетодСуть
Учебник из ошибок слабой модели — точечные правила вместо общих советовЧто делать. Нужны задачи с проверяемым ответом и две модели: слабая и сильная. 1) Слабая решает пакет задач (например, 16). 2) На каждую ошибку сильная модель получает задачу, ответ слабой и результат сверки с эталоном. Она пишет диагноз и правило. Саму задачу она не решает. 3) Сильная модель решает задачу по этому правилу. Ответ сверяют с эталоном. Не совпал — запись выбрасывают. 4) Сильная модель вливает проверенные записи в общий текст-учебник: объединяет повторы, убирает противоречия, оставляет общие правила вместо частных ответов. 5) Шлюз. Слабая модель решает тот же пакет дважды: со старым учебником и с новым. Новый хуже — не принимай. 6) Готовый учебник вставь в контекст слабой модели. Веса не трогаешь, дообучение не нужно. Почему работает. Текст строится только из ошибок, которые модель реально делает. Проверка отсекает красивые, но неверные объяснения. Шлюз не даёт учебнику накопить вредные правила. Рычаги. Хочешь короче учебник — требуй "строго лучше" вместо "не хуже". Пакет меньше — дешевле проверка, но решение "принять/отклонить" шумнее. Роли диагноста, учителя и сводщика может играть одна сильная модель. Когда да. Есть однозначная проверка: извлечение полей, код, математика, классификация. Есть хотя бы десятки размеченных задач. Сильная модель реально решает лучше слабой. Когда нет. Качество субъективное ("хороший текст", "убедительное письмо"). Размеченных примеров почти нет. Модель и так решает около 80% задач, прирост будет небольшим. Цена. Учебник идёт в каждый запрос, ест токены и место в контексте. Держи отдельные тестовые задачи, которых нет в обучении. Иначе измеришь зубрёжку
📖 Простыми словами

Universal Textual Teaching forLLMs

arXiv: 2610.12114

Дешёвые нейронки тупят не потому, что они безнадёжны, а потому что стандартные промпты для них — белый шум. Подход UTT (Universal Textual Teaching) заставляет умную модель наблюдать, где именно лажает глупая, и писать под неё персональную методичку. Веса модели не трогают вообще: в контекст слабой LLM просто скармливают текстовый учебник (Primer), заточенный строго под её косяки. Это не абстрактная инструкция «будь внимателен», а жесткий разбор полётов на живых примерах.

Это как нанять стажёра и вместо унылой корпоративной методички выдать ему список его же прошлых факапов. Стажёр путает ИНН поставщика с посредником, сеньор даёт ему по рукам и показывает, как надо, а редактор заносит этот опыт в единый гайд по выживанию. Стажёр не поумнел чудесным образом, но перестал наступать на грабли, потому что шпаргалка бьёт точно в цель, а не рассуждает об успехе вообще.

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

В примере гоняли разбор бухгалтерских УПД для маркетплейсов, где дешёвая сетка путала ставки НДС, но принцип универсален. Метод отлично ляжет на классификацию тикетов поддержки, парсинг кривых договоров или фильтрацию лидов. Везде, где топовая модель стоит космос, а дешёвая стабильно лажает в мелочах, связка UTT превращает копеечную LLM в стабильный рабочий инструмент.

Короче: хватит сливать бюджеты на дообучение весов или вручную шаманить над промптами по наитию. Заставь сильную модель учить слабую на реальных ошибках и выкидывай бесполезные советы. Ты получаешь качество флагманской сетки по цене копеечных запросов. Кто внедрит этот пайплайн первым — срежет расходы на LLM в разы, пока конкуренты тупо сливают деньги на API топовых моделей.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с