Материал Девять замеров промптинга и кластера агентов: где приём даёт +48 пунктов, а где различить нельзя
0%

Девять замеров промптинга и кластера агентов: где приём даёт +48 пунктов, а где различить нельзя

Девять замеров промптинга и кластера агентов: где приём даёт +48 пунктов, а где различить нельзя

Про промптинг написано много, и почти всё написано одинаково: приём, красивый пример, вывод «работает». Чего в таких статьях обычно нет — числа, при котором приём перестаёт работать, и признания, что на каком-то материале он не сработал вовсе.

У нас девять замеров подряд. Не один — девять, и они спорят друг с другом. На одном материале лучший приём даёт +48 пунктов, на другом семь приёмов из восьми проигрывают обычному вопросу, на третьем мы честно не смогли различить ничего. Ниже — все девять: что спрашивали, как мерили, что вышло и чего этот ответ не говорит.

Отдельный раздел — «Чего мы не мерили». Он обязателен, и он не отговорка: из него видно, где кончается наше знание. Например, вопрос «стоит ли писать компоненты моделью» мы не мерили ни разу, и в статье об этом будет сказано прямо, а не заполнено рассуждением.

Пять ответов сразу

вопрос ответ откуда
Есть ли вообще разница между вариантами промпта? Есть, и крупная — но только там, где ответ надо вывести. На арифметике +28,8 пункта, на свежепорождённых задачах +48,0. На вопросах с вариантами ответа — ноль. замер 9
Как ориентироваться на тесты? У нас есть материал, где ответ проверяется прогоном тестов (HumanEval). Там ни один приём не поднялся выше обычного вопроса, а худший потерял 14,4 пункта. замер 9
Что даёт кластер агентов и подробный бриф? Ни один из пяти заходов не показал прибавки. Три кончились «различить нельзя», один не доведён, один показал прибавку, которая исчезает при правильной мере. замеры 1, 2, 3, 5, 7
Что даёт Digit как площадка? Устройство собирается и границы записи держат файловые инструменты — но не терминал. Прибавки от трёхуровневого кластера мы не показали. замеры 5, 7
Писать компоненты моделью — стоит? Не мерили. Ни один из девяти замеров этого вопроса не задавал.

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

Что мы спрашивали

Вопросов у нас было три, и они возвращались снова и снова, потому что первые ответы нас не устраивали.

  1. Меняет ли что-нибудь то, как написан промпт? Промпт — это текст, который вы отправляете модели. Восемь известных приёмов против baseline: обычного промпта, где стоит только вопрос и никаких инструкций.
  2. Покупает ли что-нибудь устройство работы агентов? Подробный бриф против короткого; кластер (надагент раздаёт работу ведущим, ведущие — рабочим) против одного агента, который делает всё подряд.
  3. Сколько это стоит? В вызовах, в токенах, в часах и — там, где мы платили деньгами, — в долларах.

Все девять замеров — это эти три вопроса на разном материале. Каталоги у нас называются measuremeasure9, и дальше по тексту они идут как «замер 1» … «замер 9» в том же порядке.

Девять замеров одним экраном

замер что спрашивали на чём мерили что вышло
1 даёт ли подробный бриф лучший результат, чем короткая формулировка той же задачи 3 задачи в живом коде, 6 прогонов агентов, слепой судья различить не удалось: направление разницы непостоянно (1/2, 2/1, 2/2 дефекта)
2 даёт ли подробный бриф прибавку в ответах о задаче 12 ячеек работы, 4 модели, 2496 разборов прибавки нет ни на одной модели по заглавной мере
3 даёт ли кластерное устройство работы измеримую прибавку 6 задач-долгов в живом коде, две группы по два повтора различить нельзя: обе группы взяли 12 из 12; заявленная форма кластера не собралась
4 различаются ли приёмы промптинга между собой те же 12 ячеек, 4 модели, 11 808 вызовов ни на одной модели ни один приём не выиграл у обычного вопроса
5 покупает ли трёхуровневый кластер что-нибудь на Digit не доведён: остановлен собственным заранее объявленным правилом
6 держатся ли приёмы на большом банке вопросов 120 задач об истории репозиториев, 4 модели + Claude Code, 12 240 вызовов семь приёмов из восьми проиграли обычному вопросу
7 что даёт каждый уровень устройства работы и мастер-промпт 12 задач, две полных сетки по девять ячеек различить нельзя: пол — 0 зелёных проверок из 12 во всех девяти ячейках
8 ломается ли картина замера 6 на моделях 30B+ те же задачи, лестница моделей от 0,87 до 27 миллиардов параметров не ломается; а то, что меняется с размером, меняется не в ту сторону: порог вверх пройден только на самой малой ступени
9 работают ли приёмы там, где есть что выводить 90 задач четырёх видов, 9900 вызовов работают: +28,8 и +48,0 пункта; на коде вредят

