Сжатие промптов
Сжатие промптов позволяет преобразовывать и оптимизировать сообщения перед отправкой в AI-модели, помогая управлять ограничениями контекстного окна и оптимизировать использование токенов.
Обзор
Основная функция — это сжатие "из середины" (middle-out compression), которое автоматически обрабатывает промпты, превышающие максимальный размер контекста модели.
Как это работает
Добавьте параметр transforms: ["middle-out"] в ваш запрос для включения сжатия:
{
transforms: ["middle-out"],
messages: [...],
model: "openai/gpt-4o" // Совместимо с любой моделью
}Поведение сжатия
Когда включено сжатие "из середины":
- Приоритизация моделей: Система выбирает модели с контекстной длиной как минимум в половину от общего количества требуемых токенов
- Удаление из середины: Если промпт превышает максимальный размер контекста, сообщения удаляются или обрезаются из середины промпта
- Сохранение краев: Половина сообщений сохраняется с начала, половина — с конца последовательности
- Обработка лимитов: Автоматически управляет ограничениями на количество сообщений (например, ограничения 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": "Какие основные тенденции?"
}
]
}В этом примере, если общий размер сообщений превышает лимит контекста модели, система автоматически:
- Сохранит системное сообщение (начало)
- Может обрезать или удалить средние сообщения
- Сохранит последний обмен сообщениями (конец)
Лучшие практики
- Структурируйте важный контекст: Размещайте критичную информацию в начале или конце промпта
- Используйте для длинных историй: Идеально подходит для чат-приложений с обширной историей
- Комбинируйте с кэшированием: Используйте вместе с кэшированием промптов для оптимальной производительности
- Мониторьте поведение: Проверяйте, как сжатие влияет на качество ответов для вашего конкретного случая использования
- Учитывайте приоритеты: Понимайте, что средние сообщения могут быть потеряны при сжатии
Ограничения
- Сжатие может привести к потере контекста из середины разговора
- Не подходит для случаев, где требуется идеальное сохранение всех сообщений
- Поведение может отличаться в зависимости от конкретных ограничений модели
- Требует тестирования для критичных приложений
Совместимость
Трансформации сообщений работают со всеми моделями, доступными через LLMost, включая:
- OpenAI GPT-5
- Anthropic Claude
- Google Gemini
- И другие поддерживаемые провайдеры