โมเดล Gemini ออกแบบมาเพื่อให้ความสำคัญกับความปลอดภัย อย่างไรก็ตาม โมเดลเหล่านี้ยังคงสร้างคำตอบที่เป็นอันตรายได้ โดยเฉพาะเมื่อได้รับพรอมต์อย่างชัดแจ้ง หากต้องการเพิ่มความปลอดภัยและลดการใช้ในทางที่ผิด คุณสามารถกำหนดค่าตัวกรองความปลอดภัยเพื่อบล็อกคำตอบที่อาจเป็นอันตรายได้
การป้องกันความปลอดภัยมี 2 ชั้น ดังนี้
การป้องกันหลักในตัว:
- โมเดล Gemini ทั้งหมดมีการป้องกันในตัวต่ออันตรายร้ายแรง (เช่น การแสวงหาประโยชน์จากเด็ก การโจมตีทางไซเบอร์ และอาวุธที่เป็นอันตราย)
- การป้องกันเหล่านี้ทำงานอยู่เสมอ โดยจะใช้กับพรอมต์และคำตอบทั้งหมดโดยอัตโนมัติ และไม่สามารถแก้ไขหรือปิดใช้ได้
ตัวกรองความปลอดภัยที่กำหนดค่าได้
- Gemini API มีตัวกรองความปลอดภัยที่กำหนดค่าได้เพิ่มเติม ซึ่งคุณกำหนดได้โดยใช้การตั้งค่าความปลอดภัยในแอป
- การตั้งค่าเหล่านี้ช่วยให้คุณควบคุมเกณฑ์ในการบล็อกเนื้อหาในหมวดหมู่เนื้อหาที่ก่อให้เกิดอันตราย 4 หมวดหมู่หลัก ได้แก่ การคุกคาม วาจาสร้างความเกลียดชัง เนื้อหาเกี่ยวกับเรื่องเพศอย่างโจ่งแจ้ง และเนื้อหาที่เป็นอันตราย
แนวคิดสำคัญเกี่ยวกับความปลอดภัย
เมื่อทำงานด้านความปลอดภัยสำหรับโมเดล Gemini แนวคิดสำคัญที่ควรทำความเข้าใจมีดังนี้
การตั้งค่าความปลอดภัย: การกำหนดค่าที่คุณระบุไว้ในโค้ดของแอป ซึ่งจะระบุหมวดหมู่ของอันตรายที่ต้องการตรวจสอบและเกณฑ์ในการบล็อกเนื้อหา
ตัวกรองความปลอดภัย: ตัวแยกประเภทฝั่งเซิร์ฟเวอร์ที่ประเมินพรอมต์และคำตอบของโมเดลเทียบกับมิติข้อมูลด้านความปลอดภัยของ Google ตัวกรองจะบล็อกเนื้อหาตามการตั้งค่าความปลอดภัยที่คุณกำหนดค่าไว้
คะแนนความปลอดภัย: ข้อมูลเมตาการประเมินที่โมเดลแสดงผลในออบเจ็กต์การตอบกลับ การจัดประเภทจะระบุความน่าจะเป็นและความรุนแรงของอันตรายที่อาจเกิดขึ้นซึ่งตรวจพบสำหรับอันตรายแต่ละหมวดหมู่
โมเดลที่รองรับ
gemini-4-argongemini-3.8-flash(และgemini-3.7-flash,gemini-3.6-flashและgemini-3.5-flashรุ่นเก่า)gemini-3.5-flash-lite(และgemini-3.1-flash-liteรุ่นเก่า)gemini-nano-banana-2.1(Nano Banana 2.1)gemini-3.1-flash-image(Nano Banana 2)gemini-3.1-flash-lite-image(Nano Banana 2 Lite)gemini-3-pro-image(Nano Banana Pro)
โมเดล gemini-3.1-pro-preview รวมถึงโมเดล Gemini 2.5 สำหรับการใช้งานทั่วไปและการสร้างรูปภาพ (ซึ่งเลิกใช้งานแล้ว) ก็รองรับความสามารถนี้เช่นกัน
กำหนดการตั้งค่าความปลอดภัยในแอป
|
คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาและโค้ดเฉพาะของผู้ให้บริการในหน้านี้ |
คุณกำหนดการตั้งค่าความปลอดภัยเป็นส่วนหนึ่งของการเริ่มต้นอินสแตนซ์ GenerativeModel ระบบจะคงการกำหนดค่าไว้ตลอดอายุการใช้งานของอินสแตนซ์โมเดลนั้น
ดูข้อมูลเกี่ยวกับหมวดหมู่ของอันตรายที่มีอยู่และเกณฑ์ที่คุณกำหนดสำหรับแต่ละหมวดหมู่ได้ในหน้านี้
Swift
กำหนดค่า SafetySetting เมื่อสร้างอินสแตนซ์ GenerativeModel ดังนี้
import FirebaseAILogic
let safetySettings = [
SafetySetting(harmCategory: .harassment, threshold: .blockOnlyHigh),
SafetySetting(harmCategory: .hateSpeech, threshold: .blockMediumAndAbove)
]
// Specify the safety settings as part of creating the `GenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: "GEMINI_MODEL_NAME",
safetySettings: safetySettings
)
// ...
Kotlin
กำหนดค่า SafetySetting เมื่อสร้างอินสแตนซ์ GenerativeModel ดังนี้
// ...
val safetySettings = listOf(
SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.ONLY_HIGH),
SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.MEDIUM_AND_ABOVE)
)
// Specify the safety settings as part of creating the `GenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "GEMINI_MODEL_NAME",
safetySettings = safetySettings
)
// ...
Java
กำหนดค่า SafetySetting เมื่อสร้างอินสแตนซ์ GenerativeModel ดังนี้
// ...
List safetySettings = List.of(
new SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.ONLY_HIGH),
new SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.MEDIUM_AND_ABOVE)
);
// Specify the safety settings as part of creating the `GenerativeModel` instance.
GenerativeModelFutures model = GenerativeModelFutures.from(
FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ "GEMINI_MODEL_NAME",
/* generationConfig is optional */ null,
safetySettings
)
);
// ...
Web
กำหนดค่า SafetySetting เมื่อสร้างอินสแตนซ์ GenerativeModel ดังนี้
import { HarmBlockThreshold, HarmCategory, getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
const safetySettings = [
{
category: HarmCategory.HARM_CATEGORY_HARASSMENT,
threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
},
{
category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
},
];
// Specify the safety settings as part of creating the `GenerativeModel` instance.
const model = getGenerativeModel(ai, {
model: "GEMINI_MODEL_NAME",
safetySettings,
});
// ...
Dart
กำหนดค่า SafetySetting เมื่อสร้างอินสแตนซ์ GenerativeModel ดังนี้
import 'package:firebase_ai/firebase_ai.dart';
final safetySettings = [
SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high),
SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.medium),
];
// Specify the safety settings as part of creating the `GenerativeModel` instance.
final model = FirebaseAI.googleAI().generativeModel(
model: 'GEMINI_MODEL_NAME',
safetySettings: safetySettings,
);
// ...
Unity
กำหนดค่า SafetySetting เมื่อสร้างอินสแตนซ์ GenerativeModel ดังนี้
// ...
var safetySettings = new SafetySetting[] {
new SafetySetting(HarmCategory.Harassment, SafetySetting.HarmBlockThreshold.OnlyHigh),
new SafetySetting(HarmCategory.HateSpeech, SafetySetting.HarmBlockThreshold.MediumAndAbove)
};
// Specify the safety settings as part of creating the `GenerativeModel` instance.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
var model = ai.GetGenerativeModel(
modelName: "GEMINI_MODEL_NAME",
safetySettings: safetySettings
);
// ...
หมวดหมู่ของอันตรายที่ใช้ได้
ตัวกรองความปลอดภัยจะประเมินพรอมต์และคำตอบของโมเดลตามหมวดหมู่ของอันตรายที่กำหนดค่าได้ต่อไปนี้
| หมวดหมู่อันตราย | คำอธิบาย |
|---|---|
HARM_CATEGORY_HARASSMENT |
ความคิดเห็นเชิงลบ ข่มขู่ คุกคาม กลั่นแกล้ง หรือละเมิดที่มุ่งเป้าไปยังบุคคลหรืออัตลักษณ์ |
HARM_CATEGORY_HATE_SPEECH |
เนื้อหาที่โจมตี ดูหมิ่น ส่งเสริมความเกลียดชัง หรือยุยงให้เกิดความรุนแรงต่อบุคคลหรือกลุ่มบุคคลโดยพาดพิงถึงคุณลักษณะที่ได้รับการคุ้มครอง (เช่น เชื้อชาติ ชาติพันธุ์ ศาสนา ความพิการ อายุ สัญชาติ สถานะทหารผ่านศึก วิถีทางเพศ หรืออัตลักษณ์ทางเพศ) |
HARM_CATEGORY_SEXUALLY_EXPLICIT |
มีการอ้างอิงถึงกิจกรรมทางเพศ ภาพอนาจาร หรือเนื้อหาลามกและวาบหวิวอื่นๆ |
HARM_CATEGORY_DANGEROUS_CONTENT |
ส่งเสริม อำนวยความสะดวก สนับสนุน หรือบอกวิธีการกระทำที่เป็นอันตราย สินค้าและบริการที่ผิดกฎหมาย อาวุธ การทำร้ายตนเอง หรือกิจกรรมที่เป็นอันตราย |
HARM_CATEGORY_CIVIC_INTEGRITY |
เนื้อหาที่อาจใช้เพื่อทำให้ผู้มีสิทธิเลือกตั้งเข้าใจผิดหรือบ่อนทำลายกระบวนการพลเมืองและการเลือกตั้ง (รองรับในบางรุ่นและบางภูมิภาค) |
ตัวกรองความปลอดภัยที่กำหนดค่าไม่ได้
นอกเหนือจากหมวดหมู่ที่กำหนดค่าได้แล้ว คำขอทั้งหมดจะผ่านตัวกรองระดับระบบที่ปรับไม่ได้ ดังนี้
สื่อที่มีการล่วงละเมิดทางเพศเด็ก (CSAM) / เนื้อหาที่ไม่อนุญาต: ระบบจะบล็อกพรอมต์หรือคำตอบที่ถูกแจ้งว่ามีเนื้อหาที่ไม่อนุญาตทันที (
PROHIBITED_CONTENT)ข้อมูลส่วนบุคคลที่ละเอียดอ่อนและระบุตัวบุคคลนั้นได้ (SPII): ระบบจะบล็อกคำตอบที่มีความเสี่ยงต่อการเปิดเผยข้อมูลส่วนตัวที่ละเอียดอ่อน (เช่น หมายเลขบัญชีการเงินหรือหมายเลขประจำตัวประชาชน) (
SPII)
กำหนดเกณฑ์
สำหรับอันตรายแต่ละหมวดหมู่ที่คุณต้องการควบคุมในแอป คุณต้องตั้งค่าเกณฑ์ หากเนื้อหาที่ประเมินมีคะแนนถึงหรือเกินเกณฑ์ดังกล่าว ระบบจะบล็อกเนื้อหานั้น
วิธีการทำงานของการประเมินความปลอดภัย: ความน่าจะเป็นเทียบกับความรุนแรง
ตัวกรองความปลอดภัยจะประเมินเนื้อหาใน 2 มิติที่แตกต่างกัน ดังนี้
ความน่าจะเป็น: ความมั่นใจของโมเดลว่าเนื้อหาจัดอยู่ในหมวดหมู่ที่เป็นอันตรายที่ระบุ
ความรุนแรง: ขนาดหรือระดับของอันตรายที่อาจเกิดขึ้นหากเนื้อหาเป็นอันตราย
มิติข้อมูลแต่ละรายการจะได้รับการกำหนดระดับใดระดับหนึ่งต่อไปนี้
NEGLIGIBLE, LOW, MEDIUM หรือ HIGH
เนื้อหาอาจมีความเป็นไปได้สูงแต่มีระดับความรุนแรงต่ำ (เช่น การล้อเล่นขำขันเล็กน้อยหรือการดูถูกแบบเป็นกันเอง) หรือ มีความเป็นไปได้ต่ำแต่มีระดับความรุนแรงสูง (เช่น การพูดคุยทางการแพทย์หรือประวัติศาสตร์ที่กล่าวถึงความรุนแรง)
เกณฑ์การบล็อกเนื้อหาที่เป็นอันตรายที่ใช้ได้
คุณสามารถตั้งค่าเกณฑ์ต่อไปนี้สำหรับหมวดหมู่เนื้อหาที่เป็นอันตรายที่ต้องการควบคุมในแอปได้
| เกณฑ์ | คำอธิบาย | ระดับที่อนุญาต |
|---|---|---|
BLOCK_LOW_AND_ABOVE |
มีข้อจำกัดมากที่สุด บล็อกเนื้อหาเมื่อความน่าจะเป็น (หรือความรุนแรง) อยู่ในระดับ LOW MEDIUM หรือHIGH
|
อนุญาตเฉพาะ
NEGLIGIBLE
|
BLOCK_MEDIUM_AND_ABOVE |
ข้อจำกัดระดับปานกลาง บล็อกเนื้อหาเมื่อความน่าจะเป็น (หรือความรุนแรง) อยู่ในระดับ MEDIUMหรือHIGH
|
อนุญาต NEGLIGIBLE และ LOW |
BLOCK_ONLY_HIGH |
ตัวกรองที่ใช้งานอยู่ซึ่งมีข้อจำกัดน้อยที่สุด บล็อกเนื้อหาเฉพาะเมื่อความน่าจะเป็น (หรือความรุนแรง) อยู่ในระดับ HIGH
|
อนุญาต NEGLIGIBLE, LOW และ MEDIUM
|
BLOCK_NONE |
ปิดใช้การบล็อกการตอบกลับอัตโนมัติสำหรับหมวดหมู่นี้แล้ว ระบบจะยังคงคำนวณข้อมูลเมตาของการจัดประเภทความปลอดภัยและแสดงผลพร้อมกับการตอบกลับเพื่อให้แอปของคุณทำการกลั่นกรองที่กำหนดเองได้ | อนุญาตเนื้อหาทั้งหมด |
OFF |
ปิดตัวกรองความปลอดภัยสำหรับหมวดหมู่นี้โดยสมบูรณ์ จะไม่มีการบล็อกอัตโนมัติเกิดขึ้นและไม่มีการแสดงผลข้อมูลเมตาของการจัดประเภทความปลอดภัย | อนุญาตเนื้อหาทั้งหมด |
ตรวจสอบการจัดประเภทความปลอดภัยและจัดการเนื้อหาที่ถูกบล็อก
เนื้อหาอาจถูกบล็อกได้ 2 ขั้นตอนในระหว่างที่มีคำขอ ดังนี้
พรอมต์ถูกบล็อก (
PromptFeedback): พรอมต์ที่ป้อนละเมิดตัวกรองความปลอดภัยก่อนที่โมเดลจะสร้างเอาต์พุต ระบบจะไม่แสดงตัวเลือกคำตอบบล็อกคำตอบที่เป็นไปได้ (
finishReason == SAFETY): โมเดลประเมินหรือสร้างคำตอบที่เป็นไปได้ซึ่งเกินเกณฑ์ที่กำหนดค่าไว้ ระบบจะล้างหรือปกปิดข้อความที่เป็นไปได้ที่สร้างขึ้น
ออบเจ็กต์ SafetyRating
พรอมต์หรือคำตอบที่เป็นไปได้ที่ประเมินแล้วแต่ละรายการจะมีอาร์เรย์ของออบเจ็กต์ SafetyRating การจัดประเภทแต่ละรายการจะให้ข้อมูลต่อไปนี้
ที่พักที่พร้อมให้บริการทั้ง Gemini Developer API และ Agent Platform Gemini API (formerly Vertex AI)
category:HarmCategoryที่ประเมินprobability: การจัดประเภทแบบไม่ต่อเนื่อง (NEGLIGIBLE,LOW,MEDIUMหรือHIGH)blocked:trueหากการจัดประเภทที่เฉพาะเจาะจงนี้ทำให้เนื้อหาถูกบล็อก
พร็อพเพอร์ตี้เพิ่มเติมที่ใช้ได้กับ Agent Platform Gemini API (formerly Vertex AI) มีดังนี้
probabilityScore: คะแนนความเชื่อมั่นแบบจุดลอยตัวตั้งแต่0.0ถึง1.0severity: ระดับความรุนแรงที่แยกกัน (NEGLIGIBLE,LOW,MEDIUMหรือHIGH)severityScore: คะแนนความรุนแรงแบบจุดลอยตัวตั้งแต่0.0ถึง1.0
ตัวอย่างออบเจ็กต์ SafetyRating
ตัวอย่างต่อไปนี้แสดงเพย์โหลดการตอบกลับ JSON ดิบเมื่อผู้สมัครรับเลือกตั้งถูกบล็อกโดยตัวกรองความปลอดภัย
{
"candidates": [
{
"finishReason": "SAFETY",
"safetyRatings": [
{
"category": "HARM_CATEGORY_HARASSMENT",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"probability": "HIGH",
"blocked": true
}
]
}
],
"usageMetadata": {
"promptTokenCount": 24,
"totalTokenCount": 24
}
}
ตรวจจับข้อผิดพลาดด้านความปลอดภัยในโค้ด
เมื่อเนื้อหาถูกบล็อก SDK ของไคลเอ็นต์จะแสดงการบล็อกเป็นข้อยกเว้นหรือรหัสข้อผิดพลาดเพื่อให้แอปของคุณจัดการได้อย่างราบรื่น
Swift
คุณสามารถจับ GenerateContentError.promptBlocked หรือ
GenerateContentError.responseStoppedEarly ได้โดยทำดังนี้
do {
let response = try await model.generateContent("Your prompt here")
print(response.text ?? "No text generated.")
} catch GenerateContentError.promptBlocked(let response) {
// The input prompt was blocked
if let feedback = response.promptFeedback {
let reason = feedback.blockReason?.rawValue ?? "unknown"
print("Prompt blocked for reason: \(reason)")
for rating in feedback.safetyRatings {
let cat = rating.category.rawValue
let prob = rating.probability.rawValue
print("Category: \(cat), probability: \(prob)")
}
}
} catch GenerateContentError.responseStoppedEarly(let reason, let response) {
// Candidate response was blocked or stopped early
if reason == .safety {
print("Response blocked due to safety.")
if let candidate = response.candidates.first {
for rating in candidate.safetyRatings where rating.blocked {
print("Blocked by category: \(rating.category.rawValue)")
}
}
}
} catch {
print("Unexpected error: \(error)")
}
Kotlin
คุณสามารถจับ PromptBlockedException หรือตรวจสอบ candidate.finishReason ได้โดยทำดังนี้
try {
val response = model.generateContent("Your prompt here")
val candidate = response.candidates.firstOrNull()
if (candidate?.finishReason == FinishReason.SAFETY) {
val blockedRating =
candidate.safetyRatings.firstOrNull { it.blocked }
println("Response blocked by category: ${blockedRating?.category}")
} else {
println(response.text)
}
} catch (e: PromptBlockedException) {
val reason = e.response?.promptFeedback?.blockReason
println("Prompt was blocked: $reason")
} catch (e: Exception) {
println("Error generating content: ${e.message}")
}
Java
คุณสามารถจับ PromptBlockedException หรือตรวจสอบ candidate.getFinishReason() ได้โดยทำดังนี้
try {
GenerateContentResponse response = model.generateContent("Your prompt here").get();
Candidate candidate = response.getCandidates().isEmpty() ? null : response.getCandidates().get(0);
if (candidate != null && candidate.getFinishReason() == FinishReason.SAFETY) {
SafetyRating blockedRating = null;
for (SafetyRating rating : candidate.getSafetyRatings()) {
if (Boolean.TRUE.equals(rating.getBlocked())) {
blockedRating = rating;
break;
}
}
System.out.println("Response blocked by category: " +
(blockedRating != null ? blockedRating.getCategory() : "unknown"));
} else {
System.out.println(response.getText());
}
} catch (ExecutionException e) {
if (e.getCause() instanceof PromptBlockedException) {
PromptBlockedException pbe = (PromptBlockedException) e.getCause();
GenerateContentResponse blockedResponse = pbe.getResponse();
String reason = (blockedResponse != null && blockedResponse.getPromptFeedback() != null)
? String.valueOf(blockedResponse.getPromptFeedback().getBlockReason())
: "unknown";
System.out.println("Prompt was blocked: " + reason);
} else {
System.out.println("Error generating content: " + e.getMessage());
}
} catch (InterruptedException e) {
System.out.println("Generation was interrupted: " + e.getMessage());
}
Web
คุณตรวจสอบ promptFeedback และ candidate.finishReason ได้ดังนี้
try {
const response = await model.generateContent("Your prompt here");
// Check if the prompt was blocked
if (response.promptFeedback?.blockReason) {
console.warn(`Prompt blocked: ${response.promptFeedback.blockReason}`);
return;
}
const candidate = response.candidates?.[0];
if (candidate?.finishReason === "SAFETY") {
const blockedRating = candidate.safetyRatings?.find((r) => r.blocked);
console.warn(`Response blocked by category: ${blockedRating?.category}`);
} else {
console.log(response.text);
}
} catch (error) {
console.error("Error generating content:", error);
}
Dart
คุณตรวจสอบ promptFeedback และ candidate.finishReason ได้ดังนี้
try {
final response = await model.generateContent([Content.text('Your prompt here')]);
// Check if the prompt was blocked
if (response.promptFeedback?.blockReason != null) {
print('Prompt blocked: ${response.promptFeedback?.blockReason}');
return;
}
final candidate = response.candidates.firstOrNull;
if (candidate?.finishReason == FinishReason.safety) {
final blockedRating =
candidate?.safetyRatings?.where((r) => r.isBlocked == true).firstOrNull;
print('Response blocked by category: ${blockedRating?.category.name}');
} else {
print(response.text);
}
} catch (e) {
print('Error generating content: $e');
}
Unity
คุณตรวจสอบ PromptFeedback และ candidate.FinishReason ได้ดังนี้
try {
var response = await model.GenerateContentAsync("Your prompt here");
// Check if the prompt was blocked
if (response.PromptFeedback?.BlockReason != null) {
Debug.LogWarning($"Prompt blocked: {response.PromptFeedback.BlockReason}");
return;
}
var candidate = response.Candidates.FirstOrDefault();
if (candidate?.FinishReason == FinishReason.Safety) {
var blockedRating = candidate.SafetyRatings?.FirstOrDefault(r => r.Blocked);
Debug.LogWarning($"Response blocked by category: {blockedRating?.Category}");
} else {
Debug.Log(response.Text);
}
} catch (Exception ex) {
Debug.LogError($"Error generating content: {ex.Message}");
}
แนวทางปฏิบัติแนะนำสำหรับการออกแบบแอปอย่างมีความรับผิดชอบ
การป้องกันหลายชั้น: ตัวกรองความปลอดภัยเป็นเพียงแนวทางป้องกัน ไม่ใช่คำสั่ง รวมการตั้งค่าความปลอดภัยเข้ากับคำสั่งของระบบที่ชัดเจนและการออกแบบพรอมต์ที่ตรงเป้าหมายเพื่อกำหนดโทนและขอบเขต
ความคิดเห็นของผู้ใช้ที่เหมาะสม: ไม่ขัดข้องหรือแสดงหน้าจอว่างเปล่าเมื่อเนื้อหาถูกบล็อก ตรวจจับ
finishReason == SAFETYหรือPromptBlockedExceptionและแสดงข้อความที่เข้าใจง่ายเพื่อแจ้งให้ผู้ใช้ทราบว่าไม่สามารถดำเนินการตามคำขอได้ภายใต้หลักเกณฑ์เนื้อหาของคุณใช้
BLOCK_NONEสำหรับการกลั่นกรองที่กำหนดเอง: หากคุณมีไปป์ไลน์การกลั่นกรองฝั่งไคลเอ็นต์หรือฝั่งเซิร์ฟเวอร์อยู่แล้ว ให้ตั้งค่าเกณฑ์เป็นBLOCK_NONEเพื่อรับsafetyRatingsของโมเดลโดยไม่มีการบล็อกอัตโนมัติ ซึ่งจะช่วยให้แอปของคุณบังคับใช้นโยบายการกลั่นกรองที่กำหนดเองได้ตรวจสอบข้อกำหนดในการให้บริการ: หากคุณใช้การตั้งค่าที่มีข้อจำกัดน้อยกว่า (
BLOCK_ONLY_HIGHหรือBLOCK_NONE) โปรดตรวจสอบว่าแอปของคุณยังคงเป็นไปตามนโยบายการใช้งานที่ไม่อนุญาตของ Google
ตัวเลือกอื่นๆ ในการควบคุมการสร้างเนื้อหา
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการออกแบบพรอมต์เพื่อให้คุณสามารถกำหนดให้โมเดลสร้างเอาต์พุตที่ตรงกับความต้องการของคุณได้
- กำหนดค่าพารามิเตอร์โมเดลเพื่อควบคุมวิธีที่โมเดลสร้างคำตอบ เช่น โทเค็นเอาต์พุตสูงสุด ความน่าจะเป็นของโทเค็นเอาต์พุตที่ซ้ำกัน เป็นต้น
- ตั้งค่าคำสั่งของระบบเพื่อควบคุมลักษณะการทำงานของโมเดล ฟีเจอร์นี้เปรียบเสมือนข้อความนำที่คุณเพิ่มก่อนที่โมเดลจะได้รับคำสั่งเพิ่มเติมจากผู้ใช้ปลายทาง
- ส่งสคีมาการตอบกลับพร้อมกับพรอมต์เพื่อระบุสคีมาเอาต์พุตที่เฉพาะเจาะจง ฟีเจอร์นี้ใช้กันโดยทั่วไปเมื่อสร้างเอาต์พุต JSON แต่ก็ใช้สำหรับงานการแยกประเภทได้เช่นกัน (เช่น เมื่อต้องการให้โมเดลใช้ป้ายกำกับหรือแท็กที่เฉพาะเจาะจง)