Замеры 1, 3, 5, 7 — про агентов и устройство работы. Замеры 2, 4, 6, 8, 9 — про текст промпта. Замер 9 — единственный, где ответ вышел уверенно положительным, и дальше видно, почему: он единственный, где материал состоял из задач, у которых есть внутренний вывод.

Как мы мерили

Одна оснастка на все девять замеров, и её стоит описать до чисел — иначе числа нечем взвесить.

План замера пишется до первого вызова и хешируется. Мы называем это предрегистрацией: гипотеза, материал, правило разбора, порог и — обязательно — фальсификаторы, то есть заранее объявленные исходы, при которых гипотеза считается опровергнутой. Любая последующая правка оформляется отдельной поправкой со своим хешем, а не переписыванием текста. Это защита не от злого умысла, а от себя: очень легко после чисел вспомнить, что «мы, конечно, и имели в виду вот эту меру».

Ответ проверяет машина, а не человек и не другая модель. Число, буква, прогон тестов, код возврата команды. Судья детерминирован и слеп: он получает только пару «вопрос — ответ», а к какой руке и к какой модели этот ответ относится, пришивается к результату после оценки.

Порог двойной. Разница засчитывается, только если выполнены оба условия: 95-процентный промежуток парной разницы не накрывает ноль и модуль разницы больше размаха между повторами одной и той же руки. Второе условие отсекает случай, когда разница меньше, чем шум между двумя прогонами одной и той же постановки. Если хоть одно условие не выполнено, мы пишем «различить нельзя» — и это не вежливый способ сказать «не сработало». Это третий исход, и он означает ровно то, что написано: этот замер этого не различает.

Считаются три числа, а не одно. Верных, «не знаю» (отказ) и уверенно неверных. Без колонки отказов любой вывод «приём X хуже» неверен — и ниже видно, почему это не педантизм, а главный источник ошибок в таких замерах.

Результат 1. Приёмы работают там, где есть что выводить

Это замер 9 — самый свежий и единственный с уверенно положительным ответом. 90 задач четырёх видов, 9900 вызовов, все ответы проверяет машина. Вариантов промпта пятнадцать: девять приёмов и шесть зеркал, у которых поменяна одна только фраза про формат ответа, — зачем они, видно в следующем разделе.

какие задачи baseline что сработало разница, пунктов
Арифметика — GSM8K: школьные задачи в несколько действий 41,6 % self-consistency +28,8
Свежие задачи — та же арифметика, но придуманная нашим генератором уже после того, как модели были обучены 44,0 % self-consistency +48,0
Эрудиция — MMLU: вопрос и четыре варианта ответа 55,2 % ничего не сработало все девять в пределах ±7
Код — HumanEval: «напиши функцию на Python», ответ проверяется прогоном тестов 53,6 % ничего; хуже всех tree of thoughts −14,4

Разница считается в процентных пунктах: baseline берёт 41,6 % задач, а self-consistency 70,4 % — это и есть +28,8 пункта.

Девять вариантов промпта, которые сравнивались:

  • baseline — только вопрос, никаких инструкций; с ним сравнивают остальные;
  • chain-of-thought — велеть модели рассуждать по шагам вслух, прежде чем назвать ответ;
  • self-consistency — задать один и тот же вопрос пять раз и взять ответ, который встретился чаще;
  • few-shot — положить в промпт три решённые задачи того же вида;
  • zero-shot RCTF — роль, контекст, задача, формат; решённых примеров нет;
  • tree of thoughts — попросить три варианта решения и выбрать лучший по объявленным критериям;
  • chain-of-verification — черновик, три проверочных вопроса к нему, правка;
  • полный бриф — наш формат: постановка задачи целиком, с ролью, известным, границами и тем, чем она опровергается;
  • мастер-промпт — наш сборный промпт: контекст вызова, полномочия, порядок рассуждения.

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

Вот baseline — строчка про вид задачи, текст задачи и больше ничего:

