Документация

Сжатие промптов

Сжатие промптов позволяет преобразовывать и оптимизировать сообщения перед отправкой в AI-модели, помогая управлять ограничениями контекстного окна и оптимизировать использование токенов.

Обзор

Основная функция — это сжатие "из середины" (middle-out compression), которое автоматически обрабатывает промпты, превышающие максимальный размер контекста модели.

Как это работает

Добавьте параметр transforms: ["middle-out"] в ваш запрос для включения сжатия:

{
  transforms: ["middle-out"],
  messages: [...],
  model: "openai/gpt-4o" // Совместимо с любой моделью
}

Поведение сжатия

Когда включено сжатие "из середины":

  1. Приоритизация моделей: Система выбирает модели с контекстной длиной как минимум в половину от общего количества требуемых токенов
  2. Удаление из середины: Если промпт превышает максимальный размер контекста, сообщения удаляются или обрезаются из середины промпта
  3. Сохранение краев: Половина сообщений сохраняется с начала, половина — с конца последовательности
  4. Обработка лимитов: Автоматически управляет ограничениями на количество сообщений (например, ограничения Anthropic)

Автоматическое сжатие

По умолчанию сжатие "из середины" применяется для моделей с контекстным окном 8k токенов или меньше. Для моделей с большим контекстом необходимо явно указать параметр.

Когда использовать

Трансформации сообщений особенно полезны в следующих случаях:

  • Длинные разговоры: Многоэтапные диалоги, где история может превысить лимиты
  • Большие контексты: Работа с обширными документами или кодовыми базами
  • Гибкость по токенам: Когда точное сохранение всех токенов не критично
  • Ограниченный контекст: Работа с моделями с меньшими контекстными окнами

Научное обоснование

Подход к сжатию "из середины" основан на исследованиях, показывающих, что языковые модели уделяют меньше внимания средней части последовательностей. Сохраняя начало и конец, мы максимизируем релевантность при минимизации потери информации.

Отключение сжатия

Чтобы отключить автоматическое сжатие для моделей с малым контекстом, явно передайте пустой массив:

{
  transforms: [],
  messages: [...],
  model: "openai/gpt-4o-mini"
}

Пример использования

{
  "model": "anthropic/claude-4.5-sonnet",
  "transforms": ["middle-out"],
  "messages": [
    {
      "role": "system",
      "content": "Вы полезный AI-ассистент со знаниями в анализе данных."
    },
    {
      "role": "user",
      "content": "Вот большой набор данных для анализа... [тысячи токенов]"
    },
    {
      "role": "assistant",
      "content": "Я проанализировал данные..."
    },
    {
      "role": "user",
      "content": "Какие основные тенденции?"
    }
  ]
}

В этом примере, если общий размер сообщений превышает лимит контекста модели, система автоматически:

  1. Сохранит системное сообщение (начало)
  2. Может обрезать или удалить средние сообщения
  3. Сохранит последний обмен сообщениями (конец)

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

  1. Структурируйте важный контекст: Размещайте критичную информацию в начале или конце промпта
  2. Используйте для длинных историй: Идеально подходит для чат-приложений с обширной историей
  3. Комбинируйте с кэшированием: Используйте вместе с кэшированием промптов для оптимальной производительности
  4. Мониторьте поведение: Проверяйте, как сжатие влияет на качество ответов для вашего конкретного случая использования
  5. Учитывайте приоритеты: Понимайте, что средние сообщения могут быть потеряны при сжатии

Ограничения

  • Сжатие может привести к потере контекста из середины разговора
  • Не подходит для случаев, где требуется идеальное сохранение всех сообщений
  • Поведение может отличаться в зависимости от конкретных ограничений модели
  • Требует тестирования для критичных приложений

Совместимость

Трансформации сообщений работают со всеми моделями, доступными через LLMost, включая:

  • OpenAI GPT-5
  • Anthropic Claude
  • Google Gemini
  • И другие поддерживаемые провайдеры
Сжатие промптов | Документация | LLMost