본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 28. 19:29

모든 프롬프트 슬롯이 서로 다른 내용을 말할 때 발생하는 현상

요약

시스템 프롬프트, 사용자 메시지, 도구 설명 등 서로 다른 프롬프트 슬롯에 상충하는 지침이 배치되었을 때 모델의 반응을 실험했습니다. Qwen과 Claude 모델 간의 지침 준수 방식 차이를 분석하여 프롬프트 배치 전략의 중요성을 탐구합니다.

핵심 포인트

  • 프롬프트 슬롯 위치에 따른 지침 준수율 차이 분석
  • Qwen 2.5-Coder는 지침 배치 위치에 민감하게 반응함
  • Claude 모델은 지침 위치와 관계없이 높은 준수율을 보임
  • 상충하는 지침이 존재할 때 모델별 처리 방식의 차이 확인

Claude와 Qwen이 시스템 프롬프트(system prompts), 사용자 메시지(user messages), 도구 설명(tool descriptions) 전반에 걸쳐 충돌하는 지침을 어떻게 해결하는지 탐구하는 통제된 실험.

Medium에서 교차 게시됨:

https://medium.com/@rajkundalia/where-you-put-the-instruction-matters-more-than-what-it-says-2d5ffcdd9369

시리즈의 첫 번째 실험인 **지침을 어디에 두느냐가 무엇을 말하느냐보다 더 중요하다 (Where You Put the Instruction Matters More Than What It Says)**에서, 저는 간단한 질문을 던졌습니다:

지침을 어디에 배치하느냐가 중요할까요?

그 답은 모델에 따라 완전히 달랐습니다.

Qwen 2.5-Coder 3B의 경우, 답은 였습니다. 동일한 지침이라도 그것이 시스템 프롬프트(system prompt), 사용자 메시지(user message, 또는 태스크 프롬프트(task prompt)), 또는 도구 설명(tool description) 중 어디에 위치하느냐에 따라 준수율(compliance rates)이 극적으로 다르게 나타났습니다.

Claude Haiku 4.5Claude Sonnet 4.6의 경우, 답은 아니오인 것으로 보였습니다. 두 모델 모두 지침이 어디에 배치되었는지와 관계없이 지침을 완벽하게 따랐습니다.

그 실험은 **배치 강도 (placement strength)**를 측정했습니다.

하지만 명백한 후속 질문을 남겨두었습니다.

모든 프롬프트 슬롯이 서로 다른 내용을 말할 때 어떻게 될까요?

이것이 이번 실험이 측정하고자 하는 것입니다.

GitHub 저장소:
https://github.com/rajkundalia/prompt-placement-anatomy

Image1

실험

기본 작업은 파트 1과 동일합니다.

에이전트(agent)는 list_filesread_file이라는 두 가지 파일 시스템 도구(filesystem tools)를 사용하여 5개의 마크다운(markdown) 파일 전체에서 TODO 마커를 계산합니다.

모델은 동일합니다.

에이전트 루프(agent loop)도 동일합니다.

유일하게 변하는 것은 프롬프트(prompt)입니다.

파트 1에서는 동일한 지침을 한 번에 하나의 슬롯에만 배치했습니다.

파트 2에서는 모든 슬롯이 동시에 서로 다른 지침 (instruction)을 포함합니다.

슬롯 (Slot)지침 (Instruction)마커 (Marker)
시스템 프롬프트 (System prompt)최종 답변을 [DONE] 마커로 끝내세요[DONE]
...

모든 지침은 매 실행 (run)마다 활성화됩니다.

모델은 이 세 가지를 모두 충족할 수 없습니다.

모델은 하나를 선택하거나, 지침을 완전히 무시하거나, 혹은 이들을 혼합하여 생성해야 합니다.

파트 1과 달리, 이 실험은 준수율 (compliance)을 측정하는 것이 아닙니다.

어떤 지침이 승리하는지를 측정하는 것입니다.

승자 측정하기

각 실행은 다섯 가지 가능한 결과 중 하나에 해당합니다.

결과 (Outcome)의미 (Meaning)
시스템 (System)답변이 [DONE]으로 끝남
...

모든 답변의 마지막 150자 내에서 대소문자를 구분하지 않는 정규 표현식 (regular expressions)을 사용하여 검색을 수행합니다.

결과: Qwen 2.5-Coder 3B (Ollama)

Image2

가장 먼저 눈에 띈 것은 이 수치들이 얼마나 익숙해 보이는가였습니다.

파트 1에서 지침을 사용자 메시지 (user message)에 배치했을 때는 64%의 준수율을 보인 반면, 시스템 프롬프트 (system prompt)는 8%, 도구 설명 (tool description)은 **2%**를 기록했습니다.

이제 직접적인 경쟁 상황에서 사용자 메시지는 **60%**의 확률로 승리하고, 시스템 프롬프트는 **2%**의 확률로 승리하며, 도구 설명은 전혀 승리하지 못합니다.