Задача на счёт в несколько шагов. Текст задачи — по-английски, как в источнике.

ВОПРОС
Leila buys 3 cucumbers from the market. Cucumbers are $2 each. Jack buys 5 tomatoes from the grocery store.  Tomatoes are $1 each. Chase buys 1 head of lettuce from the farmer’s market.  Lettuce cost $3 each. Together, how much did the three of them spend to make a salad for the potluck?

А вот победитель — self-consistency. Сам промпт при этом обычный chain-of-thought, а весь приём в том, что запрос повторяется пять раз и берётся самый частый ответ:

Задача на счёт в несколько шагов. Текст задачи — по-английски, как в источнике.

ПОСТАНОВКА
РОЛЬ. Ты счётчик. Тебе дают текстовую задачу, и ты доводишь расчёт до одного числа.

КОНТЕКСТ. Задача взята из открытого набора школьных задач. Ответ — целое число; калькулятора и выполнения кода у тебя нет, считай сам.

ЗАДАЧА. Реши заданную ниже задачу и назови число.

ФОРМАТ. Формат ответа предписан в конце запроса и обязателен.

ВОПРОС
Leila buys 3 cucumbers from the market. Cucumbers are $2 each. Jack buys 5 tomatoes from the grocery store.  Tomatoes are $1 each. Chase buys 1 head of lettuce from the farmer’s market.  Lettuce cost $3 each. Together, how much did the three of them spend to make a salad for the potluck?

ПОРЯДОК ОТВЕТА
Прежде чем отвечать, рассуждай по шагам и пиши рассуждение вслух:
1. назови, что именно спрашивают;
2. выпиши, что дано, — величины, условия, краевые случаи;
3. веди решение по шагам, каждый шаг отдельной строкой;
4. проверь полученное на том, что дано: сходится ли;
5. назови ответ.

ПОСЛЕДНЕЙ строкой ответа напиши ровно `ОТВЕТ: <число>`, где <число> — целое число без единиц измерения, знака валюты и разделителей разрядов.
Если не знаешь — `ОТВЕТ: НЕ ЗНАЮ`.

Копируйте и пробуйте: это не пересказ, а тот самый текст, который уходил в модель. Блок «ПОРЯДОК ОТВЕТА» и есть chain-of-thought. Если пять вызовов дорого, берите один: это будет чистый chain-of-thought, дословно тот же промпт без голосования. Он почти догоняет.

какие задачи baseline self-consistency chain-of-thought
Арифметика (GSM8K) 41,6 % +28,8 +23,2
Свежие задачи 44,0 % +48,0 +40,0
Эрудиция (MMLU) 55,2 % различить нельзя различить нельзя
Код (HumanEval) 53,6 % различить нельзя различить нельзя
Всё вместе 49,1 % +17,1 +10,9

Результат 2. Самая дорогая фраза в промпте — запрет думать

Самое дорогое, что можно дописать в конец промпта, — «Ответь ровно одной строкой. Ничего больше не пиши». Вот его цена при нулевом приёме: baseline против baseline, отличается ровно эта фраза.

какие задачи «ответь ровно одной строкой» «последней строкой ответа» разница
Всё вместе 32,2 49,1 −16,9
Арифметика 9,6 41,6 −32,0
Свежие задачи 6,7 44,0 −37,3
Код 48,0 53,6 −5,6
Эрудиция 54,4 55,2 −0,8

На арифметике это 32 пункта — больше, чем прибавляет любой приём замера. Там, где рассуждать не о чем (эрудиция — это выбор буквы из четырёх), фраза не стоит ничего: −0,8 пункта, порог не пройден.

Дальше страннее. Наложите этот запрет на все девять вариантов сразу — и они станут почти неразличимы: 31,8–38,9 % против 32,2 % у baseline. Пробивается только chain-of-thought: 24,8 % против 9,6 % на арифметике и 24,0 % против 6,7 % на свежих задачах. Модель ухитряется считать даже в одну строку. Но это в разы меньше, чем те же 64,8 % и 84,0 %, когда рассуждать разрешено.

И наоборот: baseline вообще без всяких требований к формату даёт 60,9 % против 49,1 % у него же под «последней строкой». Любое требование к формату что-то стоит — вопрос только сколько.

Это первое, что стоит унести из статьи. Если вы сравниваете два промпта, у которых требование к формату разное, вы меряете формат, а не приём. Разница между форматами больше, чем разница между всеми восемью приёмами.

