Кратковременная память в контекстном окне
Храните историю диалога в массиве 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 — локальная установка не требуется.
Все уроки этого курса
- Кратковременная память в контекстном окне
- Почему длинные контексты не масштабируются
- Суммаризация как сжатие
- Простые хранилища памяти (ключ–значение)