AI와 도구/프롬프트 메모

웹소설 설정집을 AI에 물려주는 프롬프트 구조 — 컨텍스트 설계법

Roslyn 2026. 9. 9. 09:00
반응형

연재 중이던 원고에서 조연 이름이 두 화 만에 바뀐 적이 있습니다. 제가 실수한 건 아니었고, AI에게 이어 쓰기를 시켰더니 설정집에 분명히 적혀 있는 이름 대신 비슷한 다른 이름을 써서 돌려준 겁니다. 그때 제가 넣은 프롬프트는 세계관 문서 전체를 복사해 붙인 것이었습니다. 분량으로는 원고 열 화쯤 되는 양이었습니다.

설정집이 있으면 AI가 알아서 지켜줄 거라고 생각하기 쉽습니다. 그런데 실제로는 설정집을 많이 넣을수록 반영률이 떨어지는 구간이 생깁니다. 모델이 게을러서가 아니라, 넣은 정보 사이에 우선순위가 없어서 무엇이 중요한지 판단할 근거가 없기 때문입니다.

메리톡톡을 만들면서 이 문제를 계속 붙들고 있었습니다. 결론은 단순했습니다. 설정집은 한 덩어리가 아니라 성격이 다른 세 종류의 정보이고, 그걸 나눠서 넣어야 한다는 것이었습니다. 이 글에서는 그 나누는 기준과 실제로 쓰는 템플릿을 정리합니다.

통째로 붙여넣기가 실패하는 세 가지 방식

제 경험상 설정집 전체를 넣었을 때 나타나는 문제는 대체로 아래 셋 중 하나입니다.

• 토큰 낭비: 이번 장면에 등장하지도 않는 인물 스무 명의 프로필이 매 요청마다 따라갑니다. 대화가 길어질수록 이 비용이 누적되고, 정작 원고 본문을 넣을 자리가 줄어듭니다.

• 중요 정보가 묻힘: "이 작품은 문어체를 쓰지 않습니다" 같은 한 줄 규칙이 지명 목록 이백 줄 사이에 끼어 있으면, 형식적으로는 들어갔지만 실질적으로는 없는 것과 비슷해집니다.

• 앞부분 편향: 긴 입력에서는 앞쪽과 끝쪽이 상대적으로 잘 반영되고 가운데가 흐려지는 경향이 있습니다. 모델과 길이에 따라 정도는 다르지만, 긴 문서를 한 덩어리로 넣었을 때 가운데 설정이 자주 어긋나는 건 여러 번 겪었습니다.

세 문제 모두 원인이 같습니다. 정보의 수명이 다른데 같은 자리에 넣었다는 겁니다. 문체 규칙은 작품이 끝날 때까지 유효하고, 직전 상황은 이번 장면에만 유효합니다. 이 둘을 같은 블록에 두면 매번 전부 다시 넣거나 매번 전부 빼는 수밖에 없습니다.

세 겹으로 나눕니다

그래서 저는 설정 정보를 수명 기준으로 세 층으로 나눕니다. 층마다 넣는 빈도와 분량 상한이 다릅니다.

층넣는 시점담는 내용분량 기준

고정 블록매 요청문체 규칙, 금지 사항, 핵심 설정 요약짧게. 원고 한 화보다 훨씬 적게
교체 블록장면이 바뀔 때마다현재 등장인물, 직전 상황, 이번 장면 목표중간. 장면당 새로 씀
호출 블록필요할 때만연표, 조연 프로필, 지명·용어 사전길어도 됨. 대신 자주 넣지 않음

고정 블록은 짧게 유지하는 것이 핵심입니다. 여기가 길어지면 세 겹으로 나눈 의미가 사라집니다. 저는 이 블록을 원고 한 화의 절반 이하로 유지하려고 합니다. 넣고 싶은 게 생기면 기존 항목 하나를 빼는 방식으로 총량을 지킵니다.

교체 블록은 매번 새로 씁니다. 귀찮아 보이지만 실제로는 서너 줄이면 됩니다. 여기가 잘 채워져 있으면 결과물의 방향이 확실히 달라집니다.

호출 블록은 평소에는 넣지 않습니다. 연표가 필요한 장면, 예를 들어 과거 사건을 회상하는 대목에서만 해당 구간만 잘라 넣습니다. 전체 연표가 아니라 해당 시기 앞뒤만 넣는 게 요령입니다.