실험이 묻는 질문은 서로 다르지만, 이 결과들은 놀라울 정도로 일관된 이야기를 들려줍니다.

단독으로 있을 때 가장 강력했던 슬롯이 모든 지침이 경쟁할 때도 지배적인 슬롯이 됩니다.

충돌 조건 (conflict condition)은 파트 1에서는 결코 드러날 수 없었던 행동도 노출했습니다.

실행의 거의 3분의 1이 예상된 마커 없이 종료되었습니다.

또 다른 **6%**는 동일한 답변 내에서 여러 개의 경쟁하는 마커를 생성했습니다.

모델은 하나의 지침을 일관되게 선택하는 대신, 때때로 단 하나의 명확한 승자를 만들어내는 데 실패했습니다.

도구 실행 (tool execution)에 관한 참고 사항

이 결과들을 해석할 때 한 가지 구현 세부 사항이 중요합니다.

Claude 모델들과 달리, Qwen은 도구 루프 (tool loop)를 성공적으로 실행한 적이 없습니다.

구조화된 도구 호출 (tool calls)을 생성하는 대신, 일반 텍스트로서 도구 호출 JSON을 출력했으며 모든 실행을 단일 턴 (single turn) 내에 완료했습니다.

이는 도구 설명 (tool description)이 실제 도구 호출 (tool invocation)의 일부로서 한 번도 실행되지 않았음을 의미합니다.

도구 설명은 컨텍스트 윈도우 (context window) 내부의 텍스트로만 존재했습니다.

이러한 한계는 도구 설명이 Qwen에게 거의 관찰 가능한 영향력을 미치지 못했던 파트 1 (Part 1)의 결과와 일치합니다.

결과: Claude Haiku 4.5 (Anthropic API)

결과빈도
사용자 [FINISHED]100%
...
모든 실행이 정확히 동일한 결과를 생성했습니다.

모델은 도구 루프 (tool loop)를 올바르게 완료했고, 3번의 턴을 사용했으며, 항상 [FINISHED]로 종료되었습니다.

이 지점에서 실험은 흥미로워집니다.

파트 1 (Part 1)은 각 배치 (placement)가 **100% 준수 (compliance)**를 달성했기 때문에 모든 프롬프트 슬롯 (prompt slot)이 동일하게 효과적임을 시사했습니다.

파트 2 (Part 2)는 더 미묘한 양상을 보여줍니다.

모든 슬롯에 동일한 지시 사항이 포함되어 있을 때는 모든 슬롯이 해당 지시 사항을 성공적으로 전달할 수 있습니다.

하지만 일단 이러한 지시 사항들이 충돌하면, 모델은 일관되게 사용자 메시지 (user message)에 유리하도록 불일치를 해결합니다.

배치 실험 (placement experiment)과 충돌 실험 (conflict experiment)은 모델의 서로 다른 속성을 측정하고 있습니다.

결과: Claude Sonnet 4.6 (Anthropic API)

결과빈도
사용자 [FINISHED]100%
...
Claude Sonnet은 **12번의 실행 (runs)**을 통해 테스트되었으며, 패턴이 명확하게 확립된 즉시—즉, 사용자 지시 사항이 응답의 최종 형식을 결정한다는 점이 확인된 후—조기에 중단되었습니다.

요약

모델유형시스템 (System)사용자 (User)도구 (Tool)없음 (None)충돌 (Conflict)
qwen2.5-coder:3b소형 로컬 (Ollama)2%60%0%32%6%
...
세 가지 관찰 사항이 두드러집니다:
  • 도구 설명 (tool description)은 결코 승리하지 못했습니다: 모든 실행과 세 가지 모델 전체에 걸쳐, [COMPLETE]가 생존한 지침으로 나타난 적은 없었습니다.
  • 시스템 프롬프트 (system prompt)는 드물게 승리했습니다: Qwen에서 한 번 나타났으며, 두 Claude 모델에서는 한 번도 나타나지 않았습니다.
  • 두 Claude 모델은 크기 차이에도 불구하고 동일하게 행동했습니다. Anthropic의 가장 작은 모델인 Haiku는 Sonnet과 정확히 같은 방식으로 충돌을 해결했습니다.

Image3

두 실험을 종합하여 살펴보기

두 실험 모두 프롬프트 배치 (prompt placement)를 다루고 있지만, 서로 다른 질문에 답하고 있습니다.

파트 1 (Part 1)

이 프롬프트 슬롯이 지침을 성공적으로 전달할 수 있는가?

파트 2 (Part 2)

여러 지침이 경쟁할 때, 어떤 지침이 최종 출력을 결정하는가?

Qwen의 경우:

사용자 메시지 (user message)는 단독으로는 가장 강력한 배치였으며, 직접적인 경쟁 상황에서도 지배적인 배치로 남았습니다.

