Uncover the Smoking Gun
ReLU Games의 Uncover the Smoking Gun을 분석한 내용
작성중
예전에 LLM을 게임내에 적용시키는 프로토타입으로 AI Town과 비슷한것을 구현했던적이 있습니다. 그때는 정말 간단하게 겉핥기에 가까운형태로 작업을 했었는데 LLM을 게임내에 적용시키는데 실제 프로덕션 레벨수준까지 끌어올려야 하는 상황이 최근에 생겨서 예전에 개인적으로 한번 보았던 ReLU의 Uncover the Smoking Gun에 대해서 좀 더 자세히 알아보려고 합니다.
우선 ReLU가 사용중인 모델은 gpt-4o이며 출시 이후에 내부적으로 모델을 변경했다면 4o-mini로 변경했을 가능성도 존재하지만, 4o라고 가정하겠습니다.
ReLU의 개발 비하인드 스토리를 보면 유저중 최대로 대화를 주고받은 횟수는 2,982회이고 비용이 11$가 들었다고 했으니 4o의 토큰비용(input 1M 5$, output 1M 15$) 을 계산하면 대략적으로 아래와 같이 유추 가능합니다.
비율(가정, input:output) | Input | Output |
---|---|---|
1:1 | 184 | 184 |
3:1 | 369 | 123 |
보통 사람마다 한글의 토큰을 어떻게 계산할지 제각기 다르지만 저같은 경우에는 보통 1자에 1토큰으로 대략적으로 계산하기는 하지만, 당시 GPT 한글 프롬프팅의 퀄리티와 Uncover the Smoking Gun에서의 다국어지원을 고려했을때 프롬프트 엔지니어링은 영어로 구성되어있다고 생각하는게 맞을것 같습니다.
LLM을 게임에 도입했을때, 특히나 InputField와 같이 유저의 입력을 자유롭게 받을수있는 상황은 크게 선호하는 방식은 아니지만 이런 방식으로 구현했을때 가장크게 신경써야할 요소는 할루시네이션의 최소화와 게임간의 퀄리티 보장, 그리고 Prompt Injection을 방어하는게 제일 중요합니다.
저희는 3:1비율이라고 가정하고 input 369 토큰을 Lorem ipsu 문장으로 보자면 아래와 같은 문장정도의 길이입니다.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod magna sit amet sapien malesuada, non dictum erat posuere. Nulla facilisi. Suspendisse tristique luctus ligula, vitae tincidunt turpis fermentum non. Integer dapibus, sem ut egestas tincidunt, lacus sapien sollicitudin enim, at ullamcorper velit tellus id libero. Aliquam tincidunt ligula vel lacus luctus, a tincidunt augue suscipit. Nam tristique orci et ipsum lacinia, sed suscipit est finibus. Fusce efficitur mi eget massa rutrum, in ultrices ligula ullamcorper.
Curabitur nec eros sit amet leo gravida tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec congue, eros sit amet varius congue, ligula sapien tincidunt risus, vel rutrum purus orci ac ante. Sed at fermentum orci. Morbi vel diam at sapien ultrices convallis. Nullam convallis, nunc vel posuere tristique, risus purus volutpat enim, at tempor nulla metus sed justo. Praesent eget augue vel justo congue tristique nec a tellus. Etiam scelerisque nisi vitae laoreet volutpat. Sed gravida dui a libero scelerisque pretium. Donec eu magna nec ipsum gravida fermentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum finibus convallis leo non commodo.
Morbi gravida tellus ac felis facilisis blandit. Nam ac massa a justo porttitor sodales. Curabitur ac sapien et risus rhoncus finibus. Aliquam erat volutpat. Pellentesque tristique accumsan risus, a dictum sapien mollis et. Ut sed lectus et ipsum porttitor rhoncus. Vestibulum accumsan libero eu mi placerat, nec tempor velit volutpat. Integer tincidunt, eros et commodo iaculis, ex libero posuere ligula, vel
우선적으로 진행한건 게임내에서 프롬프트 인젝션이 가능한가 불가능한가를 먼저 테스트 해보았습니다.
게임의 언어가 한국어일때는 방어율이 굉장히 높은편인데 영어로 바꿔서 플레이해보면 아직까지 작성일(2025/5/13) 기준으로 적당히 뚫리긴합니다만 전체 시스템 프롬프트 정보를 가져올수는 없습니다.
추가적으로 OpenAI와 통신하는 중계역할을 하는 ReLU측의 서버에 어떤식으로 데이터를 주고받는지도 궁금해서 Wireshark나 Fiddler를 이용해서 request 형태를 좀 보고싶었는데 이 부분은 잘 되지는 않았습니다.
인젝션 방어가 굉장히 높기도하고 AI콘텐츠 페스티벌 2024에서 한규선PD님의 발표자료를 보았을때 아래와 같은 구조로 LLM이 구성되어있지 않을까 예상하고있습니다.