Корзина Войти
Каталог

Как экономить токены в запросах к ChatGPT: разбор примера OpenAI

Обучение ChatGPT Разработка и Codex Codex, API и разработка 5 из 20

Когда запрос к ChatGPT или к API уже работает, его почти всегда можно сократить: тот же результат, но меньше токенов. Это прямая экономия денег на API и заодно место в контекстном окне. У OpenAI в справке есть наглядный разбор: берётся рабочий промпт на 211 токенов и ужимается в несколько раз без потери качества. Посмотрим, что именно там сделали, и какие приёмы из этого можно унести в свои запросы.

Почему токены вообще считают

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

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

Исходный промпт: 211 токенов

В примере OpenAI решается простая задача: пользователь пишет просьбу по-английски, модель выдаёт команду для командной строки Windows. Первый вариант промпта устроен так: сначала инструкция «преврати высказывание в команду командной строки Windows», а дальше девять пар «запрос - команда»: клонировать репозиторий, добавить remote, задать переменную окружения, перейти в System32, открыть файл, создать файл, удалить, переименовать, скопировать в папку Documents.

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

Что с ним сделали

Переписанный вариант короче в разы и при этом умеет больше: он выдаёт команды сразу для двух оболочек - cmd в Windows и zsh в терминале. Устроен он так: одна строка инструкции «создавай команды cmd и zsh из запроса пользователя», затем один пример, где на вход идёт просьба создать файл и записать в него строку, а на выходе два варианта команды - для cmd и для zsh. После примера ставится разделитель из трёх решёток, дальше второй короткий пример на удаление файла.

Справка перечисляет три шага, за счёт которых промпт похудел:

  • Инструкцию и примеры переписали конкретнее, чтобы они прямо указывали на нужный тип вывода и были связаны друг с другом. Формулировка «создавай команды cmd и zsh» задаёт формат ответа лучше, чем общее «преврати высказывание в команду».
  • Добавили разделитель «###» между примерами. Он не только визуально отделяет блоки, но и годится на роль стоп-последовательности: модель дописывает ответ и останавливается, не начиная выдумывать следующий пример.
  • Убрали лишние примеры, потому что модель и так понимает задачу. Девять пар были нужны не ей, а нашему беспокойству.

Главное правило: инструкция или примеры

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

То есть инструкция и примеры взаимозаменяемы, и держать одновременно и подробное объяснение, и десяток образцов - это оплачивать одну и ту же информацию дважды. Выберите, что в вашей задаче объясняет лучше: правило словами или показанный формат.

Как применять это в своих запросах

Что можно сделать прямо сейчас с промптом, который у вас уже работает:

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

Где экономить не стоит

Сокращение имеет смысл только после того, как промпт заработал. Резать формулировку, которая пока даёт нестабильный результат, - это чинить две вещи одновременно и не понимать, что именно сломалось. Сначала добиваемся нужного ответа, потом ужимаем.

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

Где купить ChatGPT из России

Российская карта на странице оплаты OpenAI не проходит, будь то подписка или пополнение баланса API. Мы оформляем всё это на вашу почту: ChatGPT Go, Plus, Pro 5x и Pro 20x, плюс пополнение API. Оплата картой РФ или через СБП, выдача в день заказа, поддержка на русском в чате на сайте.

Перейти в каталог

Обсуждение

0 комментариев
Чтобы оставить комментарий, войдите в аккаунт
Так мы понимаем, кто спрашивает, и отвечаем по вашим заказам.
Войти
Пока никто не написал — будьте первым.