Результат 3. Где приём вредит: код и право промолчать

На коде выше baseline не поднялся никто. Baseline — 53,6 %, tree of thoughts — 39,2 %, chain-of-thought — 44,0 %.

Причина видна в отказах — так мы называем случаи, когда модель ответила «не знаю». Baseline на коде молчит в 26,4 % случаев, зато выданное им проходит тесты в 72,8 %. Chain-of-thought молчит в 0,8 % — и его код проходит тесты в 44,4 %. Приём заставляет модель всегда что-нибудь выдать, и выданное чаще не работает. Там, где ответ проверяется прогоном тестов, а не сравнением с эталоном, это стоит дороже всего.

Результат 4. На вопросах-припоминаниях приёмы проигрывают

Замеры 4 и 6 брали другой материал: вопросы с готовыми вариантами об истории наших репозиториев — какой файл правил коммит, существует ли путь в дереве, каким коммитом файл появился впервые. Отвечающий не видит дерева: у него только заголовок коммита и список вариантов. То есть задача на припоминание факта, а не на вывод.

Замер 6: банк из 1238 задач, выборка 120, 15 типов вопроса, четыре открытые модели, 12 240 вызовов (11 520 через ollama плюс 720 отдельной лигой Claude Code). Случайное угадывание на этой выборке — 28,72 %.

рука верных, % разница с baseline промежуток разницы порог
baseline 37,6 опора
self-consistency 40,1 +2,5 [−2,4; 7,7] различить нельзя
chain-of-thought 30,0 −7,5 [−12,1; −2,9] вниз
мастер-промпт 26,3 −11,3 [−16,1; −6,4] вниз
tree of thoughts 25,9 −11,6 [−16,8; −6,5] вниз
полный бриф 19,2 −18,4 [−24,0; −12,7] вниз
chain-of-verification 18,7 −18,9 [−23,9; −13,7] вниз
few-shot 16,8 −20,8 [−26,2; −15,4] вниз
zero-shot RCTF 15,6 −22,0 [−27,1; −17,0] вниз

Семь приёмов из восьми значимо ниже обычного вопроса, выше — ни один. Замер 4 на том же роде материала (12 ячеек нашей же работы, четыре модели, 11 808 вызовов) дал то же: ни на одной из четырёх моделей ни один приём не выиграл у обычного вопроса.

Но читать это как «приёмы не работают» нельзя, и вот почему. Половина проигрыша — плата за честность: полный бриф и chain-of-verification прямо велят отвечать «не знаю», когда ответ не следует из данных, и отказываются в 46–56 % случаев, а доля верных считает отказ ошибкой. Вторая половина — свойство материала: вывести ответ не из чего, выводить нечего, и приём, который заставляет модель рассуждать, заставляет её рассуждать в пустоте.

Именно из-за этого и появился замер 9 с задачами, где есть что выводить. Предрегистрация замера 9 начинается с признания: «Постановка была неверна, и это признано».

Отдельная лига того же замера — Claude Code без инструментов, 45 задач. Baseline — 48,7 %, полный бриф — 28,2 % (−20,5, промежуток [−33,3; −7,7]), мастер-промпт — 35,9 % (−12,8, [−23,1; −2,6]). Оба наших собственных формата значимо ниже обычного вопроса. Механизм тот же: полный бриф даёт 31 отказ из 45, обычный вопрос — ноль.

Результат 5. Размер модели ничего не чинит

Возражение, которое мы получили после замера 6, звучало разумно: «замер остановился на 14 миллиардах параметров, а на моделях покрупнее картина поменяется». Замер 8 проверял ровно это: тот же материал, те же девять рук, лестница одного семейства от 0,87 до 27 миллиардов параметров — тридцать раз по размеру при одном рецепте обучения. Меняется ровно один признак.

ступень baseline, % лучшая рука её доля, % разница прошла порог вверх рук ниже baseline
0,87B 27,9 chain-of-thought 40,4 +12,5 self-consistency (+11,5) 0 из 8
2,3B 38,5 zero-shot RCTF 40,4 +1,9 нет 3 из 8
4,7B 48,1 tree of thoughts 42,3 −5,8 нет 5 из 8
9,7B 44,2 tree of thoughts 50,0 +5,8 нет 3 из 8
27B 46,2 self-consistency 55,8 +9,6 нет 4 из 8

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