실제로 쓰는 템플릿

고정 블록은 아래 형태로 씁니다. 작품 하나당 한 번 만들어두고 계속 재사용합니다.

[작품 규칙 — 항상 적용]
장르: 현대 판타지 / 1인칭 주인공 시점
문체: 짧은 문장 위주. 한 문단 3~4문장.
      비유는 장면당 1회 이하. 한자어보다 일상어.
호칭: 주인공은 '나', 서술에서 이름을 부르지 않음.

금지:
- 인물의 감정을 직접 설명하지 않음 (행동과 대사로만)
- 장면 끝에 요약이나 교훈을 붙이지 않음
- 설정집에 없는 지명, 조직, 능력 이름을 새로 만들지 않음

핵심 설정 (3줄):
- 각성자는 전체 인구의 1% 미만. 국가 등록제.
- 주인공은 미등록 각성자. 이 사실이 들키면 안 됨.
- 배경은 2031년 서울. 현실과 지리는 동일.

교체 블록은 장면마다 새로 씁니다. 이어 쓰기 요청 직전에 붙입니다.

[이번 장면]
등장인물: 주인공, 김세연(팀장, 주인공의 정체를 의심 중)
장소/시각: 회사 지하주차장, 밤 11시
직전 상황: 주인공이 야근 중 능력을 썼고, 세연이 CCTV 기록을
           확인하러 갔다는 사실을 방금 알게 됨.
이번 장면 목표: 세연과 마주치되, 정체를 인정하지도 부인하지도
                않은 채 대화를 끝낸다. 독자에게는 들켰다는
                긴장만 남긴다.
분량: 1,200자 내외. 대사 비중 절반 이상.

이 두 블록을 나눠 넣기 시작한 뒤로, 같은 모델을 써도 결과의 흔들림이 눈에 띄게 줄었습니다. 특히 이번 장면 목표를 한 문장으로 못 쓰겠으면 아직 그 장면을 쓸 준비가 안 된 것이라는 신호로도 쓰게 됐습니다.

설정이 충돌할 때 우선순위를 명시합니다

연재가 길어지면 설정끼리 부딪칩니다. 초반에 정한 규칙을 중반에 바꿨는데 설정집에는 둘 다 남아 있는 경우가 대표적입니다. 이럴 때 AI는 대개 나중에 넣은 쪽이나 더 자주 언급된 쪽을 따르는데, 그게 제가 원하는 쪽이라는 보장은 없습니다.

그래서 고정 블록 맨 끝에 우선순위 규칙을 한 문단 넣어둡니다.

• 순위를 숫자로 씁니다: "충돌 시 1) 이번 장면 지시 2) 작품 규칙 3) 설정집 순으로 따릅니다"처럼 명시합니다. 애매하게 "최신 정보를 우선"이라고 쓰면 무엇이 최신인지 모델이 판단해야 합니다.

• 바뀐 설정은 지웁니다: 가장 확실한 방법입니다. 폐기된 설정은 설정집 본문에서 빼고 별도 파일로 옮깁니다. 남겨두면 언젠가 튀어나옵니다.

• 모르면 묻게 합니다: "설정집에 없는 정보가 필요하면 지어내지 말고 질문하십시오"를 금지 항목에 넣어둡니다. 완벽하지는 않지만, 없는 지명을 만들어내는 빈도는 확실히 줄었습니다.

• 충돌 로그를 남깁니다: AI가 설정을 어긴 대목을 발견하면 그 자리에서 고정 블록에 한 줄 추가합니다. 규칙은 이렇게 쌓여야 실제로 쓸모가 있습니다.

마치며

설정집을 통째로 넣는 방식이 실패하는 이유는 정보량이 아니라 구조입니다. 수명이 다른 정보를 같은 자리에 두면 매번 전부 넣거나 전부 빼는 선택지밖에 없습니다. 고정·교체·호출 세 겹으로 나누고, 고정 블록은 짧게 유지하고, 충돌 시 우선순위를 숫자로 못박아두는 것. 제가 정리한 건 이 정도입니다.

오늘 할 수 있는 한 가지는 지금 쓰고 있는 작품의 고정 블록을 열 줄 안으로 써보는 일입니다. 열 줄에 들어가지 않는 항목은 대부분 호출 블록으로 내려가도 되는 것들이었습니다.

반응형