본문으로 건너뛰기

안전, 거부 & 폴백

중급

프로덕션에서 당신의 코드는 Claude가 예상대로 답하지 않거나 답할 수 없는 경우를 반드시 처리해야 합니다. 잘 처리하면 사용자에게 보이지 않고, 잘못 처리하면 충돌이나 혼란스러운 응답이 됩니다.

서로 다른 두 가지

  • 모델 거부 — Claude가 요청을 거절합니다(예: 유해하다고 판단). 응답이 이를 알립니다(흔히 거부 stop_reason/콘텐츠로). 오류가 아니라 정상적인 결과로 취급하세요.
  • 분류기/안전 차단 — 별도의 안전 계층이 콘텐츠를 차단할 수 있습니다. 이것은 모델 거부와 다르게 보일 수 있습니다.

어느 쪽을 받았는지 알면 무턱대고 재시도하는 대신 적절히 대응할 수 있습니다.

우아하게 처리하기

resp = client.messages.create(...)
if getattr(resp, "stop_reason", None) == "refusal":
# Don't show a raw/empty result. Offer a safe fallback or a clarifying ask.
show_user("I can't help with that as asked. Here's what I can do instead…")
else:
render(resp)

원치 않는 거부 줄이기

  • 정당한 맥락을 추가하세요. 의도가 선의일 때도 요청이 민감한 무언가와 패턴 일치할 수 있습니다; 진짜이고 정당한 목적을 밝히면 도움이 됩니다.
  • 구체적으로 하세요. 모호하거나 아슬아슬한 표현은 경계를 부릅니다.
  • 맞서지 마세요. 요청이 진정으로 허용되지 않는 것이라면 거부가 옳습니다 — 탈옥을 시도하지 말고 우아한 경로를 설계하세요.

폴백 패턴

  • 막다른 길 대신 명확화 질문.
  • 안전한 대안("대신 공개 정보를 요약해 드릴 수 있습니다").
  • 파이프라인의 경우, 신뢰도/적격성이 낮을 때 사람에게 라우팅.

다음