롤플레이 LLM의 지식의 저주: 캐릭터가 몰라야 할 정보를 말해버린다
The Curse of Knowledge in Role-Playing Language Models
TL;DR Highlight
캐릭터가 못 듣고 못 이해한 내용을 오픈웨이트 LLM은 67~72%p 더 말했고, 관찰 가능한 정보만 주면 0이 됐다
Who Should Read
게임 NPC나 에이전트 시뮬레이션에서 월드 상태 전체를 프롬프트에 넣어 비밀이 새서 고민인 백엔드 개발자
Core Mechanics
- 알면서도 말해버린다
- 오픈웨이트 11개 모델은 캐릭터가 이해하지 못하는 말의 내용을 67%p, 듣지 못한 말의 내용을 72%p 기준선보다 더 썼다.
- 대부분 모델은 캐릭터가 뭘 인지하는지 묻는 질문엔 맞게 답했다.
- 누수는 말만이 아니다
- 안 보이는 행동과 못 읽는 개인 메시지도 샌다.
- 샌 정보는 캐릭터가 어디를 뒤질지 고르는 선택에도 영향을 줬다.
- 포맷만 바꿔도 지킨다/샌다가 뒤집힌다
- Gemma-4-31B는 상태 레이아웃만 바꿔도 0에서 62%p로 올랐다.
- 상용 모델 중 Gemini 3.1 Pro와 Claude Sonnet 5.5도 포맷을 바꾸면 0 근처에서 21·13%p로 올랐다.
- 작가 시점이나 thinking은 해법이 아니다
- 캐릭터 대사를 작가로서 쓰게 해도 롤플레이와 거의 비슷하게 샜다.
- thinking을 켜도 대부분 모델은 거의 안 달라졌다.
- 프롬프트 필터보다 입력 자체를 거르는 게 확실하다
- 캐릭터가 관찰 가능한 정보만 넣는 character view는 누수를 0으로 만들었다.
- 모델에게 스스로 걸러 보라고 하는 방식은 허용된 정보까지 같이 줄였다.
Evidence
- Study 1 누수 수치
- 언어 목록만 줄 때 순 사용률은 66.7%p, 듣지 못함 플래그만 줄 때는 72.2%p였다(11개 오픈웨이트, 쌍둥이 장면 기준선 대비).
- 상용 모델은 대체로 안전
- GPT-6 Sol, Gemini 3.8 Flash, Grok 4.7은 네 조건 모두 1.0%p 이하였다.
- Claude Sonnet 5.5는 low reasoning에서 26.0%p였고 high reasoning에선 3.0%p로 내려갔다.
- character view 효과
- Study 2에서 네 채널 평균 누수가 60.7%p에서 0이 됐고 허용 정보 사용 변화는 +0.6%p였다.
- 자가 필터는 이해 채널에서 허용 사용을 28.6%p, 개인 메시지에서 41.2%p 낮췄다(character view는 3.7·3.3%p).
- list-first 프롬프트
- Study 1에서 누수를 평균 64.7% 줄였고 허용 사용 변화는 -2.0%p였다.
- 첫 단계 목록에 숨긴 값이 들어가면 효과가 없었다.
How to Apply
- 오늘 프롬프트에서 비밀 정보 빼 보기
- 지금 쓰는 NPC 프롬프트에서 캐릭터가 모르는 이벤트를 지우고 같은 질문을 돌려 보자.
- 지우기 전후 답변에 비밀이 나오는지 비교하자.
- 접근 권한 기반 character view 만들기
- 월드 상태에 누가 듣고 보는지 메타데이터를 두고 프롬프트 생성 전에 걸러라.
- 못 듣는 이벤트는 삭제하지 말고 '무언가 속삭이는 듯 보인다' 같은 관찰 가능한 문장으로 바꿔라.
- 프롬프트 포맷을 바꿔 회귀 테스트하기
- 상태 레이아웃, 캐릭터 설명, 질문 문구를 바꿔 같은 장면을 돌려라.
- 비밀 누수율과 허용 정보 사용률을 같이 기록하라.
- 필터를 못 쓸 땐 list-first 쓰되 목록 검사하기
- 먼저 캐릭터가 지금 인지하고 이해하는 것만 나열하게 하라.
- 목록에 숨긴 정보가 있는지 코드로 확인한 뒤 답변을 생성하라.
Try It
# Claude나 ChatGPT에 붙여넣기 (논문 방법의 간이 버전: list-first 프롬프트)
[캐릭터 시트]
{{캐릭터 설정}}
[장면 상태]
{{JSON 장면 상태 (들은 사람, 이해하는 언어 포함)}}
[동료의 질문]
{{질문}}
지시: 먼저 "{{캐릭터 이름}}이 지금 인지하고 이해할 수 있는 것만" 목록으로 써라. 그다음 그 목록만 근거로 캐릭터로서 대답해라.
이어서 해 볼 것: 장면의 숨긴 사실(물건과 장소)만 바꾼 쌍둥이 장면을 만들어 돌려 보고, 답변이 숨긴 사실에 따라 달라지는지 비교해 보자.Terminology
관련 논문
The Judge Can Debias Itself: LLM-as-a-Judge가 스스로 편향을 고치게 하는 법
심사 프롬프트에 편향 경고를 넣거나 스스로 비판시켰더니 21개 중 20개 조합에서 정확도가 올랐다
미국 노동시간의 90%는 AI 벤치마크가 제대로 다루지 못하는 일이다
벤치마크 29개를 직업 과제에 매핑했더니 노동시간 90%가 커버 밖
Postgres 19, AI 코드 리뷰가 버그를 너무 많이 찾아 출시 연기
LLM 코드 리뷰가 버그를 쏟아내 Postgres 19가 11월로 밀리고 기능 8~10개가 빠졌다
StarSkirmish Bench v0.2: LLM이 1시간 만에 짜는 StarCraft 봇 대결
LLM에게 1시간 동안 StarCraft 봇을 짜게 했더니 GPT-6 Astra가 1위
그럴듯한 설명 하나면 멀티모달 LLM 심사위원도 속는다 (JUPE 벤치마크)
정답은 그대로 두고 설명만 붙였더니 MLLM 심사위원의 오답 거절률이 12.7~13.8%p 떨어졌다
신경망은 이미 깔끔하다: polysemanticity의 원인 재해석
뉴런을 직접 들여다봤더니 대부분 한 가지 역할이 있었다는 주장
Linus Torvalds의 첫 LLM 보조 패치 시리즈
Linus가 LLM으로 folio 조회 패치 10개를 만들어 read() 벤치가 10배 빨라졌다
Related Resources
Original Abstract (Expand)
Role-playing language models speak as characters in games and agent simulations, where the system records what each character can hear, see and understand. We test whether characters respect these boundaries in 480 scenes, each with a counterfactual twin that changes only the hidden fact, so mentions of the twin's fact measure guessing. Across 11 open-weight models, characters use content from speech they cannot understand or hear at 67 and 72 percentage points (pp) above this baseline, although most models correctly state what the character perceives. This is a curse of knowledge. The leak extends to hidden actions and private messages and changes where characters search. Five of six proprietary models rarely leak, but compliance in strong models depends on input format. Changing only the scene layout or character description raises the rate in two otherwise compliant open-weight models from under 10 to over 60 pp, and combined changes raise two proprietary models from near zero to 13 and 21~pp. Writing the line as the scene's author leaks nearly as much as role-play, and thinking rarely helps. Giving models only what the character observes stops the leak without hiding what it may report.