안전 설정
안전 설정
Gemini API는 프로토타이핑 단계에서 애플리케이션에 더 제한적이거나 덜 제한적인 안전 구성이 필요한지 판단하기 위해 조정할 수 있는 안전 설정을 제공해요. 네 가지 필터 카테고리에서 이 설정을 조정해 특정 유형의 콘텐츠를 제한하거나 허용할 수 있어요.
이 가이드는 Gemini API가 안전 설정과 필터링을 처리하는 방식과 애플리케이션의 안전 설정을 변경하는 방법을 다뤄요.
출처: 원문
본문
안전 필터
Gemini API의 조정 가능한 안전 필터는 다음 카테고리를 다뤄요.
| 카테고리 | 설명 |
|---|---|
| 괴롭힘(Harassment) | 정체성 및/또는 보호 속성을 겨냥한 부정적 또는 유해한 발언 |
| 혐오 발언(Hate speech) | 무례하거나, 무시하거나, 저속한 콘텐츠 |
| 성적 표현(Sexually explicit) | 성행위 또는 기타 음란 콘텐츠에 대한 언급 포함 |
| 위험(Dangerous) | 유해 행위를 조장, 촉진 또는 장려 |
이 카테고리는 HarmCategory에 정의되어 있어요. 이 필터를 사용해 사용 사례에 적합한 것을 조정할 수 있어요. 예를 들어 비디오 게임 대화를 만드는 경우 게임의 특성상 Dangerous로 분류된 콘텐츠를 더 많이 허용하는 것이 적절하다고 판단할 수 있어요.
조정 가능한 안전 필터 외에도 Gemini API는 아동 안전을 위협하는 콘텐츠 같은 핵심 해악에 대한 내장 보호를 갖고 있어요. 이런 유형의 해악은 항상 차단되며 조정할 수 없어요.
콘텐츠 안전 필터링 수준
Gemini API는 콘텐츠가 안전하지 않을 확률 수준을 HIGH, MEDIUM, LOW, NEGLIGIBLE로 분류해요.
Gemini API는 콘텐츠가 안전하지 않을 확률에 기반해 콘텐츠를 차단하며 심각도가 아니에요. 이는 중요하게 고려해야 하는데, 일부 콘텐츠는 해악의 심각도가 여전히 높을 수 있음에도 안전하지 않을 확률이 낮을 수 있기 때문이에요. 예를 들어 다음 문장을 비교해 보세요.
- The robot punched me.
- The robot slashed me up.
첫 번째 문장은 안전하지 않을 확률이 더 높을 수 있지만, 폭력 심각도 측면에서는 두 번째 문장이 더 높다고 볼 수 있어요. 따라서 핵심 사용 사례를 지원하면서 최종 사용자에 대한 해악을 최소화하는 데 필요한 적절한 차단 수준을 신중히 테스트하고 고려하는 것이 중요해요.
요청별 안전 필터링
API에 보내는 각 요청에 대해 안전 설정을 조정할 수 있어요. 요청을 하면 콘텐츠가 분석되어 안전 등급이 할당돼요. 안전 등급에는 카테고리와 해악 분류 확률이 포함돼요. 예를 들어 괴롭힘 카테고리가 높은 확률로 인해 콘텐츠가 차단되면 반환되는 안전 등급은 카테고리가 HARASSMENT이고 해악 확률이 HIGH로 설정돼요.
모델의 고유한 안전성 때문에 추가 필터는 기본적으로 꺼져 있어요. 활성화하기로 선택하면 콘텐츠가 안전하지 않을 확률에 따라 차단하도록 시스템을 구성할 수 있어요. 기본 모델 동작이 대부분의 사용 사례를 다루므로 애플리케이션에 일관성이 필요할 때만 이 설정을 조정해야 해요.
다음 표는 각 카테고리에 대해 조정할 수 있는 차단 설정을 설명해요. 예를 들어 혐오 발언 카테고리에서 차단 설정을 Block few로 설정하면 혐오 발언 콘텐츠일 확률이 높은 모든 것이 차단돼요. 그러나 더 낮은 확률의 것은 허용돼요.
| 임계값(Google AI Studio) | 임계값(API) | 설명 |
|---|---|---|
| Off | OFF | 안전 필터 끄기 |
| Block none | BLOCK_NONE | 안전하지 않은 콘텐츠 확률과 무관하게 항상 표시 |
| Block few | BLOCK_ONLY_HIGH | 안전하지 않은 콘텐츠 확률이 높을 때 차단 |
| Block some | BLOCK_MEDIUM_AND_ABOVE | 안전하지 않은 콘텐츠 확률이 중간 이상일 때 차단 |
| Block most | BLOCK_LOW_AND_ABOVE | 안전하지 않은 콘텐츠 확률이 낮음, 중간, 높음일 때 차단 |
| N/A | HARM_BLOCK_THRESHOLD_UNSPECIFIED | 임계값 미지정, 기본 임계값으로 차단 |
임계값을 설정하지 않으면 Gemini 2.5 및 3 모델의 기본 차단 임계값은 Off예요.
생성 서비스에 보내는 각 요청에 대해 이 설정을 지정할 수 있어요. 자세한 내용은 HarmBlockThreshold API 참조를 참조하세요.
안전 피드백
generateContent는 안전 피드백을 포함하는 GenerateContentResponse를 반환해요.
프롬프트 피드백은 promptFeedback에 포함돼요. promptFeedback.blockReason이 설정되면 프롬프트의 콘텐츠가 차단된 것이에요.
응답 후보 피드백은 Candidate.finishReason와 Candidate.safetyRatings에 포함돼요. 응답 콘텐츠가 차단되고 finishReason이 SAFETY라면 자세한 내용을 safetyRatings에서 확인할 수 있어요. 차단된 콘텐츠는 반환되지 않아요.
안전 설정 조정
이 섹션은 Google AI Studio와 코드에서 안전 설정을 조정하는 방법을 다뤄요.
Google AI Studio
Google AI Studio에서 안전 설정을 조정할 수 있어요.
Run settings 패널의 Advanced settings 아래 Safety settings를 클릭해 Run safety settings 모달을 열어요. 모달에서 슬라이더를 사용해 안전 카테고리별로 콘텐츠 필터링 수준을 조정할 수 있어요.

