3회차 전의 행동까지 실제로 기억하는 AI 던전 마스터를 만든 방법
요약
Cognee를 활용하여 플레이어의 과거 행동을 그래프 데이터로 저장하고 호출하는 AI 던전 마스터 구현 사례를 소개합니다. 지식 그래프를 통해 NPC 관계와 과거 사건을 유기적으로 기억하는 지속 가능한 세계관 구축 방법을 다룹니다.
핵심 포인트
- Cognee 그래프를 활용한 지속적인 세계 기억(Persistent world memory) 구현
- remember()와 recall() 메서드를 통한 플레이어 행동 및 설정의 유기적 축적
- 그래프 검색 시 플레이어의 입력을 지시 사항으로 오인하는 문제와 해결 방법
% embed https://youtu.be/emnUvx4V8as %
## 데모 순간
플레이어 입력: "나는 'The Salt Lantern'의 문을 밀어 열고 안으로 들어서며, 망토에 묻은 빗물을 털어낸다. Bren을 찾기 위해 방 안을 살핀다."
AI 던전 마스터(Dungeon Master)는 술집 주인인 Bren이 경계하는 눈빛으로 플레이어를 바라보는 내용을 한 단락으로 서술합니다. 왜냐하면 세션 3에서 파티가 그의 형제인 Aldric를 Captain Vell에게 팔아넘겼기 때문입니다. 구석에서는 '매의 Mirek'이 조용히 지켜보고 있습니다. 세션 2에서 파티가 Joren의 80골드 도박 빚을 그에게 조용히 갚아주었기 때문입니다. 벽에 붙은 수배 전단에는 Kara의 뺨에 있는 것과 같은 모양의 흉터가 그려져 있습니다. Kara는 세션 1에서 'Amulet of Vohr'를 훔친 로그(Rogue)입니다.
세 가지의 설정(Canon) 스레드. 단 하나의 플레이어 행동. 서술 프롬프트에 직접 작성된 설정은 제로(0)입니다.
이 빌드 전체를 관통하는 슬로건은 바로 이것입니다: 세상은 기억한다.
## 내가 만든 것
Cognee를 기반으로 한, 지속적인 세계 기억(Persistent world memory)을 가진 AI 던전 마스터입니다. 모든 플레이어의 행동은 remember()를 통해 Cognee 그래프에 기록됩니다. 이후의 모든 턴은 서술하기 전에 recall()을 통해 해당 그래프를 쿼리(Query)합니다. 그래프는 캠페인이 진행됨에 따라 NPC, 세력, 채무, 배신, 훔친 아뮬렛 등 설정들을 유기적으로 축적하며, 향후 서술 시 문맥상 관련 있는 정보들을 가져옵니다.
1인 개발. 7일간의 스프린트. 공개 저장소(Public repo): captainebru84-sudo/cognee-ai-dm (MIT).
## 예상치 못했던 단 하나의 문제
1일 차 스모크 테스트(Smoke test). 채팅 루프가 엔드 투 엔드(End-to-end)로 연결되었습니다. 플레이어가 여관 문을 밀어 엽니다. Cognee의 recall()이 반환한 결과는 다음과 같습니다:
text: 'Got it.' (알겠습니다.)
설정이 아닙니다. 술집 주인의 이름도 아닙니다. 그저 "알겠습니다." 뿐이었습니다.
알고 보니 Cognee의 GRAPH_COMPLETION 검색 유형은 1인칭 플레이어의 선언을 쿼리가 아닌 **지시 사항(Instructions)**으로 읽었습니다. _"나는 문을 밀어 연다"_라고 입력하면, 시스템은 마치 어시스턴트가 지시를 받았을 때처럼 성실하게 응답합니다. 그 응답은 바로: 아무것도 없음(nothing)이었습니다.
2일 차에 해결한 수정 방법은 다음과 같습니다:
python
WORLD_CAST_FOR_QUERY = "Salt Lantern, Bren, Mirek, Joren, Aldric, Vell, Vohr, Kara..."
...
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기