Metlivi 블로그

캐릭터 챗봇이 세션을 넘어 사용자의 수정을 기억하도록 만드는 방법

사용자가 가상 캐릭터의 세부 사항을 수정할 때, 챗봇은 수정된 버전을 해당 적용 범위와 함께 저장하고, 상충되는 기존 버전을 대체하며, 저장된 메모를 확인하고 편집할 수 있도록 해야 합니다. 또한 지속적인 사용자 선호도와 단일 스토리 장면 내에서만 적용되는 사실을 구분해야 합니다. 나중에 기억된 세부 사항을 사용하기 전에 시스템은 해당 정보가 관련성이 있고 최신인지 확인해야 합니다. 증거가 불분명하다면 공유된 과거를 꾸며내기보다는 되물어보아야 합니다. 본 가이드는 순간적인 오해에 대응하는 방법이 아니라, 이러한 지속성과 충돌 해결 작업에 중점을 둡니다.

2026년 9월 27일8분 분량독서·예술·문화작성: Metlivi Editorial Team
섹션 1

캐릭터 챗봇은 무엇을 기억해야 할까요?

이해를 돕기 위한 예시를 들어보겠습니다. 사용자가 “미라의 눈은 파란색이 아니라 초록색이야”라고 말합니다. 이 수정은 영구적인 캐릭터 설정일 수도 있고, 특정 롤플레이 속 미라의 일시적인 버전일 수도 있으며, 미라를 묘사하는 방식에 대한 사용자의 선호일 수도 있습니다. 단순히 “눈: 초록색”만을 저장하는 기억은 해당 사실을 유용하게 만드는 맥락을 잃어버립니다.

실용적인 기억 기록에는 최소한 주체, 수정된 세부 사항, 적용 범위, 그리고 사용자가 이를 지속시키고자 했는지 여부가 담겨야 합니다. 예시는 다음과 같습니다:

이 구조는 제품 디자인 권장 사항이며, 연구에서 규정한 형식이 아닙니다. 그 목적은 특정 장면의 세부 사항이 암묵적으로 전역적인 사실로 둔갑하는 것을 방지하는 것입니다. 장면에 국한된 수정 사항은 “겨울 무도회 장면에서 미라는 초록색 망토를 입고 있다”와 같이 기록될 수 있습니다. 이 메모가 캐릭터의 일반적인 의상이나 외모를 덮어써서는 안 됩니다.

주체: 미라(가상 캐릭터)
세부 사항: 초록색 눈
적용 범위: 미라의 일반 캐릭터 묘사
상태: 현재 유효; 이전 “파란색 눈” 메모를 대체함
출처: 사용자 수정
섹션 2

수정 사항은 이전 기억을 어떻게 대체해야 할까요?

명확한 수정은 두 버전을 모두 활성 상태로 남겨두는 추가 사실이 아니라, 해당 사실에 대한 업데이트로 처리해야 합니다. 시스템이 “미라는 파란색 눈을 가졌다”를 유지하면서 “미라는 초록색 눈을 가졌다”를 추가하면, 이후 검색 시 둘 중 어느 것이든 나타날 수 있습니다. 업데이트된 기록은 이전 값을 대체된 것으로 표시하거나 활성 사용 대상에서 제거해야 하며, 제품에서 기억 로그를 제공하는 경우 변경 사항을 설명할 수 있을 만큼의 기록을 보존해야 합니다.

