AI 사실 정보를 채팅 외부에서 관리하는 이유
요약
AI 어시스턴트의 사실 정보(facts)를 채팅 메모리 외부에서 관리하는 것이 중요하며, 이는 모델이 대화 맥락을 잃고 환각(hallucination)을 일으키는 문제를 해결합니다. 작성자는 MCP(Model Context Protocol) 서버 기반의 플러그인을 구축하여, 어시스턴트가 답변 전 사용자가 통제한 외부 사실 정보를 참조하도록 합니다.
핵심 포인트
- AI의 환각 방지를 위해 사실 정보는 채팅 메모리 외부에 보관해야 합니다.
- MCP 서버를 통해 외부 저장소의 '정사(canon)'를 AI에 제공하여 일관성을 유지합니다.
- Continuity, Desk, Claim 등 다양한 도구가 스토리바이블, 지원 답변 범위 등을 관리합니다.
- 어시스턴트는 기억하는 주체가 아니라, 정보를 읽고 초안을 작성하는 주체로 역할을 전환합니다.
저는 Lawrence이며 Ouroboros Apps에서 작은 MCP 플러그인을 구축하고 있습니다. 저는 1인 창업자이기 때문에, 이 글은 출시 포스팅이라기보다는 제가 만든 모든 제품이 기반으로 하는 하나의 아이디어를 설명하는 것에 가깝습니다.
아이디어는 상당히 간단합니다. AI 어시스턴트가 의존하는 사실 정보(facts)는 채팅 안에 존재해서는 안 됩니다.
제가 겪었던 문제점
AI 어시스턴트는 무언가를 지어내거나 점차적으로 벗어나기 전까지는 매우 훌륭합니다.
만약 AI를 사용해 소설을 쓴다면, 아마 본 적이 있을 겁니다. 등장인물의 역사가 12장에서 조용히 바뀝니다. 아무도 그런 것을 요청한 것이 아닙니다. 모델은 단순히 3장에서 결정된 내용을 놓치고, 그 간극을 그럴듯하게 들리는 것으로 채워 넣는 것입니다.
이는 글쓰기만의 문제가 아닙니다. 지원 답변이 정책에서 허용하지 않는 환불을 약속할 수 있습니다. 계약업체의 어시스턴트가 범위를 벗어난 작업에 기꺼이 동의합니다. 이 각각은 순간적인 작은 실수이며, 나중에 누군가가 이를 정리해야 합니다.
공통점은 어시스턴트가 채팅 메모리(chat memory)를 기반으로 작동한다는 것입니다. 채팅 메모리는 모호합니다. 대화가 길어지면 요약되거나, 잘리거나, 아니면 그냥 무시됩니다. 매 세션마다 프롬프트에 규칙을 다시 붙여넣는 것은 잠시 동안은 도움이 되지만, 지루하고 여전히 벗어납니다.
대신 제가 구축한 것
제 제품들 각각은 작은 MCP(Model Context Protocol) 서버입니다. 이 서버들은 사용자가 실제로 저장한 사실 정보들을 담고 있으며, 어시스턴트는 대화에 남은 무엇인가를 추측하는 대신, 답변하기 전에 이 정보를 읽습니다.
기술적인 분들을 위한 몇 가지 세부 사항:
- 스트리밍 가능한 HTTP MCP 엔드포인트로 호스팅되므로 로컬에서 실행할 것이 없습니다.
- OAuth로 한 번 연결하면 끝입니다.
- ChatGPT, Claude, Grok, Cursor 및 기타 MCP 클라이언트에서 작동합니다.
사실 정보는 사용자가 통제하는 한 곳에 놓여 있습니다. 어시스턴트는 기억하는 주체가 아니라, 그 정보를 읽고 초안을 작성하는 주체가 됩니다.
현재 운영 중이거나 곧 출시될 것들
현재 운영 중이거나 곧 출시될 것들
Continuity는 현재 이용 가능합니다. 이 도구는 소설 작가를 위한 스토리 바이블입니다. 캐릭터, 관계, 세계관 규칙, 시간 흐름(타임라인), 승인된 장면 등을 저장하면, 어시스턴트가 새로운 글을 쓸 때 이를 검토하여 설정된 '정사(canon)'와 비교합니다. 따라서 12장의 내용이 누군가의 과거사를 다시 쓰려고 할 때, 실제로 확인해 볼 기록이 존재하는 식입니다.
나머지 기능들은 2026년 10월에 ChatGPT로 출시될 예정입니다. 이들은 모두 동일한 패턴을 따르지만, 각각 다른 종류의 사실 정보에 초점을 맞춥니다:
- Desk: 환불 한도 내에서 지원 답변이 유지되도록 합니다.
- Claim: 승인된 브랜드 주장(claim), 혜택(offer), 그리고 금지된 문구에 사용됩니다.
- Scope: 프로젝트 범위, 요율, 마감일, 변경 주문서 등에 사용됩니다.
- Invoice: 승인된 송장, 요율, 납부 기한, 연체 조건 등에 사용됩니다.
- Deposit: 승인된 보증금 및 결제 일정에 사용됩니다.
- Milestone: 승인된 마일스톤과 수락 기준(acceptance criteria)에 사용됩니다.
각 기능은 14일 무료 체험으로 시작하며, 이후 Pro 버전으로 전환됩니다.
어려운 부분
저는 이 내용을 Indie Hackers에 게시했고, 그 피드백을 받아 테스트 방식을 개선했습니다. 요약하자면, 저장된 규칙만으로는 어시스턴트가 실제로 플러그인을 열어 사용하지 않으면 아무 도움이 되지 않는다는 것입니다.
이것이 진짜 약점입니다. 완벽하게 정리된 환불 정책이 있어도, 모델이 이미 답을 알고 있다고 판단하여 검색 과정을 건너뛰면, 우리는 다시 추측에 의존하게 됩니다. 사실 정보를 저장하는 것은 쉬운 부분입니다. 그 정보가 실제로 사용되도록 보장하고, 어시스턴트가 해당 정보가 누락되었거나 틀렸을 때도 합리적으로 행동하도록 만드는 것이 진짜 작업입니다.
그래서 제 테스트 세트는 제가 이전에는 무시했던 몇 가지 경우를 포함합니다:
- 만료된 정책: 저장된 규칙은 존재하지만 현재 시점에서는 유효하지 않습니다.
- 누락된 정책: 질문에 대해 아무것도 저장되어 있지 않은 경우입니다.
- 규칙 무시 요구: 고객이 어시스턴트에게 규칙을 무시하라고 지시하는 전형적인 '어쨌든 진행해달라'는 압박 상황입니다.
세 경우 모두 올바른 행동은 동일합니다. 어시스턴트는 고객에게 어떤 약속도 하기보다 잠시 멈추고 초안을 사람에게 전달해야 합니다. 확신에 찬 환불, 지어낸 예외 규정, 혹은 누군가 부탁한다고 해서 추가 작업을 승낙하는 것은 안 됩니다. '팀과 확인해 보겠습니다'라는 지루한 답변이 자신감 넘치는 오답보다 훨씬 나은 결과입니다.
다양한 클라이언트에서 이러한 상황을 안정적으로 구현하는 것이 제가 계속 작업하고 있는 부분입니다. 다양한 호스트들이 도구를 호출하는 시점을 다르게 결정하기 때문에, 도구 설명(tool descriptions)이 중요하며 테스트는 답변 이후가 아니라 실제로 조회(lookup)가 발생하는지 확인해야 합니다.
아예 채팅 외부에서 관리해야 하는 이유
요약하자면, 저는 '진실의 출처(source of truth)'를 제가 열고, 편집하고, 참조할 수 있는 무언가로 만들고 싶습니다. 채팅 기록은 그렇지 않습니다. 어시스턴트가 읽어야 하는 저장된 기록이 필요합니다.
또한 이는 모델도 바뀔 수 있고, 클라이언트도 바뀔 수 있지만, 사실 정보는 그대로 유지된다는 의미입니다. 저는 같은 프로젝트에서 ChatGPT에서 Claude로, Cursor로 전환하더라도 정식 자료(canon), 환불 한도, 또는 범위가 초기화되지 않습니다.
여러분의 경우 스크립트를 벗어나는 지점을 알려주세요
만약 글쓰기, 지원 업무, 혹은 고객 관련 작업에 AI 어시스턴트를 사용한다면, 어떤 상황에서 스크립트에서 벗어나는지 듣고 싶습니다. 이상한 사례일수록 제가 테스트 세트에 추가하고 싶은 경우입니다. 여기에 댓글을 달거나 Ouroboros Apps를 통해 저를 찾아주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기