17장. 장기 기억 관리
기억하면 안 되는 것과 기억의 근거
한 줄 요약
파일에 저장하는 순간 두 가지 질문이 따라옵니다. 저장하면 안 되는 것은 무엇인가, 그리고 저장되는 내용은 어디서 오는가. 앞의 질문의 답은 민감정보이고, 뒤의 질문의 답은 "대화에서 온다, 그러니 대화가 근거 위에 있어야 한다"입니다.
1. 저장하면 안 되는 것 — 민감정보
대화에는 카드번호, 계좌번호, 비밀번호, 주민등록번호가 스쳐 지나갈 수 있습니다. 고객이 무심코 채팅창에 적기도 합니다. 이런 민감정보(sensitive information) 가 프로필 파일에 그대로 들어가면, 파일 하나가 새는 일이 곧 개인정보 사고가 됩니다.
8장의 원칙은 "모델에게 준 것은 답변에 나올 수 있다고 가정한다"였습니다. 이번 장의 원칙은 그 저장판입니다.
저장한 것은 샐 수 있다고 가정합니다. 새면 안 되는 것은 저장하지 않습니다.
2. 방어는 두 겹으로 한다
| 겹 | 방법 | 성격 |
|---|---|---|
| 1차 | 프로필을 뽑는 프롬프트에 "민감정보는 절대 포함하지 마라"고 적는다 | 모델이 따르는 규칙 |
| 2차 | 저장 직전에 코드로 카드번호 모양의 숫자열 등을 검사해 걸러 낸다 | 정한 모양은 반드시 걸러진다 |
두 겹을 쓰는 이유는 10장에서 본 것과 같습니다. 프롬프트의 규칙은 모델이 따를 가능성이 높은 것이고, 반드시 지켜져야 하는 일은 코드로 한 번 더 막습니다.
이번 장의 코드에는 1차가 들어 있습니다. 2차는 실습문제 1에서 직접 붙여 봅니다.
3. 기억은 대화를 옮겨 적는다
요약과 프로필 추출이 하는 일을 다시 봅니다. 둘 다 대화에 있던 내용을 옮겨 적는 일입니다. 대화에 있던 말이 요약으로, 요약과 원문이 프로필로, 프로필이 다음 방문의 시스템 프롬프트로 이어집니다.
| 단계 | 일어나는 일 |
|---|---|
| 1 | 상담원이 고객에게 금액을 안내한다 |
| 2 | 그 말이 대화 이력에 남는다 |
| 3 | 요약할 때 "안내한 금액"으로 요약에 들어간다 |
| 4 | 대화가 끝날 때 프로필에 저장된다 |
| 5 | 다음 방문 때 프로필이 시스템 프롬프트에 들어간다 |
| 6 | 새 대화의 상담원이 그 금액을 이미 아는 사실로 받아 다시 말한다 |
1번에서 한 말이 6번까지 그대로 갑니다. 그래서 기억의 품질은 요약 기술이 아니라 1번의 말이 어디서 왔는가에 달려 있습니다.
4. 그래서 기억은 근거 위에 얹는다
| 대화의 내용이 나온 곳 | 그 대화를 요약·저장한 기억 |
|---|---|
| 도구로 조회한 주문 데이터 (6~8장) | 믿을 수 있다 |
| 정책 문서에서 찾은 조항 (12~15장) | 믿을 수 있다 |
| 프롬프트에 적어 준 정책 발췌 (이번 장) | 믿을 수 있다 |
기억은 근거 위에 얹는 층이지, 근거를 대신하는 층이 아닙니다.
이번 장의 코드는 이 원칙을 두 곳에 넣었습니다.
하나, 상담원에게 근거를 준다. 이번 장의 상담원에게는 도구도 정책 검색도 없습니다. 그래서 시스템 프롬프트에 정책 발췌를 직접 적고, 발췌에 없는 것은 말하지 않게 했습니다.
금액·기간·절차는 아래 [정책 발췌]에 있는 내용만 안내합니다.
발췌에 없는 금액·기간·절차·처리 상태는 지어내지 않고 "확인 후 안내드리겠습니다"라고 답합니다.
[정책 발췌] 반품·교환·환불 정책 제4조 (교환)
- 동일 상품의 다른 색상·사이즈 교환은 수령일로부터 7일 이내 신청할 수 있다.
- 단순 변심 교환의 왕복 배송비는 6,000원이며 고객이 부담한다.
교환 배송비를 물으면 이 발췌의 6,000원으로 답하고, 그 6,000원이 요약과 프로필로 이어집니다.
둘, 기억에 성격을 적어 준다. 프로필이 알려 주는 것은 "이 고객이 지난번에 무엇을 문의했는가" 까지입니다. 그 건이 지금 어떤 상태인가는 프로필이 아니라 주문 데이터를 조회해야 압니다. 그래서 프로필을 프롬프트에 넣을 때 "지난 상담에서 적어 둔 기록입니다. 현재 처리 상태는 아니므로 …"라고 함께 적습니다(앞 절).
정책 발췌를 프롬프트에 손으로 적는 방식은 이번 장까지입니다. 주문 도구와 정책 검색을 한 흐름 안에서 함께 쓰는 일은 18장부터 합니다.
핵심 정리
- 저장한 것은 샐 수 있다고 가정하고, 민감정보는 저장하지 않습니다.
- 방어는 프롬프트(1차)와 코드 검사(2차) 두 겹으로 합니다.
- 요약과 프로필 추출은 대화에 있던 내용을 옮겨 적습니다. 대화의 말이 다음 방문의 답까지 이어집니다.
- 그래서 상담원에게 근거(정책 발췌) 를 주고, 근거에 없는 것은 말하지 않게 합니다.
- 프로필에는 "지난 상담의 기록" 이라는 성격을 함께 적어, 현재 상태와 섞이지 않게 합니다.