В апреле 2025 кто-то в X вслух прикинул, сколько электричества OpenAI жжёт на том, что люди говорят моделям “пожалуйста” и “спасибо”. Сэм Альтман ответил на следующий день: десятки миллионов долларов, потраченных не зря, мало ли что. Это была шутка, никакого расчёта никто не публиковал. Я всё равно принял это за цифру из бюджета, открыл шаблоны промптов в своих инструментах и вычистил оттуда все please и thank you. Ушёл вечер. Про счёт мне после этого думалось приятнее.
Сколько я сэкономил, я так и не проверил. У числа, на которое я среагировал, нигде рядом не было знаменателя. Мой собственный месячный итог гуляет сильнее, чем на ошибку округления, стоит одному прогону агента пойти плохо, поэтому экономия больше года оставалась ощущением. На этой неделе я посадил её на стенд. Число, с которым я оттуда вышел, оказалось не тем, за которым я шёл.
Стенд
5 обёрток вокруг задачи, причём текст самой задачи внутри них совпадает посимвольно. Голая обёртка bare это просто задача. please ставит перед ней Please help me with this. и Thank you. после. Длинная дружелюбная рамка warm начинается с Hello! I hope you are having a good day. и заканчивается благодарностью. Резкая rude это Do this now. спереди и Just the answer. Do not waste my time. сзади.
filler это контроль, который мне тут дороже всего. Та же длина в токенах, что у warm. Ни одного социального слова: Record 44 of the batch. The batch was compiled on a Tuesday morning. <задача> The batch identifier is QF-2231 and it carries no meaning for it. Если warm что-то двигает, а filler не двигает, значит это работает вежливость. Если двигают оба, значит всё, что я построил, это просто промпт подлиннее. Контроль я собрал первым, потому что в двух работах, которые я нашёл, его нет. Инь с соавторами (arXiv 2402.14531) прогнали 8 уровней вежливости на английском, китайском и японском и пишут, что грубые промпты работают хуже, а лишняя вежливость не даёт ничего. Добария и Кумар (arXiv 2510.04950) получили 84.8 процента у очень грубого против 80.8 у очень вежливого на GPT-4o. Ни там ни там длина промпта не зафиксирована.
Задачи: 40 штук из тестовой части GSM8K и 12 открытых вопросов без требований к формату. Середину шкалы держат 30 умножений 5 знаков на 3 и 30 умножений 4 на 4, потому что GSM8K слишком лёгок, чтобы на большой модели увидеть ущерб. Каждая задача прошла 5 раз под каждой обёрткой на обеих моделях. Открытые вопросы прошли по 4 раза, отсюда счёт вида 200 вызовов и 48 ответов.
Claude Code 2.1.235, модели claude-haiku-4-5 и claude-sonnet-5, режим размышления выключен, инструменты выключены, MCP пустой. Офлайновый счёт токенов снят через tiktoken 0.14.0 и transformers 5.16.1 на Python 3.12.3. Каждый вызов уходил из пустой папки в /tmp, над которой нигде нет CLAUDE.md. Это придирчивость, но с причиной: CLI читает инструкции из рабочей папки и не сообщает об этом. Один мой прошлый замер тихо испортил мой же файл с правилами письма, который объяснял модели, как писать.
Цены сняты со страницы Anthropic 14 сентября 2026. У haiku это 1 доллар за вход и 5 за выход на миллион токенов, у sonnet 5 это 2 и 10. У меня по памяти было записано 3 и 15. Это цена предыдущего поколения. Из-за неё все долларовые числа sonnet в первом черновике стояли на 50 процентов выше.
Выключенные инструменты важны ещё по одной причине. При наборе инструментов по умолчанию преамбула одного вызова весит 18658 входных токенов у haiku и 24729 у sonnet. Эффект, который я ищу, шириной в 9 токенов.
Вход
9 токенов у haiku, 12 у sonnet. На всех 112 задачах минимум и максимум это одно и то же число. Обёртка это фиксированная строка, задача садится между её половинами и ни одну из них не трогает. Офлайн cl100k_base, o200k_base, Qwen2.5-7B и Mistral-7B дают на той же строке 8 или 9 токенов, так что это не особенность Anthropic. По этим ценам please обходится в 9 долларов у haiku и в 24 у sonnet на миллион запросов. Длинная тёплая рамка это 35 и 90.
Где на самом деле лежит счёт
Выход стоит в 5 раз дороже входа на обеих моделях. Если thank you заставляет модель ответить you are welcome, лишние слова ложатся на выходную сторону.
Отклик есть. Найти его легко. На открытых вопросах 47 ответов sonnet из 48 под тёплой обёрткой несут предложение помочь ещё, из породы let me know if. Голая задача доходит до этого 9 раз из 48. У haiku счёт 40 против 0. Один ответ haiku про индексы в базе заканчивает последний абзац словами You're welcome! и предлагает рассказать про базы что-нибудь ещё. Модель отвечает на приветствие или просто попадает в поданный регистр, по одной закрывающей строке я этого не скажу.
До счёта почти ничего из этого не доходит. На открытых вопросах, спаренных по задачам, тёплая обёртка добавляет 21.4 выходного токена у sonnet при 95-процентном интервале от -23.2 до 58.4. Please добавляет 21.1. Оба интервала накрывают ноль. У haiku оба уходят в небольшой минус. Закрывающая фраза весит 15 токенов, а ответы sonnet вокруг неё в среднем от 561 до 1138 в зависимости от вопроса, поэтому она там тонет.
Одна клетка выход всё-таки покупает. Это haiku на GSM8K: 8.0 токена при интервале от 0.1 до 16.5. На миллион запросов выходит 40 долларов против 9 на входной стороне. Это единственный интервал на фигуре выше, который не накрывает ноль. Sonnet на той же семье идёт в другую сторону и на вежливую просьбу пишет на 5.7 токена меньше.
Меняет ли please ответ
Самая чистая постановка этого вопроса вообще не смотрит, верен ли ответ. Прогнать одну обёртку дважды и посчитать, как часто два прогона расходятся. Потом прогнать голую обёртку против вежливой и посчитать то же самое. У haiku на GSM8K одна и та же обёртка расходится сама с собой в 20.9 процента случаев, а голая против вежливой в 12.4. У sonnet наоборот: 6.8 против 12.8.
То есть вежливость стоит нескольких пунктов нестабильности в ту или другую сторону, смотря какая модель. Решает дело контроль filler. Голая против него это 13.6 процента у haiku на GSM8K и 10.1 у sonnet. Оба числа ложатся ровно на вежливое число той же клетки. Остальные 4 клетки тоже. Обёртка, в которой нет ни одного социального слова, тревожит ответ ровно настолько же, насколько вежливая. Смена обёртки немного двигает ответ. Вежливая эта смена или нет, на величину не влияет.
Доли верных ответов говорят то же самое. У haiku на GSM8K голая задача набирает 88.5 процента на 200 вызовах, вежливая 89.0. Каждый интервал перекрывается с каждым. Тёплая рамка и контроль filler садятся ниже, в районе восьмидесяти с небольшим, что противоположно ожиданию от вежливости и всё равно внутри шума.
Обёртка, которая двигает
Резкая. У haiku на GSM8K она уводит долю верных с 88.5 процента до 53.5, а средний ответ с 79.7 выходного токена до 11.7.
rude я написал как Do this now. <задача> Just the answer. Do not waste my time. И только после первого прогона прочитал эту строку как следует и увидел, что в неё сварены две разные вещи. Одна это тон. Вторая это указание про форму ответа. Поэтому я добавил ещё 2 обёртки. rude_soft это та же резкая рамка, из которой убрано Just the answer. terse это Just the answer. без всякой резкости вокруг.
rude_soft набирает 65.5 процента, terse 56.0. Обе уходят ниже голой задачи с её 88.5. Интервалы у них перекрываются почти по всей длине, поэтому утверждать, что одна половина хуже другой, я не буду. Прогон снимает то прочтение, с которым я в него заходил, где вредила именно грубость. В terse грубости нет вообще, а садится он ниже, чем резкая рамка.
Рядом идут длины ответов: 31.6 токена у резкой рамки, 20.1 у голого указания, 79.7 у голой задачи. Моё прочтение такое, что модель перестаёт расписывать шаги и после этого ошибается в арифметике, но про механизм это догадка. Прогон померил другое: короткие ответы и неверные ответы приходят вместе. Sonnet держится между 88.5 и 95.5 процента на любой обёртке.
Тот же раскол виден в долларах на открытых вопросах. Спаренная по задачам полная резкая обёртка срезает 614.2 выходного токена с ответа sonnet, одна резкая рамка 495.4, одно указание про формат 470.2. По опубликованной цене выхода эта резкая обёртка экономит 6142 доллара на миллион запросов.
Чего я не проверял
filler это нечистый контроль на длину. Он убирает социальные слова и добавляет постороннее содержание про партию QF-2231. По токенам он совпадает с warm. По смыслу токены там говорят совсем другое. 2 модели одной лаборатории. Весь результат по GSM8K держится на младшей. Системный промпт на каждом вызове был прибит к You are a helpful assistant., так что настоящий системный промпт, который сам задаёт тон, лежит за границей замера.
Первый заход умер на 1848 вызовах и 2.83 доллара, упёршись в лимит расхода, который вернул 429 на следующие 3152. Чтобы закрыть сетку, понадобилось ещё 3 присеста. Неудачный журнал я не стал удалять: порядок вызовов перемешали до старта, поэтому остановка на середине оставляет случайную подвыборку, а не срез по одному варианту.
Ещё одно я сделал неправильно и заметил только в конце. Мой грейдер сравнивал ответы строками и снимал ровно один хвост .0, поэтому 16.00 при эталоне 16 уходило в неверные. Это 117 вызовов из 7000. Легли они не поровну: 17 в клетке filler против 1 в голой клетке на sonnet. Все доли верных ответов выше получены пересчётом по сохранённым ответам, а не новым прогоном.
Я возвращаю please в шаблоны. На sonnet это 24 доллара на миллион запросов, а я трачу больше за один неудачный вечер.