
Prompt Repetition으로 지킬 수 없는 제약은 역할 지정과 자기 체크 지시로 보완될까, 실험을 통해 원리를 파헤치다
요약
Prompt Repetition만으로 해결되지 않는 제약 조건 준수 문제를 역할 지정과 명시적인 자기 체크(Self-check) 지시를 통해 해결하는 실험 결과를 다룹니다. 역할 부여 자체보다 생성 후 검증을 유도하는 지시가 제약 충족에 핵심적인 역할을 함을 밝힙니다.
핵심 포인트
- 역할 프롬프트는 출력 분포를 이동시킬 뿐, 제약 조건을 검증하는 Verifier 역할을 수행하지 않음
- 효과의 핵심은 역할명이 아닌 '작성 후 스스로 확인하라'는 명시적 자기 체크 지시에 있음
- 제약 조건의 수가 늘어날수록 준수율은 구조적으로 하락하며, 단순 반복만으로는 확장성 한계 존재
- 자기 체크 지시는 모델에게 의사적인 2-pass(생성 후 검증) 과정을 유도하는 효과를 가짐
TL;DR
- 「동일한 지시를 2번 붙여넣는 Prompt Repetition」(이전 기사)을 5개의 제약 조건이 있는 의뢰로 테스트한 결과, 1번 붙여넣었을 때는 1개, 2번 붙여넣었을 때도 다른 1개가 지켜지지 않았다. 2번 붙여넣기의 맨 앞에 「엄격한 교정자로서, 작성한 후에 위반 사항이 없는지 스스로 확인해줘」라는 역할 + 자기 체크 (Self-check) 지시를 추가하고 나서야 비로소 5개 전부를 충족했다.
- 역할 프롬프트 (Role Prompt) 단독(「당신은 전문 라이터입니다」 등)은 출력의 어휘·톤의 분포를 변화시킬 뿐, 제약 충족을 검증하는 처리 (Verifier)를 추가하는 것이 아니다. 이번에 효과가 있었던 것은 역할명 그 자체가 아니라, 역할 설명문에 포함된 「확인해 주세요」라는 명시적인 자기 체크 지시였다.
- 제약 조건을 5개에서 7개로 늘리면, 동일한 「2번 붙여넣기 + 역할 + 자기 체크」 조합에서도 1개를 지키지 못하게 된다. 제약의 동시 충족은 각 조건을 만족할 확률의 곱에 가까워지기 때문에, 수법을 바꾸지 않고 조건 수만 늘리면 준수율은 구조적으로 떨어진다.
- Prompt Repetition도 역할 프롬프트도 「후반부 제약이 경시되는」 문제를 부분적으로 완화하는 대증요법일 뿐, 제약 수의 확장성 (Scalability) 자체를 해결하는 수법은 아니다.
배경
이전 기사에서는 지시문을 그대로 2회 연속으로 붙여넣는 「Prompt Repetition」이, 지시의 순차적 처리에서 발생하는 후반 제약 경시 (Instruction dilution) 현상을 완화한다는 것을 실제 출력 사례와 함께 확인했다. 다만 그 검증은 제약 조건이 3~5개 정도의 범위에 머물러 있었으며, 「2번 붙여넣는 것만으로 부족할 때는 어떻게 해야 하는가」까지는 다루지 않았다.
이번에는 거래처에 보내는 사과 메일 생성이라는 태스크에 5개의 제약(납기 명시·사과 표현은 1회만·상투적인 표현 금지·150자 이내·서명)을 부여하고, (A) 1회 지시 (B) Prompt Repetition (C) Prompt Repetition + 역할 지정,의 3가지 패턴을 비교했다. 나아가 제약을 7개로 늘렸을 때 어디서 무너지는지도 재시험했다.
원리 1: 역할 프롬프트는 출력 분포의 이동이며, 제약 충족의 Verifier가 아니다
역할 프롬프트(「당신은 ○○입니다」라는 역할 부여)는 모델의 출력 토큰 분포를 역할에 연관된 어휘·문체·우선순위 방향으로 이동(Shift)시키는 효과를 가진다. 비즈니스 문서의 문체를 안정시키거나 비판적인 지적을 끌어내기 쉬운 용도로는 유효하지만, 이는 분포의 이동일 뿐 생성한 출력을 제약 리스트와 대조하여 검증하는 처리가 아니다. 실제로 이번에 「당신은 전문 라이터입니다」라고 역할만 추가한 비교에서는 패턴 B(2번 붙여넣기만 하는 것)와 거의 동일한 결과(상투적인 표현은 사라지지만 사과 표현이 중복됨)로 돌아갔다. 역할명을 부여하는 것만으로는 생성 후에 자신의 출력을 조건 리스트와 대조하는 처리가 자동으로 발생하지 않는다는 것을 확인할 수 있다.
원리 2: 효과가 있었던 것은 역할명이 아니라, 명시적인 자기 체크 지시
패턴 C에서 실제로 효과가 있었던 것은 역할 설명문에 포함된 「다음 5가지 규칙을 하나도 어기지 않는 것을 최우선으로 하고, 작성을 마친 후에는 스스로 규칙 위반이 없는지 반드시 확인해 주세요」라는 문장이다. 이는 역할 설정이라기보다 생성 후에 자기 검증을 수행하도록 촉구하는 지시이며, 모델에게 의사적인 2-패스 (2-pass) 구성(본문 생성 → 제약 체크 → 필요시 수정)을 유도하는 프롬프트로서 기능한 것으로 생각된다. 이는 경량화된 Chain-of-Verification (생성한 답변을 별도로 검증하게 하는 수법)에 가까운 효과이며, 「역할을 부여하는 것」 자체의 효과가 아니라 「검증을 명시적으로 지시한 것」의 효과로 구분할 필요가 있다. 역할 라벨과 자기 체크 지시는 별개의 변수이며, 이번 결과를 「역할 프롬프트가 효과적이었다」라고 단순화하는 것은 정확하지 않다.
원리 3: 제약 충족은 결합 확률이며, 조건 수의 증가에 대해 스케일하지 않는다
제약 조건을 5개에서 7개로 늘리고 동일한 수법(2회 반복(Prompt Repetition) + 역할 지정 + 자기 체크)으로 재시도한 결과, 7개 중 6개까지는 지켜졌으나 마지막 1개(특정 표현을 사용하지 말라는 제외 제약)만 지켜지지 않았다. 이는 각 제약을 독립적으로 충족할 확률을 $p$라고 할 때, $n$개의 제약을 모두 동시에 충족할 확률이 이론상 $p^n$에 가까워지기 때문이라고 생각된다. 개별 $p$를 Prompt Repetition이나 자기 체크 지시로 끌어올릴 수는 있어도, 조건 수 $n$ 자체가 증가하는 한 전체 준수율은 구조적으로 계속 낮아진다. 2026년 시점의 복잡 지시 추종(complex constrained instruction following)에 관한 연구에서도, LLM의 지시 추종 능력은 단일 스칼라 값이 아니라 제약의 종류와 조합 수에 따라 변동하는 복합적인 능력임이 지적되고 있다. 이번 실험 결과는 이러한 경향과 일치한다.
효과가 없었던 점
- 역할 프롬프트(Role Prompt) 단독(자기 체크 지시 없음)은 Prompt Repetition만 사용했을 때와 거의 동일한 결과로 돌아갔으며, 추가적인 개선은 보이지 않았다.
- 제약을 7개로 늘렸을 경우, 2회 반복 + 역할 지정 + 자기 체크라는 가장 강력한 조합을 사용했음에도 1개는 지켜지지 않았으며, "이 수법을 사용하면 제약 수와 상관없이 모두 지키게 할 수 있다"라는 일반화는 할 수 없었다.
- 제외 제약(특정 표현을 사용하지 말 것)은 명시된 제약 중에서도 마지막까지 지켜지기 어려운 경향이 나타났다. 포함해야 할 정보의 지정(새로운 납기 작성, 서명 포함)에 비해, 제외 지정은 자기 체크 단계에서도 간과되기 쉽다고 판단된다.
요약
Prompt Repetition과 역할 프롬프트는 모두 "지시의 순차적 처리 과정에서 후반부 제약이 경시된다"라는 동일한 근본 원인에 대한 부분적인 대증요법이며, 원리적으로는 서로 다른 레이어에 속한다. 효과를 극대화하려면 역할 이름뿐만 아니라 "생성 후에 자기 체크를 수행하라"라는 명시적인 검증 지시를 role 설명문에 포함하는 것이 실무적인 포인트가 된다. 다만, 제약 조건이 5~6개를 넘어가기 시작하면 이 조합으로도 준수율이 떨어지기 시작한다. 제약이 많은 의뢰에서는 수법을 강화하기보다, 먼저 "한 번에 전달하는 제약의 수를 줄이고, 생성과 체크를 별도의 턴(turn)으로 분리하는" 설계로 전환하는 것이 원리적으로 더 안정적이다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기