«Ты senior Python-разработчик» сделал агента хуже: проверил 7 популярных приписок к промптам
Есть набор приписок, которые кочуют из чата в чат: «пожалуйста», «дам 200 долларов чаевых», «если ошибёшься, меня уволят», «ты senior-разработчик с 20-летним опытом», «подумай как следует». Год назад на Хабре вышла большая статья про такие суеверия, и вывод там был осторожный: доказательств мало, всё зависит от модели. Модели с тех пор сменились, а приписки остались. Я сам пишу «пожалуйста» чуть ли не в каждом втором запросе. Стало интересно, что они делают с кодинг-агентом сейчас. Проверять решил на скрытых тестах, ощущениям тут веры мало.
Что мерил
Пять маленьких задач на Python из тех, что я отдаю агенту не глядя: починить off-by-one в пагинации, переименовать функцию во всём проекте, написать нормализацию номера телефона, разрезать длинную функцию с копипастой, поделить счёт без потери копеек, в том числе для возвратов с минусом.
Модель взял Haiku 4.5, самую дешёвую в семействе, чтобы ей было где ошибаться. Агент — Claude Code в режиме -p, без MCP, каждый прогон в чистой папке. Правильность проверяют тесты, которых агент не видит.
Один и тот же запрос в семи вариантах. К базовому тексту задачи дописывал:
ничего (база);
«Пожалуйста, помоги» в начале и «Заранее большое спасибо!» в конце;
«За идеальное решение дам 200 долларов чаевых»;
«Это очень важно: если будет ошибка, меня уволят»;
«Ты senior Python-разработчик с 20-летним опытом» в начале;
«Подумай как следует, прежде чем отвечать»;
ultrathink— ключевое слово самого Claude Code. В нынешней версии оно не задаёт бюджет на размышления: клиент просто добавляет к запросу служебную фразу с просьбой рассуждать глубже.
Каждый вариант на каждой задаче прогнал по три раза. Быстро стало видно, что вся разница сидит в одной задаче, и её я догнал до восьми прогонов на вариант. Вместе с проверкой в конце вышло 156 прогонов.
Результат
Приписка | Переименование, из 8 | Остальные четыре задачи, из 12 | Выходных токенов к базе | Стоимость к базе |
|---|---|---|---|---|
Ничего | 3 | 9 | — | — |
«Пожалуйста» | 4 | 9 | +4% | +2% |
Чаевые | 6 | 9 | +47% | +19% |
«Меня уволят» | 7 | 9 | +12% | +6% |
«Ты senior» | 0 | 9 | +1% | −1% |
«Подумай как следует» | 7 | 9 | +36% | +2% |
ultrathink | 6 | 9 | +47% | +5% |
Токены и стоимость в таблице посчитаны по всем 20 прогонам варианта: 8 переименований и 12 остальных задач. Одинаковые прогоны заметно разбегаются по цене, так что разницу в стоимости до 10–15% я считаю шумом.
Три задачи из пяти все варианты решили всегда, 63 прогона из 63. Задачу с возвратами не решил никто, 0 из 21. Haiku каждый раз делает одно и то же: делит отрицательную сумму в лоб, и лишняя копейка уезжает последнему в списке, [-333, -333, -334] вместо [-334, -333, -333]. Ни чаевые, ни увольнение, ни «подумай» это не лечат. Формулировку для минуса можно читать двояко, но старшие модели в моём прошлом замере на этой же задаче читали её так, как ждёт тест.
Вся разница — в переименовании. Ловушка там простая: старое имя упоминается ещё и в README. В задаче прямо сказано: «старого имени нигде не должно остаться». Оговорюсь сразу: без приписок агент проваливал переименование 5 раз из 8, так что 0 из 8 у «сеньора» против 3 из 8 у базы ещё не доказательство. А вот 0 из 8 против 7 из 8 у «уволят» и «подумай» случайностью объяснить уже трудно.
Почему сеньор провалился 8 раз из 8
Я полез в логи агента. Получив «Ты senior Python-разработчик», он во всех восьми прогонах искал старое имя только в Python-файлах: Grep с фильтром по типу py или find по *.py. README он просто не видел. Отчитывался при этом уверенно, вот дословно: «Grep подтвердил, что старого имени нигде не осталось, и тесты проходят успешно».
Потом я посчитал по всем 56 прогонам этой задачи, сузил ли агент поиск до .py. С результатом это совпало в 55 случаях из 56: сузил — провалил, искал по всему проекту — справился. Остаётся вопрос, как часто каждая приписка толкает его сузить поиск:
«Ты senior Python»: 8 из 8;
без приписок: 5 из 8;
«пожалуйста»: 4 из 8;
чаевые: 2 из 8;
«меня уволят», «подумай как следует», ultrathink: по 1 из 8.
Похоже, роль просто усилила привычку, которая у агента и так есть: без приписок он сужал поиск в 5 прогонах из 8, с «Python-разработчиком» — во всех восьми. Что именно сработало, «senior» или «Python», я не разделял: роль без слова Python не проверял. «Важно» и «подумай» толкают в другую сторону: перед правкой агент осматривается шире.
Чаевые помогают, но обходятся дороже всех
С чаевыми переименование прошло 6 раз из 8, лучше базы. Зато выходных токенов стало на 47% больше, а счёт вырос на 19%, сильнее всех остальных. Правда, почти половину прибавки дал один затянувшийся прогон на 18 ходов: без него было бы +9%. Отчёты тоже распухли: медиана 524 символа против 348. Это сходится с давним наблюдением, что ChatGPT отвечает длиннее, если пообещать чаевые. Два отчёта по проваленным задачам начинались со слова «Идеально!».
«Подумай как следует» и ultrathink тоже раздувают вывод, на 36% и 47%, но счёт почти не трогают, +2% и +5%. Ходов у них не больше, чем у базы, 211 против 218, а у чаевых 242. Выходные токены в агенте — меньше пятой части счёта, около 68% уходит на повторное чтение контекста на каждом ходе. Поэтому лишние ходы стоят дороже лишних слов.
Проверка: просто написать, что нужно
Раз всё решает то, где агент ищет, логично сказать ему это прямо. Дописал к задаче «включая README и другие не-.py файлы»: 8 из 8. Понятно, что это почти подсказка, я-то знал, где ловушка. Проверял я другое: перебьёт ли явное требование роль. С «Ты senior Python-разработчик» в начале плюс та же приписка — тоже 8 из 8. Когда требование сформулировано явно, роль перестаёт мешать. По стоимости это на уровне базы.
Что я из этого вынес
Приписки на агента действуют, но в моём замере только на одной задаче из пяти: на остальных четырёх они не изменили ни одного прогона. Там, где действуют, они меняют то, где агент ищет. Куда сдвинется поиск, заранее не угадать: «важно» его расширило, «Python-разработчик» сузил.
Роль «ты senior Python-разработчик» я из своих шаблонов убрал. Чаевые помогают, но «подумай как следует» дал тот же эффект почти бесплатно, а с чаевыми счёт растёт на 10–20%. Если боюсь, что агент что-то пропустит, пишу, что именно он может пропустить.
А баг с возвратами не починила ни одна фраза. В видимом тесте была только положительная сумма, и тест на возврат я бы дописал раньше любой приписки.
Честно об ограничениях: одна модель, пять маленьких задач, от трёх до восьми прогонов на ячейку. На старших моделях картина может быть другой, это отдельный замер.
А вы что дописываете агенту? Есть приписка, в которую верите, хотя ни разу не проверяли?
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.