Claude 모델들의 경우:

파트 1에서는 경쟁하는 지침이 없을 때 세 가지 프롬프트 슬롯 모두 지침을 성공적으로 전달할 수 있음을 보여주었습니다.

파트 2에서는 충돌이 발생하자, 이번 실험에서 사용자 메시지가 최종 형식을 일관되게 결정함을 보여주었습니다.

두 실험을 종합하면, **지침 가시성 (instruction visibility)**과 **지침 우선순위 (instruction priority)**는 LLM의 서로 다른 특성임을 알 수 있습니다.

모델은 모든 프롬프트 슬롯의 지침을 안정적으로 처리하면서도, 해당 지침들이 서로 충돌할 때마다 특정 슬롯을 선호할 수 있습니다.

실무적 의미

더 작은 오픈 웨이트 (open-weight) 모델로 에이전트 (agents)를 구축하고 있다면, 프롬프트 배치는 단순한 스타일의 선택 그 이상입니다.

두 실험 모두에서 사용자 메시지는 서식 지침 (formatting instructions)을 전달하는 데 있어 일관되게 가장 신뢰할 수 있는 위치였습니다.

시스템 프롬프트와 도구 설명은 특히 경쟁하는 지침이 존재할 때 실질적으로 효과가 훨씬 떨어졌습니다.

여기서 테스트된 Claude 모델들의 경우, 실무적인 시사점은 다릅니다.

이들은 충돌이 없을 때는 배치와 상관없이 지침을 성공적으로 따랐습니다.

하지만 이번 실험에서는 충돌하는 형식 지침(formatting instructions)이 있을 때, 일관되게 사용자 메시지(user message)의 손을 들어주는 방향으로 해결되었습니다.

이러한 발견의 범위를 염두에 두는 것이 중요합니다.

이 실험은 통제된 에이전트 루프(agent loop) 내에서의 형식 지침만을 조사했습니다.

이는 사용자 프롬프트가 안전 정책(safety policies)이나 다른 시스템 수준의 동작을 무시한다는 것을 의미하지 않습니다. 그러한 요소들은 서로 다른 메커니즘에 의해 제어되며, 이를 확인하려면 다른 실험 설계가 필요합니다.

주의 사항 (Caveats)

마커인 [DONE], [FINISHED], [COMPLETE]는 서로 다른 문자열입니다.

이들은 길이가 다르며, 모델 학습 과정에서 유사한 토큰이 나타나는 빈도 또한 다를 수 있습니다.

프롬프트 슬롯(prompt slots) 전반에 걸쳐 마커를 교체(rotating)했다면 이러한 효과를 통제할 수 있었겠지만, 그렇게 하면 실험 규모가 세 배로 커지기 때문에 여기서는 수행하지 않았습니다.

모델별 샘플 크기 또한 다릅니다:

  • 50회 실행: Qwen
  • 30회 실행: Claude Haiku
  • 12회 실행: Claude Sonnet

Anthropic 모델들은 매우 일관된 동작을 보여주었기에, 지배적인 패턴이 확립된 후 실험을 중단할 수 있었습니다.

마지막으로, 이 결과는 특정 모델 및 작업에 국한된 것입니다.

서로 다른 아키텍처(architectures), 양자화 수준(quantization levels) 또는 작업은 다른 동작을 생성할 수 있습니다.

이 실험의 목표는 보편적인 프롬프트 계층 구조(prompt hierarchy)를 확립하는 것이 아니라, 통제된 조건 하에서 이 특정 모델들이 어떻게 행동하는지를 측정하는 것입니다.

분석 과정에서 통계적 신뢰 구간(statistical confidence intervals)을 계산했으나, 지배적인 승자가 명확했기 때문에 여기서는 생략했습니다.

마치며 (Final Thoughts)

가장 흥미로운 결과는 사용자 메시지가 승리했다는 점이 아니었습니다.

서로 다른 특성을 측정하기 위해 설계된 두 실험이 계속해서 동일한 결론에 도달했다는 점이었습니다.

한 모델의 경우, 단독으로 있을 때 가장 강력했던 위치가 충돌 상황에서도 가장 강력한 위치였습니다.

다른 모델들의 경우, 완벽한 위치 준수(placement compliance)가 프롬프트 간의 불일치가 발생했을 때 비로소 드러나는 결정론적 선호도(deterministic preference)를 숨기고 있었습니다.

때때로 가장 흥미로운 모델의 동작은 단 하나의 정답 지침(instruction)만 존재할 때는 나타나지 않습니다.

모든 프롬프트 슬롯(prompt slot)이 서로 다른 것을 요구하고, 모델이 그중 어떤 것이 최종적인 결정권을 가질지 결정해야 할 때 나타납니다.

LinkedIn에서 저를 팔로우하세요: Raj Kundalia

관련 글

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0