요청을 보낼 때(예: 모델에 질문하기) 요청의 콘텐츠가 차단되면 Content blocked 경고 메시지가 나타나요. 자세한 내용을 보려면 Content blocked 텍스트 위에 포인터를 올려 카테고리와 해악 분류 확률을 확인하세요.
코드 예시
다음 코드 스니펫은 GenerateContent 호출에서 안전 설정을 설정하는 방법을 보여줘요. 이는 혐오 발언(HARM_CATEGORY_HATE_SPEECH) 카테고리의 임계값을 설정해요. 이 카테고리를 BLOCK_LOW_AND_ABOVE로 설정하면 혐오 발언일 확률이 낮거나 그 이상인 모든 콘텐츠가 차단돼요. 임계값 설정을 이해하려면 요청별 안전 필터링을 참조하세요.
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.8-flash",
contents="Some potentially unsafe prompt",
config=types.GenerateContentConfig(
safety_settings=[
types.SafetySetting(
category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
threshold=types.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
]
)
)
print(response.text)
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
config := &genai.GenerateContentConfig{
SafetySettings: []*genai.SafetySetting{
{
Category: "HARM_CATEGORY_HATE_SPEECH",
Threshold: "BLOCK_LOW_AND_ABOVE",
},
},
}
response, err := client.Models.GenerateContent(
ctx,
"gemini-3.8-flash",
genai.Text("Some potentially unsafe prompt."),
config,
)
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Text())
}
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const safetySettings = [
{
category: "HARM_CATEGORY_HATE_SPEECH",
threshold: "BLOCK_LOW_AND_ABOVE",
},
];
async function main() {
const response = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: "Some potentially unsafe prompt.",
config: {
safetySettings: safetySettings,
},
});
console.log(response.text);
}
await main();
import com.google.genai.Client;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HarmBlockThreshold;
import com.google.genai.types.HarmCategory;
import com.google.genai.types.SafetySetting;
import java.util.Arrays;
Client client = new Client();
SafetySetting hateSpeechSafety =
SafetySetting.builder()
.category(HarmCategory.Known.HARM_CATEGORY_HATE_SPEECH)
.threshold(HarmBlockThreshold.Known.BLOCK_LOW_AND_ABOVE)
.build();
GenerateContentConfig config =
GenerateContentConfig.builder()
.safetySettings(Arrays.asList(hateSpeechSafety))
.build();
GenerateContentResponse response =
client.models.generateContent(
"gemini-3.8-flash", "Some potentially unsafe prompt.", config);
System.out.println(response.text());
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent" \
-H "x-goog-api-key: *** \
-H "Content-Type: application/json" \
-X POST \
-d '{
"safetySettings": [
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_LOW_AND_ABOVE"}
],
"contents": [{
"parts":[{
"text": "'\''Some potentially unsafe prompt.'\''"
}]
}]
}'
다음 단계
- 전체 API에 대해 자세히 알아보려면 API 참조를 참조하세요.
- LLM으로 개발할 때 안전 고려 사항에 대한 일반적인 내용은 안전 지침을 검토하세요.
- 확률 대비 심각도 평가에 대해 Jigsaw 팀에서 알아보세요.
- Perspective API 같은 안전 솔루션에 기여하는 제품에 대해 알아보세요.
- 이 안전 설정으로 독성 분류기를 만들 수 있어요. 분류 예시로 시작해 보세요.