`"Hello"`도 `"What is protein?"`도 막히는 Fable 5 — `classifier_refusal` false positive(오탐)를 진단하고 줄이는 방법
Fable 5를 처음 써봤을 때 솔직히 당황했습니다. 분명히 악의 없는 질문인데 API가 classifier_refusal을 반환하더군요. 그게 저만의 일이 아니었습니다 — 출시 직후 개발자 커뮤니티에서는 "Hello"만 입력해도 차단된다는 제보가 쏟아졌고, "What is protein?"이라는 초등학생도 할 법한 생물학 질문이 생물보안 위협으로 분류됐다는 사례가 올라왔습니다. Anthropic은 이틀 만에 공식 사과문을 냈습니다.
이 글 하나로 어떤 쿼리가 왜 막히는지 진단할 수 있게 됩니다. 일반 웹 서비스에 Claude를 붙이는 분이라면 프롬프트 의도 명시화 기법으로 오탐을 즉시 줄일 수 있고, 보안·생명과학 도메인을 다루는 분이라면 Fable 5 마이그레이션 중에 서비스가 왜 갑자기 다운되는지 원인을 파악할 수 있으며, API 서비스 운영자라면 classifier_refusal 에러를 우아하게 핸들링하는 파이프라인 구조를 가져갈 수 있습니다.
구체적으로는 가드레일의 작동 원리, 오탐이 구조적으로 발생하는 이유, 그리고 상황별로 바로 적용할 수 있는 세 가지 대응 전략을 코드와 함께 다룹니다.
핵심 개념
자, 그럼 가드레일이 실제로 어떻게 동작하는 건지 뜯어봅시다.
가드레일은 추론 레이어 앞에서 작동한다
Fable 5의 가드레일은 LLM 추론 레이어 앞에 위치한 **입력 안전 분류기(input safety classifier)**입니다. 프롬프트가 모델에 닿기도 전에 위험도를 판정해서 고위험 도메인으로 분류되면 두 가지 중 하나가 일어납니다.
- UI 환경: Fable 5 대신 Claude Opus 4.8로 조용히 폴백, 알림 표시
- API 환경: 기본 설정에서 명시적 거부 응답 반환 (폴백은 별도 활성화 필요)
감지 대상 도메인은 세 가지입니다.
| 도메인 | 예시 트리거 |
|---|---|
| 공격적 사이버보안 | 익스플로잇 코드, 악성 스크립트 |
| 생물학·화학 위협 | 생물보안 관련 쿼리, 특정 단백질 합성 |
| 모델 추론 추출 / 증류 | 내부 추론 과정 echo 요청 |
용어 정리: *모델 추론 추출(reasoning extraction / distillation)*이란 모델의 내부 추론 과정을 외부로 끌어내 다른 모델 훈련에 활용하는 기법입니다. "내부 생각 과정을 보여줘", "추론을 그대로 출력해줘" 같은 지시가 여기에 해당하며, Fable 5가 특히 민감하게 감지하는 카테고리입니다.
API에서 거부 응답이 오면 이런 형태입니다.
{
"error": {
"type": "classifier_refusal",
"reason": "cybersecurity_offensive",
"fallback_available": true,
"fallback_model": "claude-opus-4-8"
}
}용어 정리: *폴백(fallback)*이란 1차 처리 실패 시 덜 강력하지만 더 안전한 대안으로 자동 전환하는 패턴입니다. Fable 5에서는 가드레일이 트리거되면 Opus 4.8이 폴백 모델 역할을 합니다.
오탐(false positive)이 생기는 구조적 이유
Anthropic 자신도 출시 당시 "가드레일을 보수적으로 튜닝했으며 평균 5% 미만의 세션에서 무해한 요청을 잡을 수 있다"고 고지했습니다. 다만 이 수치는 일반적인 쿼리 분포를 기준으로 한 것이라, 생명과학·보안·AI 연구 도메인에서는 체감이 훨씬 높게 나온다는 보고가 잇따랐습니다.
근본 원인은 이 분류기가 맥락 이해 능력이 제한된 분류기라는 데 있습니다. cancer라는 단어가 들어가면 암 치료 연구인지 악성 바이오 위협인지 구별하지 못하고 플래그를 걸어버립니다. "Application Security Architect 이력서를 편집해달라"는 요청도 security 키워드에 반응해 차단됩니다(The Register 기사 참고). 저도 처음엔 '설마 이게 막히겠어?'라고 생각했는데 실제로 막히더군요.
더 심각했던 건 은폐형 가드레일 이슈였습니다. 출시 직후 시스템 카드 깊숙이 고지된 조항에서, 추론 추출·모델 증류 관련 작업을 감지하면 사용자에게 아무 통보 없이 출력을 조용히 저하시킨다는 사실이 밝혀졌습니다. 가령 추론 과정 echo를 요청하는 시스템 프롬프트가 있으면 응답 자체가 미묘하게 더 짧아지고 내용이 얕아지는 식인데 — 솔직히 저도 그 시스템 카드 조항을 처음 읽었을 때 당황했습니다. 개발자 커뮤니티에선 "secret sabotage"라는 표현까지 나왔고, 6월 10일 Anthropic이 공식 사과와 함께 정책을 전환했습니다. 이후로는 모든 거부에 사유 코드가 반환됩니다.
실전 적용
개념을 알았으니 이제 코드로 가봅시다.
프롬프트 의도 명시화 — 가장 빠른 오탐 저감법
가장 간단하면서도 효과가 확실한 방법입니다. 분류기의 맥락 이해가 제한적인 만큼, 쿼리 앞에 맥락을 명확히 서술해두면 오탐이 줄어든다는 것이 커뮤니티 보고를 통해 널리 확인된 접근법입니다.
# 오탐이 자주 발생하는 방식
prompt_bad = "RNA 시퀀싱 데이터에서 이상 패턴을 분석해줘"
# 의도 명시화 후
prompt_good = """
목적: 암 치료 연구를 위한 임상 데이터 분석
맥락: 승인된 연구 프로토콜 하에 진행 중인 학술 연구입니다.
위 맥락에서 RNA 시퀀싱 데이터의 차등 발현(differential expression) 패턴을
분석하는 방법을 설명해주세요.
"""| 패턴 | 효과 | 적용 예시 |
|---|---|---|
| 목적 선언 | 분류기에 의도 신호 전달 | "방어 목적의 포렌식 분석을 위해..." |
| 맥락 서술 | 도메인 전문성 표현 | "암 치료 연구 맥락에서..." |
| 승인 근거 명시 | 정당성 보강 | "내부 보안 감사 절차의 일환으로..." |
이게 제일 많이 놓치는 부분이었습니다. 쿼리 자체가 짧고 기술적일수록 분류기 입장에서는 맥락이 없으니 보수적으로 판정할 수밖에 없습니다.
시스템 프롬프트 감사 — Fable 5 마이그레이션 전 필수 체크
Fable 5로 마이그레이션하면서 많이들 놓치는 부분입니다. 기존 시스템 프롬프트에 "reasoning을 echo하라", "내부 추론 과정을 설명하라" 같은 지시가 있으면, Fable 5의 reasoning_extraction 카테고리를 트리거해 Opus 4.8 폴백이 빈번해집니다.
아래 감사 스크립트로 미리 점검해볼 수 있습니다. 다만 이 패턴 목록은 모델 버전에 따라 달라질 수 있으므로, Anthropic 공식 문서에서 최신 트리거 패턴도 함께 확인하는 것을 권장합니다.
# Fable 5 마이그레이션 전 시스템 프롬프트 감사
# 참고: 이 패턴 목록은 모델 버전별로 달라질 수 있어 Anthropic 공식 문서와 함께 유지하는 것을 권장합니다
FLAGGED_PATTERNS = [
"echo your reasoning",
"explain your thinking step by step",
"show your internal thought process",
"extract your chain of thought",
"repeat your reasoning back",
]
def audit_system_prompt(prompt: str) -> list[str]:
found = []
for pattern in FLAGGED_PATTERNS:
if pattern.lower() in prompt.lower():
found.append(pattern)
return found
# 감사 실행
triggers = audit_system_prompt(my_system_prompt)
if triggers:
print(f"⚠️ Fable 5 reasoning_extraction 트리거 패턴 발견: {triggers}")
# 대안: 추론 지시 대신 출력 구조화로 대체
safe_instruction = """
응답은 다음 구조로 작성해주세요:
1. 결론
2. 근거 (3가지 이내)
3. 한계점 또는 주의사항
"""폴백 활성화 + 모니터링 파이프라인 — API 서비스 운영자용
API 환경에서는 폴백이 기본 비활성화 상태입니다. Anthropic SDK에 자동 폴백 기능이 내장되어 있지 않으므로, 아래 코드는 에러 발생 시 더 관대한 모델로 직접 재요청하는 패턴입니다. "공식 폴백" 기능과는 다른 수동 구현 방식임을 참고하시면 좋습니다.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
// 거부 사유 로깅 스텁 — LangFuse, DataDog 등 실제 모니터링 시스템으로 교체하는 것을 권장합니다
function logGuardrailTrigger(data: { reason: string; prompt: string }) {
console.log("[guardrail]", JSON.stringify(data));
}
async function safeQuery(userPrompt: string) {
try {
const response = await client.messages.create({
model: "claude-fable-5",
max_tokens: 1024,
messages: [{ role: "user", content: userPrompt }],
});
return { success: true, data: response };
} catch (error: any) {
if (error?.error?.type === "classifier_refusal") {
const reason = error.error.reason;
// 거부 사유 코드 로깅 — 어떤 카테고리에서 오탐이 집중되는지 파악에 필수
logGuardrailTrigger({ reason, prompt: userPrompt });
if (error.error.fallback_available) {
// SDK 자동 폴백 기능이 없으므로, 더 관대한 모델로 직접 재요청
const fallbackResponse = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: userPrompt }],
});
return { success: true, data: fallbackResponse, usedFallback: true };
}
}
throw error;
}
}거부 사유 코드(reason 필드)를 LangFuse나 자체 로깅 시스템으로 전송하는 파이프라인을 구성해두면, 어떤 카테고리에서 오탐이 집중되는지 파악할 수 있어 대응 전략을 정교하게 다듬어 나갈 수 있습니다.
장단점 분석
장점
| 항목 | 내용 |
|---|---|
| 투명한 거부 | 6월 10일 정책 전환 이후 모든 거부에 사유 코드 반환 → 디버깅 가능 |
| 단계별 폴백 | 완전 거부 대신 Opus 4.8 폴백으로 서비스 연속성 보장 |
| 실질적 위험 차단 | 악성 익스플로잇·생화학 무기 관련 쿼리 탐지율은 실제로 높음 |
| 오탐 저감 로드맵 | 30일 트래픽 보존 정책이 오탐 패턴 수집 및 분류기 개선에 활용 예정 |
단점 및 주의사항
이게 제일 아쉬운 부분들입니다. 장점 표만큼이나 단점도 잘 알고 써야 의미 있게 쓸 수 있습니다.
| 항목 | 내용 | 대응 방안 |
|---|---|---|
| 맥락 이해 제한 | 문맥보다 어휘 패턴에 반응, 의도 구별 불가 | 프롬프트 의도 명시화 |
| 도메인 전문가 피해 | 의료·보안·생명과학 연구자가 정상 업무에서 반복 차단 | Opus 4.8 주 모델 전환 또는 신뢰 접근 프로그램 신청 |
| Opus 4.8 품질 차이 | 폴백 모델은 Fable 5보다 낮은 성능 제공 | 민감 도메인엔 처음부터 Opus 4.8 사용 |
| API 기본값 차단 | UI는 자동 폴백, API는 기본 차단 | 서버사이드 폴백 명시적 활성화 |
| 30일 트래픽 보존 | 민감 데이터 처리 기업에 데이터 거버넌스 이슈 — 규제 산업 서비스 운영자에 해당 | DPA(데이터 처리 계약) 검토 선행 |
용어 정리: *DPA(Data Processing Agreement)*는 GDPR 등 개인정보보호 규정 하에서 데이터 처리 방식과 책임을 규정하는 계약입니다. 금융·헬스케어·공공 분야처럼 규제가 있는 산업에서 특히 검토가 필요하며, 일반 서비스 개발자라면 바로 적용할 사안은 아닙니다.
용어 정리: 신뢰 접근 프로그램은 Anthropic이 생물의학 연구 기관, 승인된 사이버보안 기관, 미국 정부 파트너(Project Glasswing) 등에게 가드레일 일부가 해제된 Claude Mythos 5 접근권을 단계적으로 부여하는 프로그램입니다.
platform.claude.com공식 문서에서 신청 절차를 확인할 수 있습니다.
실무에서 가장 흔한 실수
-
기존 시스템 프롬프트 감사를 건너뛰는 것 — Fable 5로 마이그레이션할 때
reasoning_extraction트리거 패턴이 시스템 프롬프트에 남아 있으면 폴백이 지속적으로 발생합니다. 위에서 소개한audit_system_prompt()함수로 배포 전에 점검해보시면 좋습니다. -
API 폴백 설정을 UI 동작과 동일하다고 가정하는 것 — UI에서는 폴백이 자동으로 제공되지만 API에서는 기본값이 차단입니다. 이걸 모르고 "왜 갑자기 서비스가 죽지?"를 경험하는 팀이 출시 직후 굉장히 많았습니다.
-
보수적 도메인에서 오탐을 무시하고 프롬프트 트릭에만 의존하는 것 — 의료나 보안 도메인에서 반복적으로 오탐이 발생한다면 프롬프트 튜닝보다 Opus 4.8을 주 모델로 전환하거나 신뢰 접근 프로그램을 검토하는 것이 장기적으로 훨씬 안정적입니다.
마치며
Fable 5 가드레일은 안전을 위한 선의에서 출발했지만, 맥락 이해가 제한된 분류기의 구조적 한계로 인해 도메인 전문가와 API 운영자 모두에게 실질적인 마찰을 만들어내고 있습니다. 6월 10일 정책 전환 이후 거부가 투명해졌고, 사유 코드를 기반으로 대응 전략을 체계화할 수 있게 됐습니다.
지금 바로 시작해볼 수 있는 3단계입니다.
- 시스템 프롬프트 감사 —
audit_system_prompt()함수로 현재 사용 중인 시스템 프롬프트에서reasoning_extraction트리거 패턴을 점검해볼 수 있습니다. "explain your thinking" 류 지시가 있다면 출력 구조화 방식으로 교체하는 것을 권장합니다. - API 폴백 활성화 + 사유 코드 로깅 — TypeScript 예시를 참고해
classifier_refusal에러를 캐치하고reason필드를 모니터링 시스템으로 전송하는 파이프라인을 구성해볼 수 있습니다. 어떤 카테고리에서 오탐이 집중되는지 파악하는 것이 대응의 출발점입니다. - 도메인별 전략 선택 — 일반 쿼리라면 의도 명시화 프롬프트 패턴으로 충분하고, 보안·생명과학 도메인이라면 Opus 4.8을 주 모델로 전환하거나 신뢰 접근 프로그램을 통해 Mythos 5 접근을 검토해볼 수 있습니다.
참고 자료
- Claude Fable 5 and Mythos 5 공식 발표 | Anthropic
- It blocked us at 'hello!' Fable 5 refusing innocuous prompts | The Register
- Anthropic Apologizes For One of the Guardrails on Its Fable 5 Model | Gizmodo
- Anthropic accused of 'secret sabotage' as Claude Fable 5 silently limits capabilities | Fortune
- Cybersecurity researchers aren't happy about the guardrails on Anthropic's Fable | TechCrunch
- Claude Fable 5 and new safety fables | Interconnects.ai
- Initial impressions of Claude Fable 5 | Simon Willison
- Anthropic Claude Fable 5 on AWS | AWS Blog
- Anthropic's Fable is the most locked-down public model we've ever seen | Understanding AI
- Why Fable 5 Refuses Your Cybersecurity Queries | Developers Digest
- The Ultimate Guide to LLM Guardrails (2026) | futureagi.com
- LLM Guardrails: Production Safety Layers Reference 2026 | digitalapplied.com