Экономия токенов при работе с кэшем и автоматизация процессов
Как я экономлю токены: часть 1
~55-65% расхода приходится на чтение кэша. И это при том, что я аккуратно с ним работаю. При обычном использовании эта доля расходов выше
Кэш в данном случае это весь контекст, которым оперирует агент: в него записывается системный промпт, ваши инструкции и память, ваши сообщения и ответы агента
Снижаю частоту чтения кэша
При каждом шаге модель перечитывает весь кэш. Шаг это и размышления модели, и вызов инструментов, и сообщения. Задача сделать так, чтобы шагов было меньше
- Стараюсь писать вопросы, задачи и комментарии одним большим сообщением вместо нескольких коротких
Каждое сообщение заставляет модель перечитывать все 100-200-300 тысяч токенов контекста из кэша. Если вы написали 10 коротких сообщений в сессии с контекстом на 300 тысяч токенов, то модель прочитает 3 миллиона токенов из кэша. И это не считая вызова инструментов и размышлений, которых тоже будет больше, чем если бы сообщение пришло одно из нескольких пунктов
- Автоматизирую вызов инструментов через скрипты
Например, раньше агент делал несколько действий: писал файл, проверял файл на ошибки отдельным скриптом, коммитил, проверял состояние коммита, если коммит упал — разбирался почему и делал его снова
Сейчас агент одной командой пишет файл и запускает скрипт, который проверяет путь к файлу, форматирует код на соответствие требованиям, коммитит, если гит не ответил сразу — делает повтор. Всё это одним шагом, без агента. Если коммит прошёл — присылает короткий ответ о нём, если не прошёл — присылает короткий ответ с конкретной причиной
Или раньше, когда я спрашивал у агента, что сделано за сессию, он перечитывал её, проверял несколько файлов по очереди и после этого давал ответ. Сейчас он запускает скрипт, который собирает инфу из нужных мест и выдаёт мне одним сообщением структурированный статус
Есть и отдельное требование на чтение файлов. Обычно, когда агенту надо прочитать несколько файлов, он это делает через несколько отдельных вызовов. Чтобы сэкономить на этом, у меня теперь есть инструкция, что вызов чтения нескольких файлов делается одной командой
В общем, я постоянно анализирую, что происходит в сессиях и ищу, что можно скомпоновать, упростить, механизировать, чтобы сэкономить токены и ускорить процесс работы