프롬프트 구조 설계
문법 뿐만 아니라, 전체적인 항목의 배치 순서 역시 중요한 요소입니다.
정보의 중요도
LLM은 모든 정보를 균형 있게 평가하지 않습니다.
시작과 끝에 있는 프롬프트를 가장 중요하게 평가하며,
상대적으로 중간 부분의 내용은 덜 중요하게 평가하는 경향이 나타납니다.
이는 어텐션 메커니즘의 한계와 데이터 분포의 특성이 겹쳐서 나타나는 현상입니다.
(구체적으로는 Lost in the Middle 현상이라고 부릅니다.)
프라이밍 효과
LLM은 처음에 적힌 내용을 기반으로, 이후의 내용을 편향적으로 해석하는 경향을 보입니다.
이를 프라이밍(Priming) 효과라고 합니다.
시작 부분의 단어에 장르나 배경 등을 명시해 놓으면 잠재 공간 (Latent Space) 이라고 불리는,
데이터의 의미를 좌표로 나타낸 곳의 시작 위치를 원하는 곳에서 시작하는 데 도움이 됩니다.
최신성 경향
LLM은 하단에 적힌 내용을 단기적으로 더욱 강하게 반영하는 경향을 보입니다.
이를 최신성 경향 (Recency Bias) 이라고 합니다.
의도와 달리 점점 출력 양식이 지시사항을 따르지 않고 이전 대화와 비슷하게 가는 현상이나,
흔히 상태창이라고 일컫는 방식인, 하단에 중요한 정보들을 요약하는 방식 역시 최신성 경향에 기인한 것입니다.
이는 LLM이 자기회귀적 모델이기 때문에 발생하는, 기본적인 성질 때문에 나타나는 현상입니다.
캐릭터 프롬프트 설계 방안
시작 부분에는 장르와 배경, 목표를
프라이밍 효과를 적극적으로 이용하기 위한 방법입니다.
이 캐릭터를 어떤 장르로 만들어 나갈 것인지, 목적이 무엇인지 등의 내용은 맨 위에 적으면 좋습니다.
규칙은 끝부분에
출력 규칙, 양식과 같은 규칙성 정보는 중간에 작성할 시 중요도가 떨어져 무시될 수 있습니다.
규칙은 당장 다음 턴에 적용되어야 할 중요한 정보이므로, 맨 아래에 적는 것이 효과적입니다.
시작 대화는 필수
시작 대화가 출력 규칙을 전혀 따르지 않았다면, AI는 시작 대화가 더욱 나중에 온 데이터이기에 시작 대화 쪽으로 최신성 경향을 보이게 됩니다.
(코멧에서 시작 대화는 시작 상황을 프롬프트로 입력했을 때 나온 결과물로 인식합니다.)
만약 시작 상황에 예시 대화를 적지 못하는 상황이라면, 추후 설명할 다른 방법이 존재합니다.
시작 대화는 빼먹지 말고 적어야 한다는 점을 기억해주세요.
예시
아래는 XML로 대략적인 구조를 설계한 것입니다.
기본적인 예시일 뿐, 필요 시 변형하여 사용할 수 있습니다.
xml
<goal>
- 장르: (장르)
- 목표: (목표)
</goal>
<world-setting>
(세계관 설정)
</world-setting>
<character-data>
(캐릭터 설정)
</character-data>
<output-syntax>
(출력 규칙)
</output-syntax>