DEV Community на русском
Подписаться
Agent-Cache: многоуровневое кэширование LLM для Valkey и Redis
Agent-cache — это трехуровневое решение для кэширования, разработанное для оптимизации операций LLM за счет сокращения использования токенов и времени выполнения. Оно использует Valkey или Redis для кэширования ответов LLM, результатов инструментов и состояний сеансов. Архитектура включает в себя кэш точных совпадений ответов LLM, кэш результатов инструментов для результатов вызовов функций и кэш состояний сеансов для контрольных точек агента. Каждый уровень использует различные стратегии TTL: ответы LLM кэшируются на несколько часов, результаты инструментов — на более короткие периоды, а состояния сеансов — на время активных пользовательских сеансов. Ключи кэша для ответов LLM включают хэш запроса и параметры модели, в то время как ключи результатов инструментов используют имя инструмента и хэш аргументов.Требуется ручное аннулирование, поскольку система не отслеживает зависимости, что позволяет выборочно очищать кэш с использованием шаблонов glob Redis. В случае недоступности Valkey/Redis, agent-cache по умолчанию обеспечивает плавную деградацию, пропуская кэш, но позволяя настраивать для каждого уровня параметры быстрого отказа или локального резервного копирования. Инструменты наблюдаемости, такие как OpenTelemetry и Prometheus, интегрированы для мониторинга производительности и работоспособности кэша. Библиотека предоставляет адаптеры для LangChain, LangGraph и Vercel AI SDK, обрабатывая сериализацию для каждого фреймворка.Он разработан для сред, в которых уже работают Valkey или Redis, поддерживает автономные, sentinel и кластерные развертывания с хэш-тегами для эффективного распределения ключей. Основные риски включают устаревшие результаты инструментов, возможные коллизии ключей кэша и нагрузку на память, которые смягчаются короткими TTL, комплексными ключами кэша и политиками памяти. Потеря состояния сеанса во время перезапусков устраняется с помощью снимков RDB или персистентности AOF.Agent-cache полезен для агентов с повторяющимися запросами или вызовами инструментов, направлен на контроль затрат на токены и использование существующей инфраструктуры Redis. Однако он не подходит для инструментов, которые изменяют внешнее состояние, высокодинамических запросов, приводящих к низкому коэффициенту попадания в кэш, или когда требуется семантическое сходство вместо точного совпадения. Библиотека эффективно устраняет разрыв между кэшированием, специфичным для фреймворка, и общим назначением Redis, наилучшим образом используя ее, когда циклы агента и поведение инструментов хорошо понятны.