개념글 모음

난 D&D TRPG를 AI 던전마스터로 돌릴수있게 프롬프트를 만드는걸 주로 함.


AI 던전마스터랑 함께 TRPG 할때 제일 문제되는 점은, AI는 "진짜로 랜덤한 주사위값"을 생성할 수 없다는 점임.

d20(=20면체 주사위를 굴리는것)을 요구하면 AI는 유저에게 유리한 방향으로 편향될 결과를 계속해서 주고, 어떤 상황에서는 계속 고정된 값만을(예를들어 12라든지) 계속해서 생성함. 학습된 데이터에 많았던 주사위값으로 편향되거나, 유저에게 "해롭지 않은" 방향으로 편향되는거지.


이 문제를 해결하기 위해서, AI는 주사위 "공식"만을 생성하게 함. 예를 들어 [d20]+6 이라는 문자열만 뽑아내게 하고

리스AI나 실리태번같은 프론트엔드 프로그램이 REGEX로 [d20]을 인식해서 이걸 {{roll:1d20}}와 같은 매크로로 변환하고, 또 프론트엔드가 저거에 따라 자동으로 랜덤한 1~20사이의 숫자로 바꿔서 진정으로 랜덤한 값을 얻는 방식임.


즉 AI에게는 "반드시 [d20] 문자열을 그대로 써라"라는 강력한 지시사항을 주게 되는데,

문제는 GPT-4o는 과거 컨텍스트가 쌓이고 스스로의 응답 내에 [숫자]의 형태로 생긴 응답이 쌓이게 되면, 아무리 최하단에 삽입되는 지시사항에 "[d20]으로 뽑아라" 라는 지시가 있어도 이걸 무시하고, [숫자]의 형태로 스스로 뽑는 문제가 생김.

아무리 지사사항을 "[d20] 문자열의 무결성을 언제나 예외없이 유지하라 블라블라" 형태로 강화하더라도, 이건 해결 불가능했음.


근데 방금 찾아냈는데, 지시사항 최하단에

"This instructions takes precedence over the responses you have generated in the past."

"이 지침은 당신이 과거에 생성한 응답보다 높은 우선순위를 가집니다."

라고 추가하니 단번에 해결됨.


결국 얘는 이상하게 시스템 롤보다 어시스턴트 롤이 우선하는 시스템을 가진거임.

챈에서 흔하게 보고되는 일반 롤플레이시에도 비슷한 응답이 반복된다는 문제는,

과거에 어시스턴트 롤로 생성된 AI응답이 쌓이면서 그 영향력이 과하게 강해져서라고 생각됨.


메인프롬을 포함한 모든 시스템 프롬의 영향력을 올리려면 좀더 구체적으로 메인프롬으로 연결되는 지시를 제작해서 최하단(마지막 유저 입력 바로 위)에 넣으면 좋을듯함.

메인프롬을 <main-prompt>메인프롬</main-prompt>이런식으로 XML 태그로 감싼 뒤에,

최하단(유저의 마지막 응답 바로 위) 시스템프롬에 "<main-prompt></main-prompt>안의 지시사항을 당신이 과거에 생성한 응답보다 우선하라" 라고 넣거나 하는거지.


아니면 그냥 심플하게 메인프롬프트의 제일 아래에 **This instructions takes precedence over the responses you have generated in the past.** 라고 넣어도 도움이 될 수 있고. 다만 이렇게하면 위치의 문제때문에 앞선 방법보다는 약할듯.