0Pricing
AI Agents · Урок

Суммаризация как сжатие

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

«Суммаризация как сжатие» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Сжатие как память

Когда диалог становится длинным, заменяйте старые ходы краткой сводкой. Вы обмениваете точное воспроизведение на пространство контекста.

Сводка содержит суть (факты, решения, незавершённые пункты), но дословный текст исчезает.

Когда выполнять суммаризацию

Запускайте суммаризацию, когда:

  • Общее количество токенов превышает порог (например, 8k)
  • Количество ходов превышает N (например, 20)
  • Пользователь начинает новую тему

Суммируйте старые ходы

Сохраняйте последние ходы дословно, а суммируйте только те, которые вышли за пределы:

def compact(messages, keep_recent=10):
    system = messages[0]
    old = messages[1:-keep_recent]
    recent = messages[-keep_recent:]
    if not old:
        return messages
    summary = summarise(old)
    return [
        system,
        {'role': 'system', 'content': f'Earlier conversation summary:\n{summary}'},
        *recent
    ]

Промпт для сводки

Используйте отдельный недорогой вызов модели для создания сводки:

def summarise(messages):
    text = '\n'.join(f'{m["role"]}: {m["content"]}' for m in messages)
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': 'Summarise this conversation in 5 bullet points. Preserve facts, decisions, and pending TODOs.'},
            {'role': 'user', 'content': text}
        ],
        max_tokens=300,
    )
    return response.choices[0].message.content

Накапливаемые сводки

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

running_summary = ''

def extend_summary(new_messages):
    global running_summary
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': 'Extend the existing summary with the new turns. Keep it under 200 words.'},
            {'role': 'user', 'content': f'Existing summary:\n{running_summary}\n\nNew turns:\n{format(new_messages)}'}
        ],
        max_tokens=500,
    )
    running_summary = response.choices[0].message.content

Структурированные сводки

Задайте сводке обязательные поля для извлечения:

summary_schema = {
    'topics_discussed': '...',
    'user_facts': {'name': '...', 'preferences': '...'},
    'open_questions': ['...'],
    'decisions_made': ['...']
}
# Use json_object response_format to enforce.
import json
print(json.dumps(summary_schema, indent=2))

Иерархические сводки

Для очень длинных историй:

  • Сводки по 100 ходов (средний уровень)
  • Сводки по 1000 ходов (высокий уровень)
  • Сводка за всё время (экстремальный уровень)

Добавляйте в контекст только подходящий уровень.

Потеря деталей

Сводки теряют конкретные цитаты и точные формулировки. Если пользователь спросит «что именно я раньше говорил о ценах?», модель не сможет ответить.

Для дословного воспроизведения Вам нужен либо больший контекст, либо архив с векторным поиском.

Сочетайте сводку и векторный архив

Лучшее из двух подходов:

  1. Суммируйте старые ходы в системном сообщении
  2. ALSO создавайте эмбеддинг для каждого хода и сохраняйте его в векторном хранилище
  3. Если пользователь просит подробности, извлекайте дословный текст из векторного хранилища

Качество сводки имеет значение

Плохая сводка хуже, чем её отсутствие. Используйте недорогую, но способную модель (gpt-4o-mini, haiku), а не самый дешёвый уровень, для вызовов суммаризации.

Обновление сводок обходится дорого

Суммаризация 8000 токенов диалога — это настоящий вызов LLM: 1–2 секунды и 0,5 цента. Выполняйте её асинхронно между ходами, а не на критическом пути.

Компромисс при работе со сводкой

Каков главный компромисс при использовании суммаризации в качестве памяти?

Итоги

Суммаризация — недорогой способ расширить память. Объединяйте её с векторным поиском для точного воспроизведения цитат.

Часто задаваемые вопросы

Урок «Суммаризация как сжатие» бесплатный?

Да — полный текст урока «Суммаризация как сжатие» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Суммаризация как сжатие»?

Периодически заменяйте старые реплики текущим кратким изложением, жертвуя точностью воспроизведения ради места в контекстном окне. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Суммаризация как сжатие»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

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

Все уроки этого курса

  1. Кратковременная память в контекстном окне
  2. Почему длинные контексты не масштабируются
  3. Суммаризация как сжатие
  4. Простые хранилища памяти (ключ–значение)
← Назад к AI Agents