На материале замера 9, где есть что выводить, то же самое видно с другой стороны:

размер модели baseline self-consistency разница
0,87B 16,1 40,6 +24,5
2,3B 28,9 72,2 +43,3
4,7B 87,8 87,8 0,0
9,7B 96,7 90,0 −6,7
27B 97,8 97,8 0,0

На младших моделях приём вытаскивает результат в два с половиной раза. На старших добавлять некуда: baseline и так берёт 98 из 100. Это не «на больших моделях приёмы бесполезны» — это «материал кончился раньше модели». Если вы работаете с крупной моделью на простых задачах, приём вам ничего не даст, и это не про приём.

Результат 6. Кластер агентов и подробный бриф: пять заходов, ни одной прибавки

Это вторая половина работы, и она отвечает на вопрос «а что даёт устройство работы агентов». Коротко: у нас оно не окупилось ни разу, но ни один из пяти заходов не даёт права сказать «кластер не помогает» — они говорят разное и по разным причинам.

Заход 1 (замер 1): подробный бриф против короткого на живом коде

Три задачи в настоящем форке оконного менеджера cwm, каждая делается дважды: один агент получает полный бриф (роль, известное с провенансом, соседи и границы записи, одна задача, фальсификатор, готовность как вывод команд), другой — ту же задачу одной-двумя фразами. Шесть прогонов, шесть клонов, шесть веток, слепой судья, который не знал ни о группах, ни о том, что идёт замер.

Все 12 критериев приёмки из 12 — «выполнен»: ни одного «не выполнен», ни одного «проверить не удалось». Первичная метрика — дефекты, найденные судьёй:

пара задач полный бриф короткий направление
перестановка окна в стопке 1 дефект 2 бриф лучше на 1
выключатель прыжка курсора 2 1 короткий лучше на 1
согласование групп с лентой 2 2 ничья

Порог был объявлен до прогона: разница засчитывается, только если её направление одинаково во всех трёх парах. Оно не одинаково. Исход — «различить не удалось», и это не то же самое, что «разницы нет».

Единственная метрика с одинаковым направлением — расход: короткий бриф оказался дороже во всех трёх парах (+21 %, +73 %, +39 % токенов). Но и это не победа брифа: дороже — потому что сделано больше. Разделить «дороже, потому что бриф хуже» и «дороже, потому что сделано больше» этот прогон не может.

Зато у брифа обнаружилось измеримое действие там, где его не искали — в границах. Файлов, изменённых за пределами объявленного набора: с полным брифом 1, 0 и 0; с коротким — 1, 3 и 12. В худшем случае ветка без границ вошла двенадцатью файлами за набор, из них семь — в чужой уже влитый стек, и переписала там числа правдоподобными. Полный бриф стоит не тем, что делает работу лучше, а тем, что удерживает исполнителя внутри его клетки.

И тут же довод против: раздел «известное: проверено, не переоткрывай» подавляет перепроверку. Неверный факт, попавший в такой раздел, разъехался с брифами по трём веткам сразу. Подробный бриф способен нести ошибку, которой короткий бриф нести не может. Одна из трёх пар вдобавок загрязнена: агент с коротким брифом читал дерево соседа, и ни один бриф этого не запрещал — запрет был только на запись. Пару пометили загрязнённой и не выбросили: выбрасывать наблюдение после того, как увидел его результат, — это подгонка.

Заход 2 (замер 2): тот же бриф, но спрашиваем модель о задаче

Двенадцать ячеек настоящей работы, пять типов вопроса о каждой, четыре открытые модели, пять повторов, 2496 разборов. Обе группы получают побайтно одинаковую подложку — опись дерева, восемь команд, список ресурсов; различается только блок постановки.

По заглавной мере (только вопросы, ответ на которые в самом брифе не лежит):

модель короткая постановка полный бриф разница промежуток
14B 69,4 % 71,7 % +2,2 [−9,4; +13,9]
3B 10,0 % 17,2 % +7,2 [−1,7; +17,2]
7B 50,6 % 48,3 % −2,2 [−12,2; +6,7]
4B 50,6 % 42,8 % −7,8 [−15,0; −1,1]

Ни на одной модели прибавка не показана. Единственный промежуток, не накрывающий ноль, смотрит против брифа — и гасится размахом повторов (8,3 пункта против разницы 7,8).

