/
Вопросы и ответы
/
Промт-инжиниринг
/

Как сделать кэш ответов языковой модели и снизить расходы?

Как сделать кэш ответов языковой модели и снизить расходы?

17 дней назад

Никита Вихров

Ответы

0

Кэш нужен, чтобы не отправлять одинаковые запросы к модели повторно. Если вопрос уже был и условия не изменились, можно вернуть готовый ответ за миллисекунды.

Это дает:

  • меньше задержка для пользователя;
  • меньше стоимость запросов;
  • меньше нагрузка на сервис модели.

Что кэшировать

Ключ кэша должен учитывать:

  1. Текст запроса.
  2. Версию системной инструкции.
  3. Версию модели.
  4. Параметры генерации (например, степень вариативности).
  5. Язык ответа.

Если не включить эти поля, можно вернуть устаревший или неподходящий ответ.

Пример (Python, Redis)

import hashlib
import json
from redis import Redis

redis = Redis(host="localhost", port=6379, decode_responses=True)

def make_cache_key(payload: dict) -> str:
    raw = json.dumps(payload, ensure_ascii=False, sort_keys=True)
    digest = hashlib.sha256(raw.encode("utf-8")).hexdigest()
    return f"llm:cache:{digest}"

def get_or_generate(payload: dict, llm_call, ttl_sec: int = 3600) -> str:
    key = make_cache_key(payload)
    cached = redis.get(key)
    if cached is not None:
        return cached

    answer = llm_call(payload["user_text"])
    redis.setex(key, ttl_sec, answer)
    return answer

payload = {
    "user_text": "Объясни разницу между списком и словарем в Python",
    "system_version": "v3",
    "model": "gpt-4.1",
    "temperature": 0.2,
    "lang": "ru"
}

17 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845