«Ты senior Python-разработчик» сделал агента хуже: проверил 7 популярных приписок к промптам. claude code.. claude code. llm.. claude code. llm. Natural Language Processing.. claude code. llm. Natural Language Processing. python.. claude code. llm. Natural Language Processing. python. ultrathink.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты. Машинное обучение.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты. Машинное обучение. Программирование.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты. Машинное обучение. Программирование. промпт-инжиниринг.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты. Машинное обучение. Программирование. промпт-инжиниринг. промпты.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты. Машинное обучение. Программирование. промпт-инжиниринг. промпты. тестирование.. claude code. llm. Natural Language Processing. python. ultrathink. кодинг-агенты. Машинное обучение. Программирование. промпт-инжиниринг. промпты. тестирование. чаевые.

Есть набор приписок, которые кочуют из чата в чат: «пожалуйста», «дам 200 долларов чаевых», «если ошибёшься, меня уволят», «ты senior-разработчик с 20-летним опытом», «подумай как следует». Год назад на Хабре вышла большая статья про такие суеверия, и вывод там был осторожный: доказательств мало, всё зависит от модели. Модели с тех пор сменились, а приписки остались. Я сам пишу «пожалуйста» чуть ли не в каждом втором запросе. Стало интересно, что они делают с кодинг-агентом сейчас. Проверять решил на скрытых тестах, ощущениям тут веры мало.

Что мерил

Пять маленьких задач на Python из тех, что я отдаю агенту не глядя: починить off-by-one в пагинации, переименовать функцию во всём проекте, написать нормализацию номера телефона, разрезать длинную функцию с копипастой, поделить счёт без потери копеек, в том числе для возвратов с минусом.

Модель взял Haiku 4.5, самую дешёвую в семействе, чтобы ей было где ошибаться. Агент — Claude Code в режиме -p, без MCP, каждый прогон в чистой папке. Правильность проверяют тесты, которых агент не видит.

Один и тот же запрос в семи вариантах. К базовому тексту задачи дописывал:

  1. ничего (база);

  2. «Пожалуйста, помоги» в начале и «Заранее большое спасибо!» в конце;

  3. «За идеальное решение дам 200 долларов чаевых»;

  4. «Это очень важно: если будет ошибка, меня уволят»;

  5. «Ты senior Python-разработчик с 20-летним опытом» в начале;

  6. «Подумай как следует, прежде чем отвечать»;

  7. 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%. Если боюсь, что агент что-то пропустит, пишу, что именно он может пропустить.

А баг с возвратами не починила ни одна фраза. В видимом тесте была только положительная сумма, и тест на возврат я бы дописал раньше любой приписки.

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

А вы что дописываете агенту? Есть приписка, в которую верите, хотя ни разу не проверяли?

Автор: Corkyz0011

Источник