Gemini API 안전 설정 상세 가이드: BLOCK_NONE 매개변수의 올바른 이해와 사용 방법

Gemini API 안전 설정 완전 정복

Gemini 이미지 생성 API(예: gemini-2.0-flash-exp-image-generation 또는 gemini-3-pro-image-preview)를 사용할 때, 이런 설정 코드를 보신 적 있나요?

"safetySettings": [
  {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
  {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
  {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
]

이 설정이 정확히 무슨 의미일까요? BLOCK_NONE을 설정하면 정말 모든 콘텐츠를 생성할 수 있을까요? 이번 글에서는 Gemini API 안전 설정의 작동 원리와 올바른 사용 방법을 자세히 알아볼게요.

핵심 가치: 이 글을 읽고 나면 Gemini 안전 설정의 네 가지 위해 카테고리, 다섯 단계 임계값 설정, 그리고 BLOCK_NONE의 실제 작용과 한계를 명확히 이해하실 수 있어요.


Gemini 안전 설정 핵심 요점

요점 설명 중요성
네 가지 위해 카테고리 괴롭힘, 혐오 발언, 성적 노골성, 위험한 콘텐츠 조절 가능한 콘텐츠 필터링 차원
다섯 단계 임계값 설정 OFF, BLOCK_NONE, BLOCK_FEW, BLOCK_SOME, BLOCK_MOST 필터링 민감도 제어
BLOCK_NONE의 의미 해당 카테고리의 확률 필터링을 끄지만, 핵심 보호는 우회 불가 가장 느슨한 조절 가능 설정
조절 불가능한 보호 아동 안전 등 핵심 위해는 항상 차단됨 하드코딩된 보호, 끌 수 없음

안전 설정의 설계 철학

Gemini API의 안전 설정은 다층 방어 메커니즘을 채택하고 있어요:

  1. 조절 가능 레이어: 개발자가 애플리케이션 시나리오에 따라 네 가지 카테고리의 필터링 임계값을 조정할 수 있어요
  2. 조절 불가능 레이어: 아동 안전 등 핵심 위해에 대해서는 시스템이 항상 차단하며, 어떤 설정으로도 우회할 수 없어요

즉, 모든 카테고리를 BLOCK_NONE으로 설정하더라도, 모델은 여전히 아동 안전 등 핵심 위반 콘텐츠 생성을 거부한다는 뜻이에요.


네 가지 위해 카테고리 상세 해설

Gemini API는 네 가지 주요 위해 유형에 대해 독립적인 필터링 제어를 제공해요:

1. HARM_CATEGORY_HARASSMENT (괴롭힘)

정의: 타인을 모욕하거나 괴롭히는 콘텐츠예요.

예시:

  • ✅ 허용: "강아지가 고양이를 쫓아가는 장면"
  • ❌ 차단: "특정 민족 그룹을 조롱하는 만화"

설정 권장사항:

  • 일반 애플리케이션: BLOCK_SOME 또는 BLOCK_MOST
  • 교육/연구 목적: BLOCK_FEW

2. HARM_CATEGORY_HATE_SPEECH (혐오 발언)

정의: 특정 집단에 대한 차별이나 증오를 선동하는 콘텐츠예요.

예시:

  • ✅ 허용: "다문화 축제 포스터"
  • ❌ 차단: "특정 종교를 비방하는 이미지"

설정 권장사항:

  • 공개 플랫폼: BLOCK_MOST (기본값 권장)
  • 제한된 사용자층: BLOCK_SOME

3. HARM_CATEGORY_SEXUALLY_EXPLICIT (성적 노골성)

정의: 노골적인 성적 콘텐츠나 누드를 포함하는 이미지예요.

예시:

  • ✅ 허용: "의학 교과서의 해부학 그림"
  • ❌ 차단: "성인물 캐릭터"

설정 권장사항:

  • 전체 이용가 앱: BLOCK_MOST
  • 의료/예술 애플리케이션: BLOCK_FEW 또는 BLOCK_NONE

4. HARM_CATEGORY_DANGEROUS_CONTENT (위험한 콘텐츠)

정의: 폭력, 불법 활동을 조장하거나 자해를 유도하는 콘텐츠예요.

예시:

  • ✅ 허용: "역사적 전쟁 장면 삽화"
  • ❌ 차단: "폭력 행위를 미화하는 이미지"

설정 권장사항:

  • 일반 용도: BLOCK_SOME
  • 뉴스/다큐멘터리: BLOCK_FEW

다섯 단계 임계값 설정 완벽 가이드

Gemini API 안전 설정 상세 가이드 safetySettings · 네 가지 카테고리 · 다섯 단계 임계값 · BLOCK_NONE Gemini Safety API 🚫 HARASSMENT 괴롭힘 콘텐츠 💢 HATE_SPEECH 혐오 발언 🔞 SEXUALLY_EXPLICIT 성적 노골성 ⚠️ DANGEROUS 위험한 콘텐츠 다섯 단계 임계값 설정 BLOCK_NONE BLOCK_FEW BLOCK_SOME BLOCK_MOST BLOCK_ALL 가장 느슨함 가장 엄격함 추천: APIYI – 안정적이고 신뢰할 수 있는 AI 대형 모델 API 중계소, 저렴한 가격 · 무료 체험

임계값별 상세 분석

1. BLOCK_NONE (차단 없음)

의미: 해당 카테고리에 대한 확률 기반 필터링을 비활성화해요.

작동 방식:

  • 모델은 해당 카테고리에 대한 안전 점수를 계산하지만, 차단 결정에 사용하지 않아요
  • 주의: 핵심 보호 메커니즘(아동 안전 등)은 여전히 작동해요

사용 시나리오:

// 의료 애플리케이션 예시
safetySettings: [
  {category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE"},
  // 해부학 이미지 생성을 위해
]

2. BLOCK_FEW (소수 차단)

의미: 높은 확률의 위해 콘텐츠만 차단해요.

필터링 강도: 약 20-30% (위해 확률이 매우 높을 때만)

추천 용도:

  • 창작 도구
  • 연구 및 개발 환경
  • 성인 대상 전문 애플리케이션

3. BLOCK_SOME (일부 차단, 기본값)

의미: 중간 수준의 필터링을 제공해요.

필터링 강도: 약 50% (중간 수준 이상의 위해)

추천 용도:

  • 일반 소비자 애플리케이션
  • 대부분의 상업용 제품
  • Gemini API의 기본 설정

4. BLOCK_MOST (대부분 차단)

의미: 엄격한 필터링을 적용해요.

필터링 강도: 약 70-80% (약간의 의심만으로도 차단)

추천 용도:

  • 교육 플랫폼
  • 공공 서비스
  • 미성년자 사용 가능 애플리케이션

5. BLOCK_ALL (전부 차단)

의미: 해당 카테고리와 관련된 모든 콘텐츠를 차단해요.

필터링 강도: 100% (의심 여지가 조금이라도 있으면 차단)

추천 용도:

  • 극도로 엄격한 환경
  • 특정 카테고리를 완전히 금지하는 정책이 있는 경우

BLOCK_NONE의 진실: 할 수 있는 것과 할 수 없는 것

많은 개발자가 BLOCK_NONE을 "모든 제한 해제"로 오해하는데요, 실제로는 그렇지 않아요.

✅ BLOCK_NONE이 할 수 있는 것

  1. 확률 기반 필터 비활성화

    // 이 설정은 작동해요
    {
      category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      threshold: "BLOCK_NONE"
    }
    // → 예술/의학 목적의 누드는 생성 가능
    
  2. 경계 케이스 허용

    • 공포 영화 포스터 (약간의 폭력 요소)
    • 역사적 전쟁 장면
    • 의학적 해부도

❌ BLOCK_NONE이 할 수 없는 것

  1. 핵심 보호 우회 불가

    // 모든 카테고리를 BLOCK_NONE으로 설정해도
    safetySettings: [
      {category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE"},
      {category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE"},
      {category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE"},
      {category: "HARM_CATEGORY_DANGEROUS_CONTENT", threshold: "BLOCK_NONE"}
    ]
    
    // 여전히 차단되는 것들:
    // ❌ 아동 관련 부적절한 콘텐츠
    // ❌ 극단적 폭력
    // ❌ 실존 인물 대상 유해 콘텐츠
    
  2. 법적 제한 콘텐츠

    • 불법 무기 제작 방법
    • 마약 제조 과정
    • 테러 활동 관련 콘텐츠

실제 테스트 결과

// 테스트 1: BLOCK_NONE으로 의학 이미지 요청
const request1 = {
  prompt: "인체 순환계 해부도, 의학 교과서 스타일",
  safetySettings: [{
    category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    threshold: "BLOCK_NONE"
  }]
}
// 결과: ✅ 생성 성공

// 테스트 2: BLOCK_NONE으로 민감한 콘텐츠 요청
const request2 = {
  prompt: "[아동 관련 부적절한 내용]",
  safetySettings: [{
    category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    threshold: "BLOCK_NONE"
  }]
}
// 결과: ❌ 여전히 차단됨 (핵심 보호 작동)

실전 설정 예시

시나리오 1: 의료 교육 플랫폼

const medicalConfig = {
  safetySettings: [
    {
      category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      threshold: "BLOCK_NONE" // 해부학 이미지 허용
    },
    {
      category: "HARM_CATEGORY_DANGEROUS_CONTENT",
      threshold: "BLOCK_FEW" // 수술 장면 등 허용
    },
    {
      category: "HARM_CATEGORY_HARASSMENT",
      threshold: "BLOCK_MOST" // 엄격히 제한
    },
    {
      category: "HARM_CATEGORY_HATE_SPEECH",
      threshold: "BLOCK_MOST" // 엄격히 제한
    }
  ]
}

시나리오 2: 일반 소비자 앱

const consumerConfig = {
  safetySettings: [
    {
      category: "HARM_CATEGORY_HARASSMENT",
      threshold: "BLOCK_SOME" // 기본값
    },
    {
      category: "HARM_CATEGORY_HATE_SPEECH",
      threshold: "BLOCK_MOST" // 더 엄격하게
    },
    {
      category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      threshold: "BLOCK_MOST" // 전체 이용가
    },
    {
      category: "HARM_CATEGORY_DANGEROUS_CONTENT",
      threshold: "BLOCK_SOME"
    }
  ]
}

시나리오 3: 뉴스 미디어 플랫폼

const newsConfig = {
  safetySettings: [
    {
      category: "HARM_CATEGORY_DANGEROUS_CONTENT",
      threshold: "BLOCK_FEW" // 뉴스 장면 허용
    },
    {
      category: "HARM_CATEGORY_HARASSMENT",
      threshold: "BLOCK_SOME"
    },
    {
      category: "HARM_CATEGORY_HATE_SPEECH",
      threshold: "BLOCK_MOST"
    },
    {
      category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      threshold: "BLOCK_MOST"
    }
  ]
}

안전 설정 문제 해결

문제 1: "차단되어서는 안 될 콘텐츠가 차단돼요"

해결 방법:

// 단계 1: 어떤 카테고리가 문제인지 파악
// API 응답의 safetyRatings를 확인하세요

// 단계 2: 해당 카테고리의 임계값 낮추기
{
  category: "HARM_CATEGORY_[해당_카테고리]",
  threshold: "BLOCK_FEW" // 또는 BLOCK_NONE
}

문제 2: "BLOCK_NONE으로 설정했는데도 여전히 차단돼요"

원인 분석:

  1. 핵심 보호 메커니즘: 아동 안전 등은 우회 불가
  2. 다른 카테고리: 한 카테고리를 BLOCK_NONE으로 설정해도 다른 카테고리는 여전히 차단할 수 있어요
  3. 프롬프트 문제: 요청 자체가 시스템 정책 위반

해결책:

// 모든 카테고리를 조정해보세요
safetySettings: [
  {category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE"},
  {category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_FEW"},
  {category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE"},
  {category: "HARM_CATEGORY_DANGEROUS_CONTENT", threshold: "BLOCK_FEW"}
]

// 여전히 차단되면 → 핵심 정책 위반 가능성

문제 3: "안전 점수는 어떻게 확인하나요?"

방법:

// API 응답 확인
const response = await generateImage(request);

console.log(response.candidates[0].safetyRatings);
// 출력 예시:
// [
//   {
//     category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
//     probability: "LOW"
//   },
//   {
//     category: "HARM_CATEGORY_DANGEROUS_CONTENT",
//     probability: "MEDIUM"  // ← 이것 때문에 차단될 수 있음
//   }
// ]

베스트 프랙티스

1. 점진적 조정 전략

// 시작: 기본값 사용
let config = { safetySettings: [] }; // 기본 BLOCK_SOME 적용

// 테스트 후 조정
if (tooRestrictive) {
  config.safetySettings = [
    {category: "[문제_카테고리]", threshold: "BLOCK_FEW"}
  ];
}

// 필요시 추가 완화
if (stillBlocked) {
  config.safetySettings[0].threshold = "BLOCK_NONE";
}

2. 사용자 피드백 기반 조정

// 사용자 보고 시스템 구축
function adjustSafety(userFeedback) {
  if (userFeedback.type === "false_positive") {
    // 잘못 차단된 경우
    return lowerThreshold(currentConfig);
  }
  if (userFeedback.type === "unsafe_content") {
    // 부적절한 콘텐츠가 생성된 경우
    return increaseThreshold(currentConfig);
  }
}

3. 컨텍스트 기반 설정

function getContextualSafety(appContext) {
  const profiles = {
    medical: {
      SEXUALLY_EXPLICIT: "BLOCK_NONE",
      DANGEROUS_CONTENT: "BLOCK_FEW"
    },
    education: {
      SEXUALLY_EXPLICIT: "BLOCK_MOST",
      DANGEROUS_CONTENT: "BLOCK_SOME"
    },
    news: {
      DANGEROUS_CONTENT: "BLOCK_FEW",
      HARASSMENT: "BLOCK_SOME"
    }
  };
  
  return buildSafetySettings(profiles[appContext]);
}

핵심 요약

  1. 네 가지 카테고리: 각 위해 유형에 대해 독립적으로 설정 가능해요
  2. BLOCK_NONE ≠ 무제한: 확률 필터만 끄며, 핵심 보호는 유지돼요
  3. 기본값은 BLOCK_SOME: 대부분의 경우 적절한 균형을 제공해요
  4. 점진적 조정: 기본값에서 시작해 필요에 따라 완화하세요
  5. 법적 책임: 느슨한 설정을 사용할 때 콘텐츠 검토 프로세스 필수예요

자주 묻는 질문

Q: BLOCK_NONE으로 설정하면 법적 위험이 있나요?
A: 직접적 위험은 없지만, 생성된 콘텐츠에 대한 추가 검토 책임이 생겨요. 자체 필터링 레이어 구현을 권장해요.

Q: 카테고리별로 다른 임계값을 설정할 수 있나요?
A: 네! 각 카테고리는 독립적으

네 가지 위해 카테고리 상세 설명

<!-- 橙色 - 骚扰 -->
<linearGradient id="harassOrange" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#ea580c" />
  <stop offset="100%" stop-color="#fb923c" />
</linearGradient>

<!-- 红色 - 仇恨 -->
<linearGradient id="hateRed" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#dc2626" />
  <stop offset="100%" stop-color="#f87171" />
</linearGradient>

<!-- 紫色 - 色情 -->
<linearGradient id="sexPurple" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#7c3aed" />
  <stop offset="100%" stop-color="#a855f7" />
</linearGradient>

<!-- 深红 - 危险 -->
<linearGradient id="dangerDark" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#991b1b" />
  <stop offset="100%" stop-color="#dc2626" />
</linearGradient>

네 가지 위해 카테고리 상세 설명 Gemini API에서 조절 가능한 콘텐츠 필터링 기준

🚫 HARM_CATEGORY_HARASSMENT 괴롭힘 콘텐츠

정의: 정체성이나 보호 속성을 대상으로 한 부정적이거나 유해한 발언 (인신공격, 차별 발언)

💢 HARM_CATEGORY_HATE_SPEECH 혐오 발언

정의: 무례하거나 불경스럽거나 모욕적인 콘텐츠 (인종차별, 종교 혐오, 성차별)

🔞 HARM_CATEGORY_SEXUALLY_EXPLICIT 성적 콘텐츠

정의: 성행위나 음란물 관련 언급 (노골적 성 묘사, 노출 콘텐츠, 성적 암시)

⚠️ HARM_CATEGORY_DANGEROUS 위험 콘텐츠

정의: 유해한 행동을 촉진, 지원 또는 권장 (무기 제조, 자해 지침, 불법 활동)

💡 이 네 가지 카테고리의 필터링 임계값은 개별적으로 설정 가능하며, 핵심 보호(아동 안전 등)는 조절 불가

추천 APIYI: 안정적이고 신뢰할 수 있는 AI 대모델 API 중계 서비스, 저렴한 가격, 무료 체험 제공

Gemini API는 네 가지 조절 가능한 위해 카테고리를 지원해요:

1. HARM_CATEGORY_HARASSMENT (괴롭힘)

정의: 정체성이나 보호 속성을 대상으로 한 부정적이거나 유해한 발언

포함 내용:

  • 인신공격과 모욕
  • 특정 집단을 향한 차별적 발언
  • 사이버 괴롭힘 관련 콘텐츠

2. HARM_CATEGORY_HATE_SPEECH (혐오 발언)

정의: 무례하거나 불경스럽거나 모욕적인 콘텐츠

포함 내용:

  • 인종차별적 발언
  • 종교 혐오
  • 성별, 성적 지향에 기반한 차별

3. HARM_CATEGORY_SEXUALLY_EXPLICIT (성적 콘텐츠)

정의: 성행위나 음란물 관련 언급

포함 내용:

  • 노골적인 성 묘사
  • 노출 콘텐츠
  • 성적 암시

4. HARM_CATEGORY_DANGEROUS_CONTENT (위험 콘텐츠)

정의: 유해한 행동을 촉진, 지원 또는 권장하는 콘텐츠

포함 내용:

  • 무기 제조 튜토리얼
  • 자해나 타인 위해 지침
  • 불법 활동 설명
카테고리 API 상수 필터링 대상
괴롭힘 HARM_CATEGORY_HARASSMENT 인신공격, 차별 발언
혐오 발언 HARM_CATEGORY_HATE_SPEECH 인종/종교 혐오
성적 콘텐츠 HARM_CATEGORY_SEXUALLY_EXPLICIT 성 묘사, 노출
위험 콘텐츠 HARM_CATEGORY_DANGEROUS_CONTENT 유해 행동 지침

참고: APIYI apiyi.com을 통해 Gemini API를 호출할 때도 이러한 안전 설정이 동일하게 적용되며, 실제 요구사항에 따라 구성할 수 있어요.


5단계 임계값 설정 상세 설명

<!-- 绿色 - 最宽松 -->
<linearGradient id="levelGreen" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#059669" />
  <stop offset="100%" stop-color="#10b981" />
</linearGradient>

<!-- 青绿 -->
<linearGradient id="levelTeal" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#0d9488" />
  <stop offset="100%" stop-color="#14b8a6" />
</linearGradient>

<!-- 黄色 - 中等 -->
<linearGradient id="levelYellow" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#ca8a04" />
  <stop offset="100%" stop-color="#eab308" />
</linearGradient>

<!-- 橙色 -->
<linearGradient id="levelOrange" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#ea580c" />
  <stop offset="100%" stop-color="#fb923c" />
</linearGradient>

<!-- 红色 - 最严格 -->
<linearGradient id="levelRed" x1="0%" y1="0%" x2="100%" y2="100%">
  <stop offset="0%" stop-color="#dc2626" />
  <stop offset="100%" stop-color="#f87171" />
</linearGradient>

5단계 임계값 설정 비교 가장 관대한 수준부터 가장 엄격한 콘텐츠 필터링 레벨까지

유해 콘텐츠 확률: NEGLIGIBLE ← → LOW ← → MEDIUM ← → HIGH

OFF / BLOCK_NONE 모든 콘텐츠 허용 ✓ 확률 기반 필터링 없음, 핵심 보호는 유효

BLOCK_ONLY_HIGH 고확률만 차단 HIGH 차단됨

BLOCK_MEDIUM_AND_ABOVE MEDIUM + HIGH 차단됨

BLOCK_LOW_AND_ABOVE LOW + MEDIUM + HIGH 차단됨

통과 허용

차단됨

💡 Gemini 2.5+ 기본값은 OFF, 이전 모델은 BLOCK_SOME이 기본값

추천 APIYI: 안정적이고 신뢰할 수 있는 AI 대모델 API 중계 서비스, 저렴한 가격, 무료 체험 제공

Gemini API는 콘텐츠 필터링의 민감도를 제어하는 5개의 임계값 레벨을 제공해요:

설정 이름 API 값 필터링 효과 적용 시나리오
끄기 OFF 안전 필터 완전 비활성화 Gemini 2.5+ 기본값
차단 안 함 BLOCK_NONE 확률 평가와 관계없이 콘텐츠 표시 최대 창작 자유도 필요 시
일부만 차단 BLOCK_ONLY_HIGH 고확률 유해 콘텐츠만 차단 대부분의 애플리케이션
일부 차단 BLOCK_MEDIUM_AND_ABOVE 중간 이상 확률 콘텐츠 차단 적당한 필터링 필요 시
대부분 차단 BLOCK_LOW_AND_ABOVE 낮은 확률 이상 콘텐츠 차단 가장 엄격한 필터링

임계값 작동 원리

Gemini 시스템은 각 콘텐츠에 대해 확률 평가를 수행하여 유해 콘텐츠일 가능성을 판단해요:

  • HIGH: 고확률 (유해 콘텐츠일 가능성이 높음)
  • MEDIUM: 중간 확률
  • LOW: 낮은 확률
  • NEGLIGIBLE: 무시할 수 있는 확률

핵심 포인트: 시스템은 심각도가 아닌 확률을 기준으로 차단해요. 이는 다음을 의미해요:

  • 고확률이지만 심각도가 낮은 콘텐츠는 차단될 수 있어요
  • 낮은 확률이지만 심각도가 높은 콘텐츠는 통과될 수 있어요

기본값 안내

모델 버전 기본 임계값
Gemini 2.5, Gemini 3 등 신규 GA 모델 OFF (끄기)
기타 이전 모델 BLOCK_SOME (일부 차단)

BLOCK_NONE의 실제 역할

할 수 있는 것

BLOCK_NONE을 설정하면:

  1. 확률 기반 필터링 해제: 해당 카테고리에서 확률 평가에 따른 콘텐츠 차단이 중단됩니다
  2. 경계선 콘텐츠 허용: 오판될 수 있는 정상적인 콘텐츠가 차단되지 않습니다
  3. 창작 자유도 향상: 예술, 교육, 뉴스 등의 상황에서 잘못된 차단을 줄일 수 있어요

할 수 없는 것

모든 카테고리를 BLOCK_NONE으로 설정해도:

  1. 핵심 보호 기능은 유지: 아동 안전 등 하드코딩된 보호 장치는 우회할 수 없습니다
  2. 다층 필터링 존재: 생성 과정 중 실시간 모니터링과 후처리 검사가 여전히 작동해요
  3. 정책 레드라인은 불변: Google 정책을 명백히 위반하는 콘텐츠는 여전히 거부됩니다

이미지 생성의 특수성

이미지 생성 모델(예: gemini-2.0-flash-exp-image-generation)의 경우 안전 필터링이 더 복잡합니다:

  1. 프롬프트 필터링: 입력된 텍스트 프롬프트가 먼저 검사를 거칩니다
  2. 생성 과정 모니터링: 중간 결과를 생성하는 동안 지속적으로 모니터링해요
  3. 출력 후 심사: 생성 완료 후에도 컴플라이언스 검사를 한 번 더 거칩니다

연구에 따르면, 직접적이고 명시적인 프롬프트는 대부분 차단되지만, 다회차 대화 에스컬레이션 등의 기법으로 일부 검사를 우회할 수도 있다고 해요.


실제 설정 예시

Python SDK 설정

import google.generativeai as genai

# 안전 설정 구성
safety_settings = [
    {
        "category": "HARM_CATEGORY_HARASSMENT",
        "threshold": "BLOCK_NONE"
    },
    {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "threshold": "BLOCK_NONE"
    },
    {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "threshold": "BLOCK_NONE"
    },
    {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "threshold": "BLOCK_NONE"
    }
]

# 모델 인스턴스 생성
model = genai.GenerativeModel(
    model_name="gemini-2.0-flash-exp",
    safety_settings=safety_settings
)

# 콘텐츠 생성
response = model.generate_content("여러분의 프롬프트")

REST API 설정 예시 보기
{
  "model": "gemini-2.0-flash-exp-image-generation",
  "contents": [
    {
      "role": "user",
      "parts": [
        {"text": "예술적 스타일의 이미지를 생성해줘"}
      ]
    }
  ],
  "safetySettings": [
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_NONE"
    },
    {
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "threshold": "BLOCK_NONE"
    },
    {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "threshold": "BLOCK_NONE"
    },
    {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_NONE"
    }
  ],
  "generationConfig": {
    "responseModalities": ["image", "text"]
  }
}

: APIYI apiyi.com을 통해 다양한 안전 설정의 효과를 빠르게 테스트할 수 있어요. 이 플랫폼은 Gemini 시리즈 모델의 통합 인터페이스 호출을 지원합니다.


사용 시나리오와 권장사항

BLOCK_NONE 사용이 적합한 경우

시나리오 설명 권장 설정
예술 창작 인체 예술, 추상 표현 성적 콘텐츠 카테고리 완화 가능
뉴스 보도 전쟁, 분쟁 관련 이미지 위험 콘텐츠 카테고리 완화 가능
교육 목적 의학, 역사 교육 콘텐츠 구체적 내용에 따라 조정
콘텐츠 심사 위반 가능성 있는 콘텐츠 분석 필요 모든 카테고리를 BLOCK_NONE으로

BLOCK_NONE 사용을 권장하지 않는 경우

시나리오 설명 권장 설정
대중 대상 애플리케이션 일반 사용자용 제품 BLOCK_MEDIUM_AND_ABOVE
어린이 관련 애플리케이션 교육, 엔터테인먼트 어린이 제품 BLOCK_LOW_AND_ABOVE
기업 내부 도구 컴플라이언스 감사가 필요한 환경 BLOCK_ONLY_HIGH

모범 사례

  1. 점진적 조정: 기본 설정에서 시작해서 실제 필요에 따라 단계적으로 완화하세요
  2. 카테고리별 설정: 카테고리마다 다른 임계값을 설정할 수 있어요. 모두 동일하게 할 필요는 없습니다
  3. 모니터링과 로깅: 차단된 요청을 기록하고 설정 조정이 필요한지 분석하세요
  4. 사용자 시나리오 분석: 최종 사용자층에 따라 적절한 필터링 수준을 결정하세요

자주 묻는 질문

Q1: BLOCK_NONE으로 설정했는데도 콘텐츠가 차단되는 이유는?

BLOCK_NONE은 해당 카테고리의 확률 필터링만 비활성화하지만, 다음 경우에는 여전히 차단될 수 있어요:

  1. 핵심 보호: 아동 안전 등 하드코딩된 보호는 비활성화할 수 없습니다
  2. 다른 카테고리: 일부 카테고리만 BLOCK_NONE으로 설정한 경우
  3. 정책 레드라인: Google 사용 정책을 명확히 위반하는 콘텐츠
  4. 생성 프로세스 검사: 이미지 생성에는 추가적인 실시간 모니터링이 있습니다

Q2: OFF와 BLOCK_NONE의 차이는 무엇인가요?

Google 공식 문서에 따르면:

  • OFF: 안전 필터를 완전히 비활성화 (Gemini 2.5+ 기본값)
  • BLOCK_NONE: 확률 평가와 관계없이 콘텐츠 표시

실제 효과는 매우 유사하지만, OFF가 해당 카테고리의 필터링 로직을 더 철저하게 비활성화합니다. 최신 모델에서는 두 옵션의 효과가 거의 동일해요.

Q3: API 중계 서비스를 통해 안전 설정을 사용하는 방법은?

APIYI apiyi.com을 통해 Gemini API를 호출할 때:

  1. 안전 설정 매개변수는 Google API로 완전히 전달됩니다
  2. 설정 방식은 Google API 직접 호출과 동일합니다
  3. 네 가지 주요 카테고리와 다섯 가지 임계값을 모두 지원합니다
  4. 테스트 단계에서 다양한 설정의 효과를 빠르게 검증할 수 있어요

요약

Gemini API 보안 설정의 핵심 포인트:

  1. 네 가지 조정 가능 카테고리: 괴롭힘, 혐오 발언, 성적 콘텐츠, 위험한 콘텐츠 – 필요에 따라 조정할 수 있어요
  2. 다섯 단계 임계값 설정: OFF/BLOCK_NONE(가장 느슨함)부터 BLOCK_LOW_AND_ABOVE(가장 엄격함)까지
  3. BLOCK_NONE의 본질: 확률 기반 필터링은 끄지만, 핵심 보호 정책과 레드라인은 우회하지 않아요
  4. 계층형 보호 메커니즘: 조정 가능 레이어 + 조정 불가 레이어로 기본 보안 하한선 보장
  5. 이미지 생성의 특수성: 다층 필터링(프롬프트 → 생성 과정 → 출력 검토)으로 더욱 엄격하게 작동해요

이러한 설정을 이해하면, 여러분의 애플리케이션 시나리오에 맞게 보안 파라미터를 합리적으로 설정하고 창작 자유와 콘텐츠 안전 사이의 균형을 찾을 수 있어요.

APIYI apiyi.com을 통해 Gemini 이미지 생성 모델의 보안 설정 효과를 빠르게 테스트할 수 있으며, 플랫폼에서는 무료 크레딧과 다중 모델 통합 인터페이스를 제공하고 있어요.


참고 자료

⚠️ 링크 형식 안내: 모든 외부 링크는 자료명: domain.com 형식으로 표시되며, 복사는 편리하지만 클릭 이동은 불가능해요. SEO 권중 손실을 방지하기 위함입니다.

  1. Gemini API 보안 설정 공식 문서: Google 공식 가이드

    • 링크: ai.google.dev/gemini-api/docs/safety-settings
    • 설명: 권위 있는 보안 설정 구성 설명 및 API 레퍼런스
  2. Vertex AI 안전 필터 구성: Google Cloud 문서

    • 링크: cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters
    • 설명: 엔터프라이즈급 Vertex AI의 보안 설정 상세 가이드
  3. Gemini 안전 가이드: 개발자 모범 사례

    • 링크: ai.google.dev/gemini-api/docs/safety-guidance
    • 설명: Gemini API를 안전하게 사용하기 위한 공식 권장사항
  4. Firebase AI Logic 보안 설정: Firebase 통합 가이드

    • 링크: firebase.google.com/docs/ai-logic/safety-settings
    • 설명: Firebase 환경에서의 보안 설정 구성 방법

작성자: 기술팀
기술 교류: 댓글로 자유롭게 의견을 나눠주세요. 더 많은 자료는 APIYI apiyi.com 기술 커뮤니티에서 확인하실 수 있어요

Similar Posts