컨텍스트 창의 단기 기억
대화 기록을 messages 배열에 저장해보세요. 가장 단순한 기억 방식이지만 분명한 한계도 있습니다.
컨텍스트 창의 단기 기억은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
메모리는 그저 목록입니다
채팅 스타일 LLM의 "메모리"는 매번 호출할 때 보내는 messages 목록입니다. 모델은 상태가 없으므로 요청 사이의 내용을 전혀 알지 못합니다.
"단기 기억"은 현재 그 목록에 들어 있는 모든 것입니다.
작동하는 이유
각 사용자 메시지와 각 어시스턴트 응답을 append합니다. 세 번째 질문을 할 때가 되면 모델에는 다음과 같이 보입니다:
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: 토큰 128k
- claude-sonnet-4-5: 토큰 200k
- gemini-1.5-pro: 토큰 2M
이 한계를 초과하면 API에서 오류가 발생합니다.
토큰 비용은 선형으로 증가합니다
매 차례마다 모든 토큰에 비용을 지불합니다. 각 차례가 500토큰인 30차례 채팅은 마지막 호출에서만 입력 토큰 15,000개가 비용으로 청구됩니다. 전체 기록이 다시 전송되기 때문입니다.
세션이 길어지면 비용이 빠르게 증가합니다.
중간 내용 소실
컨텍스트가 200k이더라도 모델은 긴 프롬프트 중간의 콘텐츠에 LESS 주의를 기울입니다. 중요한 정보는 시작 부분(시스템 메시지)이나 끝 부분(가장 최근의 사용자 메시지)에 배치해야 합니다.
슬라이딩 윈도우 잘라내기
가장 단순한 메모리 관리 방법은 시스템 메시지와 마지막 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턴을 초과함
- 사용자가 다음 날 돌아와 recall을 기대함
- 여러 사용자가 같은 에이전트를 공유함
다른 전략이 필요합니다 — 다음 수업을 참고하세요.
시스템 프롬프트는 고정됩니다
시스템 메시지는 항상 첫 번째 항목이어야 합니다. 절대로 잘라 내지 마세요. 시스템 메시지에는 정체성, 규칙, 도구 설명이 담겨 있습니다.
최근 시스템 업데이트 고정하기
“사용자가 섭씨를 선호한다는 점을 기억하세요”를 시스템 메모로 추가한다면, 원래 시스템 프롬프트처럼 앞부분에 고정하세요:
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 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“컨텍스트 창의 단기 기억”에서 뭘 배우나요?
대화 기록을 messages 배열에 저장해보세요. 가장 단순한 기억 방식이지만 분명한 한계도 있습니다. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“컨텍스트 창의 단기 기억” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 컨텍스트 창의 단기 기억
- 긴 컨텍스트가 확장되지 않는 이유
- 압축으로서의 요약
- 간단한 기억 저장소(키-값)