Если считать по всем вопросам подряд, на самой маленькой модели появляется прибавка +17,6 пункта [+8,5; +26,3] — и это ровно тот исход, который был заранее назван фальсификатором: выигрыш держится там, где ответ лежит в самом брифе, и исчезает там, где не лежит. Измерен пересказ, а не польза сверх него.

Что важно: бриф модель прочитала. Позиционный контроль (вопрос, ответ на который есть только в брифе) прошли все четыре модели с запасом: +66,7, +25,0, +66,7, +66,7 пункта. Отрицательный результат нельзя списать на «не читала».

Заход 3 (замер 3): кластер против одиночки

Шесть задач-долгов в живом дереве, каждая с машинной проверкой, красной до работы. Контроль — один агент получает все шесть карточек. Опыт — надагент, два ведущих, шесть рабочих по одной карточке.

Первая строка отчёта — дисквалификация: площадка дважды отказала ведущим в порождении рабочих. Дословно: Error: No such tool available: Agent. Agent is disabled for this session, in subagents as well as here. В первом повторе рабочих не было вовсе, во втором шестерых породил сам надагент. Заявленная форма кластера не собралась ни разу.

корзина одиночка «кластер»
зелёная проверка 12 из 12 12 из 12
красная, готово не объявлено 0 0
ложная сдача (объявил готово, проверка красная) 0 0
подделка 0 0

Обе группы у потолка — это второй заранее объявленный фальсификатор: замер не различает. Вердикт — «различить нельзя».

Уверенно из этого замера следует только цена: кластер оказался медленнее по часам (2,82×) и дороже по токенам (9,21×), то есть параллелизм здесь не окупился вовсе. С двумя оговорками, обе — из самого отчёта. Первая названа в нём прямо: часть этой цены куплена отказом площадки, ведущие тратили ходы на попытки породить рабочих, и «насколько именно — не измерено». Вторая нашлась при сверке: раздел «форма кластера» сообщает, что в первом повторе работали три агента, а в счёт цены того же повтора попало семь. Число 9,2× завышено на неизвестную величину, и цитировать его как измеренное нельзя.

Заход 4 (замер 5): вопрос, который мы не довели

Замер 5 задавал самый прямой вопрос: покупает ли трёхуровневый кластер что-нибудь на Digit — нашей собственной агентской площадке, где вложенные агенты разрешены. План был написан целиком: шесть карточек, две группы, три повтора, 36 наблюдений, слепой машинный судья, четыре корзины исходов, порог объявлен числом (зелёных у кластера больше на пять из восемнадцати).

Прогона не было. Ни харнесса, ни базовых замеров, ни единого запуска судьи. Замер остановился на собственном заранее объявленном правиле: если ведущий раздаёт работу рабочим реже, чем в половине случаев, вердикт о кластере выносить запрещено — потому что группа с неразделившим ведущим это не кластер, а тот же одиночка через лишний уровень. Зонд дал 2 из 4: дважды ведущий разделил задачу на двух рабочих, один раз отдал всё одному, один раз не делегировал вовсе. Ровно на границе.

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

Заход 5 (замер 7): что даёт каждый уровень

Замер 7 разложил устройство работы на признаки: одиночка, два уровня, три уровня; мастер-промпт на каждом из уровней по отдельности. Девять ячеек, две полные сетки, двенадцать задач, все красные до работы.

Результат — 0 зелёных из 12 во всех девяти ячейках обеих сеток. Ни одна конфигурация не починила ни одной задачи. Это пол: различать нечего.

Причина названа числом, и это самое полезное, что вышло из замера. Тот же материал, тот же судья, та же модель; меняется только число карточек в одном сеансе:

карточек в сеансе зелёных гейтов
1 1 зелёный из 5 повторов
2 1 из 5
6 0 из 3
12 (как в сетке) 0 из 18 ячейко-прогонов

То есть порога между «одной» и «двумя» нет: есть низкая доля успеха, которая на шести и двенадцати становится нулём. Модель, которой хватало на замер, не берётся за правку файла вовсе; модель, которая берётся, стоит слишком дорого по времени — единственный её зелёный гейт получен за 414 секунд при пределе в 900, а полная сетка на ней не помещалась в объявленный потолок в шесть часов. Ступень покрупнее в свободную память карты не помещается: 23,9 гигабайта против доступных 18,3.

Устройство при этом собирается: надагент порождает ведущих, ведущие — рабочих, доля разделения 0,50 в обеих сетках. Просто сравнивать нечего, когда обе группы на нуле.

