Google 的生成式 AI 模型一律優先考量安全。不過,這些模型仍可能生成有害的回覆,尤其是在明確提示的情況下。為進一步提升安全性並盡可能減少濫用情形,您可以設定內容篩選器,封鎖可能有害的回覆。
本頁面說明 Gemini 文字生成模型的安全篩選器。如要瞭解其他 Google 模型的安全篩選器和負責任 AI 技術,請參閱下列說明文件:
本頁面說明各個安全和內容篩選器類型、概述重要安全概念,並說明如何設定可調整內容篩選器的封鎖門檻。我們也提供範例,示範如何編寫可設定的內容篩選器。
安全和內容篩選器可做為屏障,防止有害輸出內容,但不會直接影響模型的行為。如要進一步瞭解模型可控性,請參閱「安全系統指令」。
不安全的提示
Gemini API 會提供下列其中一個 enum 代碼,說明提示遭拒的原因:
| 列舉 | 篩選器類型 | 說明 |
|---|---|---|
PROHIBITED_CONTENT |
無法設定的安全篩選器 | 提示詞含有禁止宣傳的內容 (通常是兒少性虐待內容),因此遭到封鎖。 |
BLOCKED_REASON_UNSPECIFIED |
不適用 | 未指定封鎖提示的原因。 |
OTHER |
不適用 | 這個列舉是指封鎖提示詞的所有其他原因。請注意,Gemini API 僅支援部分語言。如要查看支援的語言清單,請參閱「Gemini 支援的語言」。 |
詳情請參閱 BlockedReason API 參考資料。
以下是 Gemini API 提示回饋的輸出範例。如果提示詞遭到封鎖,promptFeedback 會包含 blockReason。如果提示未遭封鎖,promptFeedback 會留空,如下例所示:
{
"promptFeedback": {
},
"usageMetadata": {
"promptTokenCount": 7,
"totalTokenCount": 7
}
}
以下範例顯示因含有 PROHIBITED_CONTENT 而遭封鎖的提示:
{
"promptFeedback": {
"blockReason": "PROHIBITED_CONTENT"
},
"usageMetadata": {
"promptTokenCount": 7,
"totalTokenCount": 7
}
}
以下範例顯示因不明原因而遭封鎖的提示:
{
"promptFeedback": {
"blockReason": "BLOCKED_REASON_UNSPECIFIED"
},
"usageMetadata": {
"promptTokenCount": 7,
"totalTokenCount": 7
}
}
不安全的回覆
下列篩選器可偵測並封鎖可能不安全的回覆:
- 不可設定的安全篩選器:封鎖兒少性虐待內容 (CSAM) 和個人識別資訊 (PII)。
- 可設定的內容篩選器:根據危害類別清單和使用者設定的封鎖門檻,封鎖不安全的內容。您可以根據用途和業務需求,為每種有害內容設定封鎖門檻。詳情請參閱「可設定的內容篩選器」。
- 引用內容篩選器:提供來源資料的引用內容。詳情請參閱「引用篩選器」。
LLM 會以稱為「詞元」的文字單位生成回覆。模型會在達到自然停頓點,或有篩選器封鎖回覆時,停止生成詞元。Gemini API 會提供下列其中一個 enum 代碼,說明權杖生成作業停止的原因:
| 列舉 | 篩選器類型 | 說明 |
|---|---|---|
STOP |
不適用 | 這個列舉表示模型已達到自然停止點或提供的停止序列。 |
MAX_TOKENS |
不適用 | 模型已達到要求中指定的權杖數量上限,因此停止生成權杖。 |
SAFETY |
可設定的內容篩選器 | 回覆因含有害內容而遭標記,因此系統已停止生成權杖。 |
RECITATION |
引用內容篩選器 | 因可能涉及背誦,已停止生成權杖。 |
SPII |
無法設定的安全篩選器 | 回覆含有具敏感性的個人識別資訊 (SPII),因此系統停止生成權杖。 |
PROHIBITED_CONTENT |
無法設定的安全篩選器 | 回覆含有禁止宣傳的內容 (通常是兒少性虐待內容),因此已停止生成權杖。 |
FINISH_REASON_UNSPECIFIED |
不適用 | 未指定結束原因。 |
OTHER |
不適用 | 這個列舉是指停止生成權杖的所有其他原因。請注意,系統僅支援部分語言的權杖生成功能。如要查看支援的語言清單,請參閱「Gemini 支援的語言」。 |
詳情請參閱 FinishReason API 參考資料。
如果篩選器封鎖回應,則會清除回應的 Candidate.content 欄位。不會向模型提供任何意見回饋。
可設定的內容篩選器
內容篩選器會根據有害內容清單評估內容。內容篩選器會根據內容有害的「機率」和有害內容的「嚴重程度」,為每個危害類別指派一個分數。
可設定的內容篩選器沒有獨立於模型版本的版本。Google 不會更新先前發布的模型版本可設定內容篩選器。不過,未來版本的模型可能會更新可設定的內容篩選器。
危害類別
內容篩選器會根據下列有害類別評估內容:
| 危害類別 | 定義 |
|---|---|
| 仇恨言論 | 針對特定身分和/或受保護特質發表負面或有害言論。 |
| 騷擾 | 針對他人發表含有威脅、恐嚇、霸凌或辱罵意圖的言論。 |
| 情色露骨內容 | 提及性行為或其他猥褻情事的內容。 |
| 危險內容 | 宣傳有害商品、服務與活動,或是提供接觸管道。 |
比較機率分數和嚴重程度分數
機率安全分數反映模型回覆與各項危害相關的可能性。相關聯的可信度分數介於 0.0 至 1.0 之間,四捨五入至小數點後一位。可信度分數會離散化為四個可信度等級:NEGLIGIBLE、LOW、MEDIUM 和 HIGH。
嚴重程度分數反映模型回覆可能造成的危害程度。相關聯的嚴重程度分數介於 0.0 到 1.0 之間,四捨五入至小數點後一位。嚴重程度分數分為四個等級:NEGLIGIBLE、LOW、MEDIUM 和 HIGH。
內容可能機率分數低、嚴重程度分數高,或機率分數高、嚴重程度分數低。
內容篩選器設定選項
您可以使用 Gemini API 或 Google Cloud 控制台設定內容篩選器。
Gemini API
Gemini API 提供兩種「有害內容封鎖」方法:
- SEVERITY:這個方法會同時使用機率和嚴重性分數。
- PROBABILITY:這個方法只會使用機率分數。
預設方法為 SEVERITY。
Gemini API 提供下列「有害內容封鎖」門檻:
BLOCK_LOW_AND_ABOVE:當機率分數或嚴重程度分數為LOW、MEDIUM或HIGH時,系統會封鎖。BLOCK_MEDIUM_AND_ABOVE:當機率分數或嚴重程度分數為MEDIUM或HIGH時,封鎖內容。BLOCK_ONLY_HIGH:當機率分數或嚴重程度分數為HIGH時,則封鎖。HARM_BLOCK_THRESHOLD_UNSPECIFIED:使用預設門檻封鎖。OFF:不自動封鎖回覆,也不傳回中繼資料。如果是gemini-3.5-flash和後續型號,預設值為OFF。BLOCK_NONE:BLOCK_NONE設定會移除自動回應封鎖功能。您可以根據傳回的分數,自行設定內容規範。
舉例來說,下列 Python 程式碼示範如何將危險內容類別的有害內容封鎖門檻設為 BLOCK_ONLY_HIGH:
generative_models.SafetySetting(
category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
),
這會封鎖大部分歸類為危險內容的內容。詳情請參閱 HarmBlockThreshold API 參考資料。
如需 Python、Node.js、Java、Go、C# 和 REST 的端對端範例,請參閱「內容篩選器設定範例」。
Google Cloud 控制台
Google Cloud 控制台可讓您為每項內容屬性設定門檻。內容篩選器只會使用機率分數。無法使用嚴重性分數。
Google Cloud 控制台提供下列門檻值:
- 關閉 (預設):不自動封鎖回應。
- 封鎖極少數內容:封鎖機率分數為
HIGH的內容。 - 封鎖部分內容:封鎖機率分數為
MEDIUM或HIGH的內容。 - 封鎖大部分:封鎖機率分數為
LOW、MEDIUM或HIGH的內容。
舉例來說,如果將「危險內容」內容類別的封鎖設定設為「少量封鎖」,系統會封鎖所有極可能屬於危險內容的項目。只要機率低於這個值,就允許使用。
如要設定門檻,請按照下列步驟操作:
前往 Google Cloud 控制台「Agent Platform」部分的「Agent Studio」頁面。
在「Create a new prompt」(建立新提示) 下方,點選任一按鈕,開啟提示設計頁面。
按一下「安全設定」。
「安全設定」對話方塊視窗隨即開啟。
針對每個有害類別,設定所選門檻值。
按一下 [儲存]。
封鎖回覆的輸出內容範例
以下是 Gemini API 輸出內容範例,說明可設定的內容篩選器因回覆含有危險內容而封鎖:
{
"candidates": [{
"finishReason": "SAFETY",
"safetyRatings": [{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE",
"probabilityScore": 0.11027937,
"severity": "HARM_SEVERITY_LOW",
"severityScore": 0.28487435
}, {
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"probability": "HIGH",
"blocked": true,
"probabilityScore": 0.95422274,
"severity": "HARM_SEVERITY_MEDIUM",
"severityScore": 0.43398145
}, {
"category": "HARM_CATEGORY_HARASSMENT",
"probability": "NEGLIGIBLE",
"probabilityScore": 0.11085559,
"severity": "HARM_SEVERITY_NEGLIGIBLE",
"severityScore": 0.19027223
}, {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE",
"probabilityScore": 0.22901751,
"severity": "HARM_SEVERITY_NEGLIGIBLE",
"severityScore": 0.09089675
}]
}],
"usageMetadata": {
"promptTokenCount": 38,
"totalTokenCount": 38
}
}
實作內容篩選器設定
以下範例說明如何使用 Gemini API 設定內容篩選器:
Python
安裝
pip install --upgrade google-genai
詳情請參閱 SDK 參考文件。
設定環境變數,以便透過 Vertex AI 使用 Google Gen AI SDK:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
詳情請參閱 SDK 參考文件。
設定環境變數,以便透過 Vertex AI 使用 Google Gen AI SDK:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
REST
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION:處理要求的區域。
- PROJECT_ID:您的專案 ID。。
- MODEL_ID:要使用的多模態模型 ID,例如
gemini-3.5-flash。 - ROLE:與內容相關聯的對話角色。即使是單輪對話,也必須指定角色。
可接受的值包括:
USER:指定由您傳送的內容。MODEL:指定模型的回覆。
- TEXT:提示中要包含的文字指令。
- SAFETY_CATEGORY:要設定門檻的安全類別。可接受的值包括:
按一下即可展開安全類別
HARM_CATEGORY_SEXUALLY_EXPLICITHARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_HARASSMENTHARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD:封鎖可能屬於指定安全類別的回覆時,所依據的機率門檻。可接受的值如下:
按一下即可展開封鎖門檻
BLOCK_NONEBLOCK_ONLY_HIGHBLOCK_MEDIUM_AND_ABOVE(預設)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE封鎖最多內容,BLOCK_ONLY_HIGH封鎖最少。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent
JSON 要求內文:
{
"contents": {
"role": "ROLE",
"parts": { "text": "TEXT" }
},
"safetySettings": {
"category": "SAFETY_CATEGORY",
"threshold": "THRESHOLD"
},
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆。
cURL 指令範例
LOCATION="us-central1"
MODEL_ID="gemini-3.5-flash"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:streamGenerateContent -d \
$'{
"contents": {
"role": "user",
"parts": { "text": "Hello!" }
},
"safety_settings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "OFF"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
]
}'
Node.js
安裝
npm install @google/genai
詳情請參閱 SDK 參考文件。
設定環境變數,以便透過 Vertex AI 使用 Google Gen AI SDK:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
詳情請參閱 SDK 參考文件。
設定環境變數,以便透過 Vertex AI 使用 Google Gen AI SDK:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
越獄分類器
有些提示會試圖規避安全指南、道德限制或指定的操作說明,導致輸出內容可能有害、偏頗或不當。越獄分類器會偵測並封鎖 (視設定而定) 試圖規避模型防禦機制的提示詞。這項篩選器預設為關閉。如要啟用,請將 JAILBREAK 的封鎖門檻設為下列任一值:
BLOCK_NONEBLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVEBLOCK_ONLY_HIGH
下列程式碼說明如何啟用越獄篩選器:
generative_models.SafetySetting(
category=generative_models.HarmCategory.HARM_CATEGORY_JAILBREAK,
threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
)
如果內容遭到越獄分類器封鎖,您會看到類似下方的結果:
{
prompt_feedback: {
block_reason: JAILBREAK
safety_ratings: [
{
category: HARM_CATEGORY_JAILBREAK
blocked: true
severity: HARM_SEVERITY_MEDIUM
severity_score: 0.76953125
}
]
}
}
如果將 HarmBlockMethod 設為 PROBABILITY,則 safety_ratings 會包含 probability 和 probability_score,而非 severity 和 severity_score。如果提示未遭封鎖或標記,模型仍會根據 HarmBlockMethod 傳回安全評等。
帳單
與其他 Gemini 安全性篩選器一樣,越獄分類器可免費使用。
引用內容篩選器
Agent Platform 的生成式程式碼功能旨在產生原創內容。Gemini 經過特別設計,可降低完整複製現有內容的可能性。如果 Gemini 功能確實大量引用網頁內容,Gemini 會註明出處。
有時相同內容可能會出現在多個網頁上,Gemini 會盡量引用熱門來源。如果引用來源為程式碼存放區,Gemini 可能也會註明適用的開放原始碼授權。您有責任遵守任何授權規定。
如要瞭解引用篩選器的中繼資料,請參閱 Citation API 參考資料。
最佳做法
雖然內容篩選器有助於防範不安全的內容,但有時可能會封鎖良性內容,或遺漏有害內容。Gemini 3.5 Flash 等進階模型即使不使用篩選器,也能生成安全的回覆。測試不同的篩選器設定,在安全性和允許適當內容之間取得平衡。
後續步驟
- 瞭解安全系統指示。
- 瞭解濫用行為監控。
- 進一步瞭解負責任的 AI 技術。
- 瞭解如何處理遭封鎖的回應。