Skip to Content

Кэширование промптов

Prompt Caching позволяет кэшировать повторно используемые префиксы промптов, снижая потребление токенов и задержку ответа.

Принцип работы

Когда ваш запрос содержит длинный, повторно используемый system prompt или контекстную информацию:

  1. Первый запрос — все токены обрабатываются полностью, префикс промпта кэшируется
  2. Последующие запросы — при попадании в кэш токены кэшированной части не тарифицируются повторно
  3. Истечение кэша — кэш имеет определённый TTL (обычно 5-10 минут), после истечения требуется повторное кэширование

Поддержка кэширования

Модельные ресурсы OfoxAI предоставляются облачными провайдерами — AWS Bedrock, Azure OpenAI, Google Cloud, Alibaba Cloud, Volcengine и другими. Модели, поддерживающие Prompt Caching у облачного провайдера, поддерживаются и в OfoxAI.

Облачный провайдерМодельМеханизм кэширования
AWS BedrockСерия ClaudeНативный Prompt Caching
Azure OpenAIСерия GPT-4oАвтоматическое кэширование
Google CloudСерия GeminiContext Caching
Alibaba CloudСерия QwenКэширование на стороне платформы
VolcengineСерия DoubaoКэширование на стороне платформы

Поддержка кэширования конкретными моделями определяется документацией соответствующего облачного провайдера. OfoxAI прозрачно передаёт параметры кэширования без необходимости дополнительной настройки.

Способ использования

Протокол OpenAI

Prompt Caching для моделей OpenAI работает автоматически — активируется при обнаружении повторяющегося префикса промпта:

caching_openai.py
# Длинный system prompt будет автоматически закэширован SYSTEM_PROMPT = """Вы — ассистент технической поддержки OfoxAI. Информация о продукте, которую вам нужно знать: - OfoxAI — это LLM Gateway, поддерживающий 100+ моделей - Поддерживает три основных протокола: OpenAI / Anthropic / Gemini - ... (дополнительная информация о продукте) """ # Первый запрос: кэширование system prompt response1 = client.chat.completions.create( model="openai/gpt-4o", messages=[ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": "Какие модели поддерживает OfoxAI?"} ] ) # Второй запрос: попадание в кэш — быстрее и дешевле response2 = client.chat.completions.create( model="openai/gpt-4o", messages=[ {"role": "system", "content": SYSTEM_PROMPT}, # попадание в кэш {"role": "user", "content": "Как настроить Claude Code?"} ] )

Протокол Anthropic

Модели Anthropic поддерживают явное управление кэшем:

caching_anthropic.py
import anthropic client = anthropic.Anthropic( base_url="https://api.ofox.ai/anthropic", api_key="<Ваш OFOXAI_API_KEY>" ) response = client.messages.create( model="anthropic/claude-sonnet-4.5", max_tokens=1024, system=[{ "type": "text", "text": "Вы — профессиональный ассистент. Далее следует документация продукта...", "cache_control": {"type": "ephemeral"} # явное включение кэширования }], messages=[{"role": "user", "content": "Подведите итог по характеристикам продукта"}] ) # Просмотр состояния кэша print(f"Токены записи в кэш: {response.usage.cache_creation_input_tokens}") print(f"Токены из кэша: {response.usage.cache_read_input_tokens}")

Экономия затрат

При попадании в кэш токены кэшированной части тарифицируются по сниженной цене. Процент экономии зависит от модели:

  • Серия Anthropic Claude — попадание в кэш экономит около 90% затрат на ввод
  • Серия OpenAI GPT — попадание в кэш экономит около 50% затрат на ввод
  • Серия Google Gemini — попадание в кэш экономит около 50-75% затрат на ввод

Фактическая экономия зависит от показателя попадания в кэш и тарифной политики облачного провайдера. Подробности см. в статистике использования в консоли OfoxAI.

Лучшие практики

  1. Размещайте длинный текст в начале — system prompt, содержимое базы знаний и другие неизменяемые части ставьте в начало messages
  2. Сохраняйте одинаковый префикс — только полностью идентичный префикс попадает в кэш
  3. Проектируйте структуру промпта рационально — разделяйте фиксированную и изменяемую части
# ✅ Хороший дизайн: фиксированное содержимое в начале, изменяемое в конце messages = [ {"role": "system", "content": LONG_STATIC_PROMPT}, # кэшируется {"role": "user", "content": dynamic_question} # изменяемая часть ] # ❌ Плохой дизайн: изменяемое содержимое вперемешку с фиксированным messages = [ {"role": "system", "content": f"Today is {date}. {LONG_PROMPT}"} # меняется каждый день, не кэшируется ]

Попадание в кэш можно проверить в поле usage ответа API, а также в статистике использования в консоли OfoxAI, где отображается показатель попадания в кэш.

Last updated on