𝗧𝗵𝗲 𝗠𝗼𝗱𝗲𝗹 𝗗𝗼𝗲𝘀𝗻'𝘁 𝗥𝗲𝗺𝗲𝗺𝗯𝗲𝗿. 𝗬𝗼𝘂 𝗗𝗼.
거대 언어 모델(LLM)은 메모리를 가지고 있지 않습니다.
저는 모든 채팅 세션이 자체적인 컨텍스트를 저장한다고 생각하곤 했습니다. 하지만 제 생각이 틀렸습니다. LLM과 대화할 때, 이전 질문을 다시 보내지 않으면 모델은 당신의 마지막 질문을 기억하지 못합니다.
모델은 stateless합니다. 즉, 모든 요청은 완전히 새로운 시작이라는 의미입니다.
대화를 이어가려면 직접 히스토리를 관리해야 합니다. 매번 새로운 요청을 보낼 때마다 이전의 모든 메시지를 배열(array) 형태로 함께 보내는 방식으로 이를 수행합니다.
"메모리"는 그저 메시지 목록일 뿐입니다:
- 사용자: 안녕하세요.
- 어시스턴트: 안녕하세요!
- 사용자: 어떻게 지내세요?
만약 다음 요청에 처음 두 줄을 포함하지 않는다면, 모델은 당신이 이미 인사를 했다는 사실을 알지 못할 것입니다.
저는 SDK를 피함으로써 이 사실을 배웠습니다. 대부분의 개발자는 이러한 복잡함을 숨기기 위해 Anthropic SDK와 같은 도구를 사용합니다. SDK가 메시지 히스토리와 헤더를 대신 처리해 주기 때문입니다.
LLM이 어떻게 작동하는지 배우고 싶다면, 대신 raw fetch를 사용하세요. 추상화된 도구를 사용하지 마십시오. 요청과 응답 사이클을 수동으로 관리할 때, 모든 결정 과정을 직접 확인할 수 있습니다.
이러한 수동 제어를 통해 나중에 다음과 같은 고급 전략을 구축할 수 있습니다:
- 긴 채팅을 관리하기 위한 슬라이딩 윈도우(Sliding windows).
- 검색 증강 생성(RAG).
- 시맨틱 검색(Semantic search).
이 배열을 이해하는 것이 AI 개발의 기초입니다. 컨텍스트를 제공하는 것은 바로 당신입니다. 모델은 당신이 보내는 정보만을 알 뿐입니다.
출처: https://dev.to/marcochavezco/the-model-doesnt-remember-you-do-3mmk