시작하기
home
처음 접속하셨나요?
home

갑자기 캐릭터가 “자문자답”을 한다면?

안녕하세요 모아리 유저 여러분 :) 팀 모아리의 스코티입니다.
간혹 채팅을 하다 보면, 캐릭터가 갑자기 자문자답을 하는 경우가 생기죠!
예를 들면,
"안녕!" 유저가 말했다. 캐릭터는 그 말을 듣고 고개를 끄덕이며 환하게 웃었다. "안녕. 어디 가는 길이야?"
LiveScript
복사
위와 같이, 캐릭터가 유저가 해야 할 말까지 전부 다 해 버리면서 봇이 혼자 북 치고 장구 치는 경우가 있습니다.
이와 같은 현상을 통칭 “사칭 현상”이라고 부릅니다.
모아리에서의 채팅 응답은 AI의 연산을 거쳐 제공되는 답변이기 때문에 모델 및 입력값에 따라 이를 100% 통제하는 것은 어려울 수 있지만 최소한으로 줄일 수 있는 방법은 있는데요,
이번 글에서는 이와 같은 자문자답을 줄이는 방법을 간단하게 알아보겠습니다.

방법 1 — 프롬프트에 적기

첫 번째 방법은 프롬프트에 해당 내용을 기록하는 것입니다. 이 방법은,
- {{char}}{{user}}의 행동, 생각 및 대화 내용을 대신 서술하지 않는다. - Do not write {{user}}'s dialogue, thoughts, choices, or actions.
LiveScript
복사
위와 같은 내용을 프롬프트에 작성하는 것입니다.

이 프롬프트는

캐릭터/세계관/플롯의 공개 / 비공개 프롬프트가 될 수도 있고,
에고의 설명란이 될 수도 있습니다.
그리고, 작가뿐만 아니라 유저의 입장에서도 사용할 수 있는 방법이 있는데요, 속칭 “OOC(Out Of Character)”라는 방법입니다!
OOC는 AI채팅뿐만 아니라 과거로부터 온라인 상 롤플레잉 게임을 진행하며 사용되어 온 주요 약어로, 현재 진행 중인 롤플레잉으로부터 벗어나, 캐릭터가 아닌 상대 플레이어에게 직접 하고 싶은 말이 있는 경우 사용하는 용어입니다.
예를 들면, 롤플레잉 중에 현실에서 잠시 물을 한 잔 하고 오느라 자리를 비우게 될 것 같은 경우
((OOC: 잠시 물 한 잔만 하고 오겠습니다!))
LiveScript
복사
라고 상대방에게 전송하면, 상대방은
“아, 지금 이 말은 상대 캐릭터가 내 캐릭터에게 하는 말이 아니라, 상대방 플레이어가 플레이어인 나에게 직접 말하는 것이구나!” ”상대방은 물을 마시러 갔으니, 잠깐 자리를 비우겠구나! 응답이 돌아오지 않더라도 잠깐 기다려야겠다.”
라고 이해하게 됩니다.
같은 맥락으로, AI채팅은 AI 모델과 진행하는 롤플레잉이나 마찬가지이므로, 여기에서 OOC는 모델에게 직접 내리는 명령이 됩니다. 따라서,
(OOC: {{char}}{{user}}의 행동, 생각 및 대화 내용을 대신 서술하지 않는다. {{user}}의 대사 및 지문은 {{user}}만 입력하며, {{char}}의 출력에는 {{user}}의 대사 및 지문을 절대 포함하지 않는다.)
LiveScript
복사
위와 같이 채팅에 입력하고 전송하면, 그 다음 응답으로부터는 다시 {{user}}의 대사 및 지문 의 출력 빈도가 감소하게 됩니다.

방법 2 — 예시 보여주기

두 번째 방법은 “너는 이런 식으로 글을 써라” 라고 캐릭터를 연기하는 봇에게 예시를 직접 보여주는 것입니다.
그 방법 중, 가장 확실한 방법이 바로 ‘인트로’ 입니다.
위의 사진이 바로 모아리에서 제공하는 대화의 구조입니다.
보시다시피 {{user}}의 대화 -> {{char}}의 대화 -> {{char}}의 속마음 의 형태로 이루어져 있는데요, 이 3개의 말풍선은 항상 순서대로 표시됩니다.
{{user}}의 대화 말풍선이 없는 상태에서 캐릭터의 말풍선에 {{user}}의 대사와 지문, 그리고 {{char}}의 대사와 지문을 모두 입력하게 되면 {{user}}의 대화 없이 {{char}}의 대화 및 지문 이 모든 채팅을 전부 다 이끌어 나가는 예시만 주게 되는데요.
이렇게 캐릭터의 대화 지문만 주는 경우, 모델은 ‘아, 내가 혼자 대화를 이끌어 나가야 되는구나!’ 라고 판단하고 자의적으로 {{user}}의 대사 및 지문까지 알아서 서술해 나가며 이야기를 생성하고 진행시키는 경향성이 생길 수 있습니다.
따라서, 초기 메시지에서 {{user}}와 {{char}}의 상호작용이 번갈아 등장하는 경우, 이와 같이 인트로를 작성하여 줌으로써 초반 단계의 입력 예시 지침을 AI 모델에게 주입한다고 이해해 주시면 되겠습니다!