프롬프팅
verified · type: reference · verified: 2026-07 · review: 90d · updated: 2026-07-25 · [prompting]
프롬프팅 안티패턴 카탈로그
프롬프트가 기대대로 안 될 때 여는 문서. "옛날 조언 그대로 썼는데 왜 이상하지" 를 진단한다. 증상 → 원인 → 대신 이렇게, 3단으로.
⚠️ 핵심 프레임: 2023~2024 의 프롬프트 정석 중 상당수가 현행 모델(특히 Opus 4.5/4.6 이상, 추론 모델)에서 뒤집혔다. 강한 지시가 이제 과잉반응을, 수동 CoT 가 이제 중복 비용을 만든다. 아래 표는 "그때는 맞고 지금은 틀린" 것을 먼저 배치했다.
1. 지시 강도 — 강하게 = 좋다 (뒤집힘)
| 증상 |
왜 생기나 |
대신 이렇게 |
| 툴/스킬을 안 써도 될 때 자꾸 부른다 (오버트리거) |
Opus 4.5/4.6 이상은 시스템 프롬프트 반응성이 올라갔다. 예전 undertrigger 를 막으려 넣은 공격적 문구가 이제 과잉발동한다 (verified 2026-07) |
CRITICAL: You MUST use this tool when... → Use this tool when... 로 완화 |
| 사소한 입력에도 툴을 호출 |
If in doubt, use [tool] 같은 안전망 문구가 이제 오버트리거를 유발 |
안전망 문구를 지운다. 현행 모델은 애매할 때 알아서 판단 |
| 규칙 8~10개 쌓으니 정확도가 떨어짐 |
규칙이 많아지면 모델이 무엇이 중요한지 triage 하다 놓친다 [MED, aggregator] |
3~4개 원칙문으로 압축, 엣지케이스는 규칙이 아니라 예시로 |
| 지시끼리 모순 |
두 접근을 다 적어두고 모델에게 조정을 떠넘김 |
하나를 골라 끝까지 밀어라. Anthropic 지침: "pick one and see it through" |
2. 부정 지시 — "하지 마" 로 막는다 (역효과)
| 증상 |
왜 생기나 |
대신 이렇게 |
Do not use markdown 했는데 마크다운이 나옴 |
부정 지시는 무엇을 하라는지를 안 알려줘 모델이 여전히 헤맨다 |
Your response should be smoothly flowing prose paragraphs. 처럼 원하는 결과를 긍정형으로 [HIGH] |
| 금지 목록만 길고 원하는 톤이 안 나옴 |
"안 되는 것" 만 정의하면 허용 공간이 너무 넓다 |
목표 상태를 서술 + 예시 3~5개로 형태를 보여줘라 |
Anthropic 1차 원칙: "Tell Claude what to do instead of what not to do." (verified 2026-07)
3. 추론 모델에 옛 CoT 스캐폴딩 (중복·역효과)
현행 추론 모델은 사고를 내부에서 한다. thinking: {type: "adaptive"} 가 기본이고 Fable 5·Mythos 5 는 always-on 이다 (verified 2026-07). 여기에 손으로 짠 절차를 얹으면 손해다.
| 증상 |
왜 생기나 |
대신 이렇게 |
think step by step 넣었더니 비용만 늘고 품질 그대로 |
사고가 hidden thinking 과 narrated output 에 두 번 나와 토큰을 배로 쓴다 [MED] |
추론 모델엔 이 문구를 지운다. output_config.effort 노브로 사고량 조절 |
| 손으로 짠 step-by-step plan 이 오히려 답을 좁힘 |
모델의 추론이 사람이 짠 절차보다 나은 경우가 많다 |
think thoroughly 같은 고수준 지시를 선호하라 [HIGH] |
| 추론 문제에 few-shot 넣으니 다양성이 줄어듦 |
예시의 solution-path 에 앵커링되어 답 경로가 고정된다 [MED] |
few-shot 은 포맷/분류 스티어링에만. 추론은 스크래치부터 시키기 |
| Opus 5 에 검증 지시 넣었더니 느려짐 |
Opus 5 는 지시 없이도 자체검증을 잘해서 verification 지시가 over-verification 을 유발 [HIGH] |
Opus 5 로 마이그레이션 시 옛 검증 지시를 제거 |
함정: 수동 CoT 는 thinking OFF 일 때만 폴백이다. 다만 Opus 5 는 thinking 을 끄면 내부 XML 태그가 눈에 보이는 출력로 새어나올 수 있어, 끄기보다 저-effort thinking 유지가 권장된다 (verified 2026-07). 자세히 → reasoning-vs-standard-models
4. 페르소나·감정 프라이밍 (무효)
| 증상 |
왜 생기나 |
대신 이렇게 |
You are a world-class expert... 로 시작했는데 기술 정확도가 오히려 낮아짐 |
기술 작업에서 페르소나는 스타일 노이즈만 얹고 지시 준수를 흐린다 [MED] |
페르소나는 스타일 중심 창작에만. 기술 작업은 직접적 task framing |
take a deep breath, if you're unsure, say so 가 효과 없음 |
프론티어 추론 모델은 불확실성을 사고 단계에서 스스로 플래그한다 [MED] |
2023 트릭들은 지운다. 그 자리에 구체적 성공조건을 |
5. 예시·포맷 다루기 (조용한 실패)
| 증상 |
왜 생기나 |
대신 이렇게 |
| 예시가 옛날 지시를 따라감 (few-shot pollution) |
예시와 현재 지시가 모순되면 모델이 옛 예시를 신뢰한다. "조용한 실패의 최대 원인" [MED] |
지시를 고칠 때 예시도 같이 고친다. 지시/예시를 <instructions> <example> XML 태그로 분리 |
| 형식을 예시로만 보여줬더니 구조 다른 입력에서 파서가 깨짐 |
예시 하나의 모양에 의존하면 형태가 다른 입력을 못 버틴다 [MED] |
스키마를 지시에 명시 + 프로바이더 구조화 출력 사용 → structured-output |
| 다운스트림이 "answer is X" 같은 자유문 문구를 파싱 |
모델 업그레이드로 문구가 바뀌면 파서가 깨진다 [MED] |
자유문 파싱 금지. 구조화 출력의 스키마 필드만 파싱 |
| 실패 케이스 하나 막으려 제약을 걸었더니 정상 출력이 다 망가짐 (over-correction) |
한 사례에 과제약을 걸어 나머지를 목조른다 [MED] |
eval 케이스를 먼저 쓰고, 통과에 필요한 만큼만 제약 |
6. 근거 없는 추론 & 긴 컨텍스트
| 증상 |
왜 생기나 |
대신 이렇게 |
| 그럴듯한데 사실이 틀린 결론 (ungrounded CoT) |
실제 데이터에 앵커되지 않은 추론 단계를 지어냄 → 환각 |
CoT 를 검색 컨텍스트에 그라운딩하거나 제거 → hallucination |
| 긴 문서 중간의 정보를 모델이 놓침 (lost-in-the-middle) |
컨텍스트 시작/끝은 잘 쓰지만 중간은 성능이 떨어진다. 신형 모델도 완전 해결은 아님 (context rot) [MED] |
중요 지시·정책을 시작 근처에 배치 |
| 긴 프롬프트일수록 답이 불안정 |
effective context 가 광고된 최대치에 못 미치는 경우가 많다 [MED] |
reranking·dedup·필터링으로 컨텍스트를 줄여라 → context-engineering |
Anthropic 1차 정합: "Put longform data at the top" — 긴 문서·입력을 query·instruction·example 위에 두면 전 모델에서 성능이 오른다 (verified 2026-07).
7. 구조 강제 — prefill 로 JSON 짜내기 (이제 400)
| 증상 |
왜 생기나 |
대신 이렇게 |
assistant 턴을 { 로 prefill 해서 JSON 강제하던 코드가 400 |
현행 Claude 모델은 마지막 assistant 턴 prefill 을 거부한다 (verified 2026-07) |
output_config.format (구조화 출력) 또는 strict tool use 로 대체 → structured-output |
| 응답이 스키마를 어겨 파싱 재시도 루프를 돔 |
소프트 스티어링(설명·예시)만으로는 스키마 위반을 못 막는다 |
grammar-constrained 구조화 출력을 쓰면 스키마 위반이 원천 불가 |
| 자유 산문에 억지로 JSON 스키마를 강제 |
강한 구조가 필요 없는데 constrained decoding 을 씀 |
자유 산문 + 약한 구조는 XML 태그(소프트 스티어링)로 충분 |
언제 무엇을 (요약)
| 상황 |
쓸 것 |
| 강한 지시가 오버트리거 |
문구 완화 (You MUST → Use ... when) |
| 무엇을 막고 싶다 |
원하는 결과를 긍정형으로 서술 |
| 추론 모델에 단계 지시하고 싶다 |
고수준 지시(think thoroughly) + effort 노브 |
| 프로그램이 소비하는 출력 |
구조화 출력/strict tool use → structured-output |
| 자유 산문 + 약한 구조 |
XML 태그 |
참고
출처: Anthropic 프롬프팅 안티패턴은 [HIGH] (best-practices 1차). 페르소나·instruction stacking·lost-in-the-middle 등 aggregator 사실은 [MED] — 정성 서술만 취하고 수치는 배제. 원본 → 2026-07-25-structured-output-antipatterns