Гайды

Как кешировать ответы ИИ — чтобы не платить дважды за один вопрос

Иллюстрация: одинаковые вопросы попадают в ящик-кеш, а модель зовут только на новый

Смотри, где утекают деньги: твоё приложение сто раз спрашивает у ИИ одно и то же — «переведи это меню», «объясни этот термин» — и каждый раз платит заново и ждёт секунды. А ответ-то не меняется. Кеширование ломает этот цикл: спросил один раз, запомнил ответ, дальше отдаёшь его мгновенно и бесплатно. Разберём по шагам, как это сделать.

Шаг 1. Найди, что вообще стоит кешировать

Кешировать имеет смысл запросы, которые часто повторяются и дают один и тот же ответ. Не всё подряд.

  • Кешируй: перевод фиксированного текста, объяснение термина, ответ на частый вопрос из FAQ, разбор одной и той же картинки. Вопрос повторяется — ответ можно переиспользовать.
  • Не кешируй: личные ответы («составь план на сегодня для меня»), всё, что зависит от времени, и запросы, где ты специально хочешь разные ответы. Про то, почему ИИ вообще даёт разные ответы, есть отдельный разбор — если ответ должен быть живым, кеш не нужен.

Правило: одинаковый вход → одинаковый выход. Только такое в кеш.

Шаг 2. Сделай из запроса ключ

Кеш — это по сути таблица «ключ → ответ». Ключ надо собрать из запроса так, чтобы одинаковые по смыслу запросы давали одинаковый ключ.

Две вещи:

  1. Приведи текст к единому виду. Убери лишние пробелы, приведи к нижнему регистру. Иначе «Привет» и «привет » станут разными ключами, и кеш промахнётся.
  2. Сожми в хэш. Длинный текст (а тем более картинку) неудобно держать ключом. Прогони его через хэш-функцию — получишь короткую строку-отпечаток, всегда одинаковую для одинакового входа.
ключ = hash( lowercase(trim(запрос)) )

Если в запрос идёт не только текст, а ещё и модель или настройки — добавь их в ключ. Ответ модели А и модели Б разный, значит и ключи должны быть разными.

Шаг 3. Проверяй кеш ДО вызова модели

Это сердце приёма. Порядок такой: сначала смотрим в кеш, и только если там пусто — идём к модели.

ответ = cache.get(ключ)
если ответ есть:
    вернуть ответ        # мгновенно, бесплатно
иначе:
    ответ = спросить_модель(запрос)
    cache.set(ключ, ответ)
    вернуть ответ

Всё. При первом запросе платишь один раз. При втором, третьем, сотом — берёшь из кеша даром.

Шаг 4. Выбери, где хранить кеш

Где живёт эта таблица «ключ → ответ» — зависит от масштаба:

  • В памяти приложения — проще всего, но кеш исчезает при перезапуске. Годится, чтобы попробовать.
  • В базе данных — переживает перезапуск, виден всем пользователям. Хороший выбор по умолчанию.
  • В отдельном кеш-хранилище (вроде Redis) — быстро и умеет само удалять старое. Это когда запросов реально много.

Начни с простого. База данных, которая у тебя уже есть, закроет 90% случаев — не тащи Redis в проект на выходные.

Шаг 5. Поставь срок жизни (TTL)

Последний штрих. Иногда ответ верен сегодня, но протухнет завтра — например, кешируешь погоду или курс. Чтобы кеш не отдавал вечно устаревшее, задай ему срок жизни (TTL, time to live): «хранить час», «хранить сутки».

cache.set(ключ, ответ, ttl = 1 час)

Через час запись сама исчезнет, и следующий запрос сходит к модели за свежим. Для вечных ответов (перевод, объяснение термина) TTL можно не ставить вовсе — они не протухают.

Что получится

Собрал пять шагов — и вот результат. Первый уникальный запрос идёт к модели как обычно. Все повторы возвращаются из кеша: мгновенно и без оплаты. На типичном приложении, где вопросы часто повторяются, это режет счёт за ИИ в разы и убирает секунды ожидания. Кеш — самый дешёвый апгрейд скорости и кошелька, какой ты можешь сделать.

Хочешь ещё сильнее ужать расходы — глянь полный разбор, как сэкономить на запросах к ИИ: кеш там первый, но не единственный рычаг.

Кеш и «память» ИИ — это одно и то же?

Нет. Кеш просто отдаёт готовый ответ на точно такой же запрос — он не понимает смысла, ему всё равно, о чём вопрос. Память ИИ — это когда модель учитывает прошлый разговор и подстраивается. Кеш экономит на повторах, память делает диалог связным. Разные задачи.

Кешировать по точному совпадению или по смыслу?

Начни с точного — так проще и надёжнее. Но есть и продвинутый вариант: кеш по смыслу, когда похожие по значению запросы («сколько будет 2+2» и «два плюс два») бьют в один ответ. Он ловит больше повторов, но иногда отдаёт ответ на чуть другой вопрос — а это риск. Для старта точного совпадения хватает.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →