0Pricing
AI Agents · Урок

Кратковременная память в контекстном окне

Храните историю диалога в массиве messages — это самый простой вид памяти, но у него есть жёсткие ограничения.

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

Память — это просто список

«Память» диалоговой LLM — это список messages, который Вы отправляете при каждом вызове. Модель не сохраняет состояние и ничего не знает между запросами.

«Кратковременная память» — это всё, что находится в этом списке прямо сейчас.

Почему это работает

Вы добавляете каждое сообщение пользователя и каждый ответ ассистента. Когда Вы задаёте третий вопрос, модель видит:

messages = [
  {'role': 'system', 'content': 'You are helpful.'},
  {'role': 'user',   'content': 'My name is Alice.'},
  {'role': 'assistant', 'content': 'Nice to meet you, Alice.'},
  {'role': 'user',   'content': 'What is my name?'}
]
# Model replies: 'Alice'
for m in messages:
    print(f"{m['role']}: {m['content']}")
print("Model replies: Alice")

Ограничения контекстного окна

У каждой модели есть жёсткое контекстное окно — максимальное количество токенов в совокупном входе и выводе.

  • gpt-4o-mini: 128 тысяч токенов
  • claude-sonnet-4-5: 200 тысяч токенов
  • gemini-1.5-pro: 2 миллиона токенов

При превышении этого ограничения API возвращает ошибку.

Стоимость токенов растёт линейно

Вы платите за каждый токен на каждом ходу. В чате из 30 ходов, где каждый ход содержит 500 токенов, только последний вызов обойдётся Вам в 15 000 входных токенов — вся история отправляется заново.

Длинные сеансы быстро становятся дорогими.

Потеря внимания к середине

Даже при контексте в 200 тысяч токенов модели уделяют меньше внимания содержимому в середине длинного промпта. Важную информацию следует помещать в начало (в системное сообщение) или в конец (в самое новое сообщение пользователя).

Усечение скользящего окна

Самый простой способ управления памятью — сохранять системное сообщение и последние N ходов:

MAX_TURNS = 20  # 10 user + 10 assistant

def trim(messages):
    system = messages[0]
    rest = messages[1:]
    return [system] + rest[-MAX_TURNS:]

demo_messages = [{'role': 'system', 'content': 'sys'}] + [
    {'role': 'user' if i % 2 == 0 else 'assistant', 'content': f'msg {i}'} for i in range(30)
]
trimmed = trim(demo_messages)
print(f"Original messages: {len(demo_messages)}")
print(f"Trimmed messages: {len(trimmed)}")

Обрезка по количеству токенов

Более точный подход — обрезать историю по количеству токенов, а не по количеству ходов:

import tiktoken
enc = tiktoken.encoding_for_model('gpt-4o-mini')

def trim_by_tokens(messages, max_tokens=8000):
    out = [messages[0]]   # keep system
    tokens_left = max_tokens - len(enc.encode(messages[0]['content']))
    # walk backwards from newest
    for m in reversed(messages[1:]):
        cost = len(enc.encode(m['content'])) + 4
        if cost > tokens_left:
            break
        out.insert(1, m)
        tokens_left -= cost
    return out

Сохраняйте пары вместе

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

# Bad: cuts after assistant call but before tool result
# Good: trim whole turns (user + all responses)
print("Bad: cuts after assistant call but before tool result")
print("Good: trim whole turns (user + all responses)")

Когда кратковременной памяти недостаточно

Кратковременная память перестаёт работать, когда:

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

Вам нужна другая стратегия — смотрите следующие уроки.

Системный промпт остаётся закреплённым

Системное сообщение всегда должно быть первым элементом. Никогда не сокращайте его. В нём содержатся идентичность, правила и описания инструментов.

Закрепление последних обновлений системы

Если Вы добавляете системную заметку «помните, что пользователь предпочитает градусы Цельсия», закрепите её в начале, как исходный системный промпт:

SYSTEM_PROMPT = 'You are a helpful assistant.'
messages = [
    {'role': 'system', 'content': SYSTEM_PROMPT},
    {'role': 'system', 'content': 'USER PREFERENCE: Celsius units'},
    {'role': 'user', 'content': 'What is the weather in Paris?'},
    {'role': 'assistant', 'content': 'It is 21C and sunny.'},
]
print('Pinned system messages:')
for m in messages:
    if m['role'] == 'system':
        print(' -', m['content'])
print('Total messages:', len(messages))

Ограничение контекста

Что происходит, когда Вы превышаете размер контекстного окна модели?

Итоги

Кратковременная память = список сообщений. Управляйте им с помощью сокращения по скользящему окну или на основе количества токенов, закрепляйте системное сообщение и учитывайте, что стоимость растёт с каждым ходом.

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

Урок «Кратковременная память в контекстном окне» бесплатный?

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

Чему я научусь в уроке «Кратковременная память в контекстном окне»?

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

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

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

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

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

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

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

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

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