정보는 시간이 지남에 따라 변할 수 있으므로 이러한 구분은 중요합니다. *[Keep Me Updated! Memory Management in Long-term Conversations](https://aclanthology.org/2022.findings-emnlp.276/)*에서 Bae 연구팀은 여러 대화 세션에 걸쳐 업데이트되는 사용자 정보를 추적하기 위한 과제와 데이터셋을 소개합니다. 연구진은 기억을 텍스트 설명으로 표현하고, 무효화되거나 불필요한 정보를 선별적으로 제거할 것을 제안합니다. 실험에서는 저장된 기억을 그대로 두는 기준선(baseline)과 이 접근 방식을 비교합니다. 이 연구는 장기 대화 기억에 관한 것이며, 가상 캐릭터 챗봇을 구체적으로 테스트하거나 보편적인 단일 기억 설계를 규정하는 것은 아닙니다.

캐릭터 챗봇의 경우에도 동일한 일반 업데이트 논리를 신중하게 적용해야 합니다. “파란색이 아니라 초록색”이라는 직접적인 수정은 명시된 범위 내에서 이전 값이 틀렸다는 강력한 증거입니다. 새로운 장면 세부 사항이 영구적인 캐릭터 설정이 변경되었다는 증거가 자동으로 되지는 않습니다. 적용 범위가 누락되었고 그 차이가 나중에 중요해질 수 있다면, “모든 이야기에서 미라의 초록색 눈을 기억할까요, 아니면 이 버전에만 적용할까요?”와 같이 짧은 후속 질문을 건네세요.

섹션 3

시스템은 사용자 선호도와 스토리 속 사실을 어떻게 분리할 수 있을까요?

선호도와 가상 세계의 사실을 서로 다른 범주에 저장하세요. 선호도는 “사용자는 미라의 대사가 간결한 것을 선호함”일 수 있습니다. 스토리 속 사실은 “이 장면에서 미라는 방금 역에 도착했음”일 수 있습니다. 이 둘은 서로 다른 질문에 답합니다. 선호도는 챗봇의 응답 방식을 안내하고, 스토리 사실은 서사 내의 연속성을 유지하는 데 도움이 됩니다.

두 가지 모두에 적용 범위를 추가하세요. 선호도는 여러 대화에 걸쳐, 단일 캐릭터에, 혹은 현재 롤플레이에만 적용될 수 있습니다. 스토리 사실은 단일 장면, 하나의 스토리 아크, 또는 캐릭터의 일반 프로필에 적용될 수 있습니다. 단 한 번의 수정으로 광범위한 선호도를 추론하지 마세요. 사용자가 “미라의 눈은 초록색이야”라고 말한다고 해서, 그것이 모든 캐릭터가 초록색 눈을 갖기를 원한다거나, 이 세부 사항이 미라의 모든 대체 버전에 적용된다는 것을 의미하지는 않습니다.

간단한 결정 절차가 도움이 됩니다:

이 단계들은 대화 정보를 최신 상태로 유지하는 문제에서 도출된 제안 워크플로입니다. 특정 챗봇 제품이 이를 따르고 있다는 주장은 아닙니다.

수정 사항이 무엇을 가리키는지 식별합니다: 사용자의 선호도인지, 캐릭터의 특징인지, 현재 장면의 상태인지 파악합니다.
“이 이야기에서” 또는 “지금부터”와 같은 한정을 포함하여 사용자가 명시한 적용 범위를 보존합니다.
범위가 누락된 경우, 가장 좁고 합리적인 해석만 사용하거나 세션 간 기억을 저장하기 전에 되물어봅니다.
동일한 주체 및 범위에 대한 이전 기억이 있는지 확인합니다. 새로운 진술이 실제로 충돌할 때만 이전 기억을 대체합니다.
관련 없는 기억은 온전히 유지합니다. 미라의 눈 색깔을 바꾼다고 해서 그녀의 나이, 관계, 사용자가 선호하는 문체 등이 변경되어서는 안 됩니다.
섹션 4

충돌하는 기억은 어떻게 처리해야 할까요?

검색하기 가장 쉬운 문장을 무작정 우선시하지 말고, 주체, 범위, 시간을 비교하여 충돌을 해결하세요. 일반적으로 동일한 범위 내의 동일한 사실에 대해서는 사용자의 명확하고 나중 시점의 수정이 이전 버전보다 우선해야 합니다. 다른 롤플레이의 세부 사항이 현재 것을 덮어써서는 안 됩니다. 두 기록이 캐릭터의 동일한 버전을 지칭하는지 시스템이 구별할 수 없다면, 분리해 두거나 질문을 해야 합니다.

예를 들어, 이전 기억에는 “미라는 파란색 눈을 가졌다”라고 되어 있고, 나중 메시지에는 “이 평행세계 이야기에서 미라는 초록색 눈을 가졌다”라고 되어 있다고 가정해 보겠습니다. 나중의 진술은 해당 이야기 속 미라의 외모를 업데이트하지만, 기본 캐릭터 프로필을 반드시 바꾸는 것은 아닙니다. 만약 사용자가 “사실, 지금부터는 눈 색깔을 초록색으로 해줘”라고 말한다면 범위가 더 넓어지므로 기본 기록을 업데이트할 수 있습니다. 모순되는 버전을 슬그머니 합쳐서 사용자가 늘 미라를 똑같이 묘사해 왔다고 주장하지 마세요.

기억 시스템에는 불확실성을 처리하는 방법도 필요합니다. 두 기록의 날짜나 적용 범위가 불명확한 경우, 어느 한쪽 세부 사항을 확신을 갖고 제시하는 대신 미해결 상태로 표시하세요. 근거 없는 확신에 찬 회상보다는 짧은 질문이 훨씬 낫습니다.

섹션 5

사용자는 기억된 내용을 어떻게 확인하고 제어할 수 있을까요?

수정 사항을 저장한 후에는 구체적인 변경 사항을 확인해 주세요. “알겠습니다. 이전의 파란 눈 세부 사항 대신, 미라의 일반 캐릭터 프로필에 초록색 눈을 가진 것으로 기억하겠습니다.” 시스템이 더 좁은 범위의 사실을 저장하는 경우 이를 밝히세요. “초록색 망토는 이 장면의 세부 사항으로 유지하겠습니다.” 이러한 확인 과정을 통해 사용자는 범위 오류를 즉시 바로잡을 수 있는 기회를 얻게 됩니다.

기억 보기 인터페이스는 저장된 문구와 그 적용 범위를 알기 쉬운 언어로 표시하고, 이를 편집하거나 삭제할 수 있는 방법을 제공해야 합니다. 제품이 대체된 항목을 표시할 수 있다면, 현재 유효한 항목과 동일하게 보여주지 말고 구식(outdated)으로 라벨을 붙여야 합니다. 이를 통해 사용자는 캐릭터 챗봇이 왜 특정 세부 사항을 언급하는지 쉽게 이해하고, 전체 이야기를 다시 반복할 필요 없이 기록을 수정할 수 있습니다.

저장되지 않은 기억이 존재하는 것처럼 암시하거나, 시스템이 확인할 수 없는 과거 대화를 캐릭터가 기억하고 있다고 주장하지 마세요. 인터페이스나 응답이 저장된 정보에 대해 정직함을 유지하면서도 캐릭터는 자연스럽게 대화할 수 있습니다.

섹션 6

이후 회상은 어떻게 테스트해야 할까요?

수정이 이루어진 동일한 대화에서뿐만 아니라 여러 세션에 걸쳐 지속성을 테스트하세요. [Yang과 Ettinger의 상황 이해 연구](https://aclanthology.org/2023.emnlp-main.394/)에서는 변화하는 환경 상태를 추적하고 보고하는지 테스트하기 위해 고안된 합성 환경을 사용하여 ChatGPT를 평가합니다. 저자들은 시간에 따라 상태를 유지하는 데서 발생하는 오류를 보고하며, 해당 설정에서 지속되지 않는 컨텍스트 내 기억(in-context memory)과 환각된 업데이트에 대한 취약성을 원인 요인으로 논의합니다. 이는 2023년에 발표된 해당 환경 내 ChatGPT에 대한 통제 연구이며, 현재의 모든 모델, 제품 또는 가상 캐릭터 시스템에 대한 증거는 아닙니다.

캐릭터 챗봇에 특화된 테스트는 소수의 스크립트 기반 대화를 활용할 수 있습니다:

의도한 적용 범위에 맞춰 각 테스트를 평가하세요: 올바른 검색, 이전 정보의 올바른 대체, 장면과 일반 사실의 분리, 불확실성에 대한 정직한 처리 등이 기준이 됩니다. 명확한 설명을 요청하는 것이 예상 답변인 케이스도 포함하세요. 저장된 메모가 모호할 때 추측하기를 안정적으로 거부하는 시스템이, 연속성을 꾸며내는 시스템보다 해당 사례를 더 훌륭하게 처리하는 것입니다.

기본 캐릭터 사실을 설정하고, 이를 수정한 뒤, 세션을 종료하고 새 세션에서 이에 대해 질문합니다.
장면 전용 세부 사항을 저장하고 그것이 영구적인 캐릭터 특성이 되지 않는지 확인합니다.
선호도를 변경하고, 명시된 범위 내에서 이전 선호도가 이후 답변을 더 이상 유도하지 않는지 확인합니다.
동일한 캐릭터의 두 번째 버전을 도입하고 두 버전이 서로 구분되어 유지되는지 확인합니다.
관련 없는 세부 사항에 대해 질문하고 수정 사항이 다른 기억을 변경하지 않았는지 확인합니다.
사용자가 이전에 무엇을 말했는지 묻고, 시스템이 답변을 정당화하기 위해 이전 대화를 지어내지 않는지 확인합니다.
섹션 7

신뢰할 수 있는 수정-회상 경로

수정 사항은 명확한 경로를 거쳐야 합니다: 주체를 식별하고, 적용 범위를 보존하며, 충돌하는 기억을 업데이트하고, 저장된 변경 사항을 보여주며, 이후 응답에서 근거 없는 과거사로 확대 해석하지 않고 해당 내용을 검색하는지 확인하는 것입니다. 이러한 절차는 가상 세계에 대한 통제권을 사용자에게 남겨두면서도 캐릭터 챗봇이 턴과 세션을 넘어 일관성을 유지할 수 있는 실용적인 방법을 제공합니다. 연구들은 기억 업데이트와 상태 추적을 진지하게 다룰 것을 뒷받침합니다. 여기에 제시된 구체적인 워크플로는 디자인 권장 사항이며, 그 동작은 실제로 사용될 제품 내에서 검증되어야 합니다.

관련 글

이 주제 더 살펴보기