И одна находка, которая, по словам самого отчёта, «дороже половины замера». Надагент вышел за свою границу записи живьём: границу держат файловые инструменты, а терминал — нет, и обычный echo в файл прошёл мимо неё. То есть заперты инструменты подагента, а не подагент.

Что об этом говорит наш собственный датасет

Кроме замеров у нас есть разметка настоящей кластерной работы: 44 ячейки, каждая — одна задача, отданная одному агенту, с брифом, ветками, воротами и исходом. Исходы четырёх видов: success 15, mixed 14, negative (проверка сработала против того, что задумал заказчик) 13, could-not-verify 2. Плюс шесть контролируемых прогонов — те самые три пары из захода 1.

Публиковать этот набор нельзя: материал происходит из приватных репозиториев, и прямой запрет записан в самом наборе. Но одно его число стоит здесь привести, потому что оно объясняет, зачем вообще понадобились контролируемые прогоны: стиль брифа не восстанавливается по историческим отчётам у 33 ячеек из 44. Только два ведущих написали в отчёте, по какому шаблону они писали брифы. На таком материале вопрос «помогает ли подробный бриф» не отвечается вовсе — сколько его ни разглядывай.

Результат 7. Сколько это стоит

Токен — кусок текста, которым модель меряет объём и по которому вам выставляют счёт.

Приём. Self-consistency — лучший приём замера 9, +17,1 пункта на всём материале. Он стоит пяти вызовов вместо одного и 1 646 559 токенов на выходе против 69 545 у baseline: в 23,7 раза больше. Один пункт доли верных обходится примерно в девяносто тысяч лишних токенов. На арифметике и на свежих задачах это окупается. На эрудиции и на коде — нет: там платить не за что.

Кластер. В замере 3 кластер стоил 2,82× по часам и 9,21× по токенам относительно одиночки — при одинаковом результате 12 из 12 у обеих групп. Обе кратности читать надо с оговорками из предыдущего раздела, но знак у них не спорный: параллелизм здесь не окупился.

Деньги. Единственное место, где мы платили не своей видеокартой, а деньгами, — отдельная ячейка замера 4, где испытуемым был Claude Code. Там померены все три валюты сразу.

рука вызовов токенов входа токенов выхода из них «думание» $ на задачу
baseline 1 1 844 1 966 1 496 0,0676
zero-shot RCTF 1 2 441 92 74 0,0267
self-consistency ×5 5 12 927 7 808 1 313 0,2262
chain-of-verification 3 8 984 2 284 992 0,1470
tree of thoughts 2 7 205 2 928 633 0,1453
все девять рук 16 50 627 17 927 5 215 0,8562

Здесь всё переворачивается. На локальных моделях требование к формату стоило качества; на крупной закрытой модели самая дорогая по выходу рука — обычный вопрос без всяких инструкций: 1 966 токенов выхода, из них 1 496 на внутреннее рассуждение. Zero-shot RCTF, который просит ответить коротко и по форме, дешевле в 21 раз. Контракт вывода на этой модели экономит деньги, а не тратит их.

И ещё одно число, полезное всякому, кто собирается мерить сам: три руки из девяти (self-consistency, chain-of-verification, tree of thoughts) съедают 60,6 % сметы и 71 % времени модели. Полный банк на тысяче задач в девять рук и три повтора — это 48 000 вызовов, около 2 569 долларов и 84 часа. Оценка этого получена за 0,17 % его цены: прогнали три задачи и посчитали.

Чего мы не мерили

