Кэширование промптов Spring AI и память чата: куда уходят токены — контроль затрат на LLM 2/4
В этом разделе рассматривается контроль затрат, связанных с выводом, историей разговоров и повторяющимся статическим контентом в моделях ИИ. Токены вывода и рассуждений значительно дороже входных токенов, причем некоторые модели стоят до восьми раз дороже за вывод. Процессы рассуждений могут генерировать скрытые "мыслительные" токены, которые также влекут за собой более высокие тарифы на вывод. Spring AI предлагает такие элементы управления, как maxTokens, для независимых от поставщика ограничений по длине и настроек, специфичных для поставщика, для управления усилиями по рассуждению. История разговоров, которая включает повторную отправку всего журнала чата с каждым запросом, быстро увеличивает затраты на входные токены. Хранение и повторная отправка истории означает, что даже небольшие разговоры со временем могут привести к значительному использованию токенов. Spring AI предоставляет MessageWindowChatMemory для управления историей разговоров путем использования скользящего окна указанного количества сообщений. Для очень длинных сессий VectorStoreChatMemoryAdvisor предлагает альтернативу, сохраняя историю в векторном хранилище и извлекая только релевантные сообщения. Повторяющийся статический контент, такой как системные подсказки или определения инструментов, оплачивается при каждом запросе без кэширования. Кэширование подсказок снижает эти затраты, сохраняя обработанные префиксы подсказок для повторного использования. Anthropic и AWS Bedrock позволяют пользователям указывать стратегии кэширования, в то время как OpenAI автоматически кэширует подсказки для запросов, превышающих определенное количество токенов, хотя запись в кэш теперь взимается. Локальные модели, такие как Ollama, используют кэширование для повышения скорости, экономя время обработки на GPU, но нет никаких сборов за токены для снижения. Явное планирование кэширования и управление ключами кэша имеет решающее значение для оптимизации затрат с этими моделями.
maxTokens, для независимых от поставщика ограничений по длине и настроек, специфичных для поставщика, для управления усилиями по рассуждению. История разговоров, которая включает повторную отправку всего журнала чата с каждым запросом, быстро увеличивает затраты на входные токены. Хранение и повторная отправка истории означает, что даже небольшие разговоры со временем могут привести к значительному использованию токенов. Spring AI предоставляетMessageWindowChatMemoryдля управления историей разговоров путем использования скользящего окна указанного количества сообщений. Для очень длинных сессийVectorStoreChatMemoryAdvisorпредлагает альтернативу, сохраняя историю в векторном хранилище и извлекая только релевантные сообщения. Повторяющийся статический контент, такой как системные подсказки или определения инструментов, оплачивается при каждом запросе без кэширования. Кэширование подсказок снижает эти затраты, сохраняя обработанные префиксы подсказок для повторного использования. Anthropic и AWS Bedrock позволяют пользователям указывать стратегии кэширования, в то время как OpenAI автоматически кэширует подсказки для запросов, превышающих определенное количество токенов, хотя запись в кэш теперь взимается. Локальные модели, такие как Ollama, используют кэширование для повышения скорости, экономя время обработки на GPU, но нет никаких сборов за токены для снижения. Явное планирование кэширования и управление ключами кэша имеет решающее значение для оптимизации затрат с этими моделями.