Список честный, а не отговорка. Из него видно, где кончается наше знание.

  1. Писать компоненты моделью — не мерили ни разу. Ни один из девяти замеров не спрашивал, стоит ли поручать модели писать код приложения, и ни одно число отсюда на этот вопрос не отвечает. Чтобы ответить, нужен другой замер: задачи-компоненты с приёмочными тестами, написанными не автором решения; две группы — модель и человек, либо модель с приёмом и без; метрика — прохождение тестов и стоимость правки после первой сдачи. У нас такого замера нет.
  2. Работу агентов мы почти не мерили — мерили ответы о работе. Замеры 2, 4, 6, 8 и 9 меряют, что модель говорит о задаче, а не что она делает. Перенос вывода с «понимания» на «работу» запрещён их собственными предрегистрациями. Настоящую работу мерили только замеры 1, 3, 5 и 7 — и там либо «различить не удалось», либо «различить нельзя», либо прогона не было вовсе.
  3. Ни одного замера с включённым встроенным рассуждением. Режим think выключен нарочно во всех прогонах: приём измерялся в тексте промпта, а не в настройке. Про модели-рассуждатели у нас нет ничего.
  4. Приём не отделён от длины промпта. У полного брифа и мастер-промпта и токенов больше, и текста больше. Отдельного контроля «длинный, но бессодержательный промпт» мы не ставили, так что часть эффекта может быть просто объёмом.
  5. Качество кода не меряется. На HumanEval засчитывается прохождение тестов и только оно: ни читаемость, ни сложность, ни безопасность.
  6. Ни длинного контекста, ни работы с инструментами, ни диалога, ни задач на русском языке. Тексты задач английские, оснастка русская.
  7. Модели крупнее 27 миллиардов параметров не мерились вовсе, а те, что мерились, — одно семейство в четырёхбитном квантовании. Часть разброса между ступенями может объясняться квантованием, а не размером.
  8. Непрерывность работы кластера — половина навыка — не мерилась. Все задачи умещались в один сеанс; ни лимитов, ни передачи состояния следующему агенту.
  9. Изоляция подагента не доказана. Границы записи держат файловые инструменты и не держат терминал — это не предположение, а пойманный случай.
  10. Цена в деньгах измерена в одном месте из девяти. Везде остальное — токены и часы видеокарты; тариф не считался.
  11. Повторов мало везде. Два повтора у части ступеней, один у остальных, три пары в замере 1, один прогон на ячейку в замере 7. Разброс от прогона к прогону — самая большая дыра всех наших планов, и она не закрывается аккуратностью разбора.

Что из этого следует

Про промпт. Дайте модели считать вслух там, где надо считать: +23,2 пункта на арифметике за одну фразу. Не мешайте ей там, где надо писать код: на HumanEval ни один приём не поднялся выше обычного вопроса. И следите за требованием к формату — оно стоит дороже любого приёма и легко подменяет собой предмет сравнения.

Про агентов. Подробный бриф в наших замерах не купил качества ни разу, но дважды измеримо удержал исполнителя в границах — а в одном случае цена выхода за границы была семь чужих файлов в уже влитом стеке. Кластер не окупился ни разу. Если вы строите многоуровневое устройство работы, стоит сначала проверить самое скучное: доходит ли задача до рабочего вообще. У нас ведущий раздавал работу в половине случаев, и на этом остановился целый замер.

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

Проверить самому

Двенадцати тысяч вызовов для этого не нужно. Хватит пары десятков задач и получаса.

  1. Возьмите задачи, где ответ проверяет машина, а не вы: число, буква, прогон тестов. Иначе вы будете мерить своё настроение.
  2. Сделайте ровно два промпта на задачу — baseline и он же плюс «рассуждай по шагам». Последняя фраза про формат в обоих должна совпадать побайтно, иначе вы померите её, а не приём.
  3. Считайте три числа, а не одно: верных, «не знаю», уверенно неверных. Приём часто не делает модель правее — он убирает у неё право промолчать.
  4. Проверьте сначала оснастку, а не модель. Прогоните через свою проверку эталонные решения и заведомо негодные ответы. У нас на HumanEval это выглядит так: 25 эталонных решений из 25 проходят тесты за 0,2 секунды, а пустой ответ, проза и заглушка — не проходят все три. Проверка, которая не краснеет на заведомо негодном, ничего не проверяет.
  5. Прогоните дважды на одной и той же модели. Разброс между двумя прогонами и есть ваш порог: разница меньше него не значит ничего.
  6. Берите модель поменьше. На крупной задачи кончатся раньше модели, и вы увидите ноль там, где его нет.

Где наши отчёты спорят сами с собой

Девять замеров — это девять пачек таблиц, собранных скриптами в разное время, и часть их строк друг с другом не сходится. Мы не выбирали удобное число: ниже названы оба, и статья опирается на то, что подтверждается прогоном, а не на то, что красивее.

Одна оговорка напоследок: 2 сентября 2026 выводы этой статьи пересмотрены — прежний замер сравнивал приёмы с разными требованиями к формату ответа и потому мерил требование, а не приём; что именно было не так и какие числа стояли раньше — во врезке режима «Для разработчика».

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

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

Доска запросов
Дальше