การตั้งค่าความปลอดภัย

Gemini API มีการตั้งค่าความปลอดภัยที่คุณปรับได้ในระหว่างระยะการสร้างต้นแบบเพื่อพิจารณาว่าแอปพลิเคชันของคุณต้องมีการกําหนดค่าความปลอดภัยที่เข้มงวดมากขึ้นหรือน้อยลง คุณสามารถปรับการตั้งค่าเหล่านี้ในหมวดหมู่ตัวกรอง 4 หมวดหมู่เพื่อจำกัดหรืออนุญาตเนื้อหาบางประเภท

คู่มือนี้จะอธิบายวิธีที่ Gemini API จัดการการตั้งค่าและกรองความปลอดภัย รวมถึงวิธีเปลี่ยนการตั้งค่าความปลอดภัยสําหรับแอปพลิเคชัน

ตัวกรองความปลอดภัย

ตัวกรองความปลอดภัยที่ปรับได้ของ Gemini API ครอบคลุมหมวดหมู่ต่อไปนี้

หมวดหมู่ คำอธิบาย
การล่วงละเมิด ความคิดเห็นเชิงลบหรือเป็นอันตรายซึ่งมุ่งเป้าไปที่ตัวตนและ/หรือคุณลักษณะที่ได้รับการคุ้มครอง
วาจาสร้างความเกลียดชัง เนื้อหาที่หยาบคาย ไม่สุภาพ หรือไม่ให้เกียรติ
เกี่ยวกับเรื่องเพศอย่างโจ่งแจ้ง มีการอ้างอิงถึงกิจกรรมทางเพศหรือเนื้อหาลามกอื่นๆ
อันตราย ส่งเสริม สนับสนุน หรือก่อให้เกิดการกระทําที่เป็นอันตราย
ความซื่อสัตย์ของพลเมือง คำค้นหาที่เกี่ยวข้องกับการเลือกตั้ง

คุณสามารถใช้ตัวกรองเหล่านี้เพื่อปรับสิ่งที่เหมาะกับกรณีการใช้งานของคุณ ตัวอย่างเช่น หากคุณสร้างบทสนทนาในวิดีโอเกม คุณอาจพิจารณาว่ายอมรับได้ที่จะอนุญาตให้แสดงเนื้อหาที่มีการจัดประเภทเป็นอันตรายมากขึ้นเนื่องจากลักษณะของเกม

นอกจากตัวกรองความปลอดภัยที่ปรับได้แล้ว Gemini API ยังมีการป้องกันอันตรายหลักๆ ในตัว เช่น เนื้อหาที่อาจเป็นอันตรายต่อความปลอดภัยของเด็ก ระบบจะบล็อกเนื้อหาที่เป็นอันตรายประเภทเหล่านี้เสมอและไม่สามารถปรับเปลี่ยนได้

ระดับการกรองเพื่อความปลอดภัยของเนื้อหา

Gemini API จะจัดหมวดหมู่ระดับความน่าจะเป็นที่เนื้อหาจะไม่ปลอดภัยเป็น HIGH, MEDIUM, LOW หรือ NEGLIGIBLE

Gemini API จะบล็อกเนื้อหาตามระดับความน่าจะเป็นที่เนื้อหาจะไม่ปลอดภัย ไม่ใช่ความรุนแรง ประเด็นนี้สำคัญเนื่องจากเนื้อหาบางรายการอาจมีแนวโน้มต่ำที่จะไม่ปลอดภัย แม้ว่าความรุนแรงของอันตรายจะยังคงสูงอยู่ก็ตาม เช่น การเปรียบเทียบประโยคต่อไปนี้

  1. หุ่นยนต์ต่อยฉัน
  2. หุ่นยนต์บาดฉัน

ประโยคแรกอาจมีความเป็นไปได้สูงกว่าว่าไม่ปลอดภัย แต่คุณอาจพิจารณาว่าประโยคที่ 2 มีความรุนแรงในระดับที่สูงกว่า ด้วยเหตุนี้ คุณจึงควรทดสอบและพิจารณาอย่างรอบคอบว่าระดับการบล็อกที่เหมาะสมคือระดับใดเพื่อรองรับกรณีการใช้งานหลักของคุณ ขณะเดียวกันก็ลดอันตรายต่อผู้ใช้ปลายทาง

การกรองเพื่อความปลอดภัยตามคำขอ

คุณปรับการตั้งค่าความปลอดภัยสำหรับคำขอแต่ละรายการที่ส่งไปยัง API ได้ เมื่อคุณส่งคำขอ ระบบจะวิเคราะห์เนื้อหาและกำหนดการจัดประเภทความปลอดภัย คะแนนความปลอดภัยจะระบุหมวดหมู่และระดับความน่าจะเป็นของการแบ่งประเภทอันตราย เช่น หากเนื้อหาถูกบล็อกเนื่องจากหมวดหมู่การล่วงละเมิดมีระดับความน่าจะเป็นสูง การจัดประเภทความปลอดภัยที่แสดงผลจะมีหมวดหมู่เท่ากับ HARASSMENT และตั้งค่าระดับความน่าจะเป็นที่จะเกิดอันตรายเป็น HIGH

โดยค่าเริ่มต้น การตั้งค่าความปลอดภัยจะบล็อกเนื้อหา (รวมถึงพรอมต์) ที่มีแนวโน้มปานกลางหรือสูงกว่าที่จะไม่ปลอดภัยในฟีเจอร์การกรอง ความปลอดภัยพื้นฐานนี้ออกแบบมาเพื่อใช้กับ Use Case ส่วนใหญ่ คุณจึงควรปรับการตั้งค่าความปลอดภัยเฉพาะในกรณีที่แอปพลิเคชันของคุณจำเป็นต้องใช้การตั้งค่าดังกล่าวอย่างสม่ำเสมอ

ตารางต่อไปนี้อธิบายการตั้งค่าบล็อกที่คุณปรับสำหรับแต่ละหมวดหมู่ได้ ตัวอย่างเช่น หากคุณตั้งค่าการบล็อกเป็นบล็อกน้อยสำหรับหมวดหมู่วาจาสร้างความเกลียดชัง ระบบจะบล็อกทุกอย่างที่มีแนวโน้มสูงว่าจะเป็นเนื้อหาวาจาสร้างความเกลียดชัง แต่อนุญาตให้ใช้คำที่มีแนวโน้มต่ำลง

เกณฑ์ (Google AI Studio) เกณฑ์ (API) คำอธิบาย
ไม่บล็อก BLOCK_NONE แสดงเสมอโดยไม่คำนึงถึงระดับความน่าจะเป็นที่จะมีเนื้อหาที่ไม่ปลอดภัย
บล็อกเพียงไม่กี่รายการ BLOCK_ONLY_HIGH บล็อกเมื่อมีโอกาสสูงที่จะมีเนื้อหาที่ไม่ปลอดภัย
บล็อกบางส่วน BLOCK_MEDIUM_AND_ABOVE บล็อกเมื่อมีความเป็นไปได้ปานกลางหรือสูงที่จะมีเนื้อหาที่ไม่ปลอดภัย
บล็อกส่วนใหญ่ BLOCK_LOW_AND_ABOVE บล็อกเมื่อมีโอกาสต่ำ ปานกลาง หรือสูงที่จะมีเนื้อหาที่ไม่ปลอดภัย
ไม่มี HARM_BLOCK_THRESHOLD_UNSPECIFIED ไม่ได้ระบุเกณฑ์ ให้บล็อกโดยใช้เกณฑ์เริ่มต้น

หากไม่ได้ตั้งค่าเกณฑ์ เกณฑ์การบล็อกเริ่มต้นจะเป็นบล็อกส่วนใหญ่ (สําหรับ gemini-1.5-pro-002 และ gemini-1.5-flash-002 เท่านั้น) หรือบล็อกบางส่วน (ในรุ่นอื่นๆ ทั้งหมด) สําหรับทุกหมวดหมู่ยกเว้นหมวดหมู่ความซื่อสัตย์ของพลเมือง

เกณฑ์การบล็อกเริ่มต้นสำหรับหมวดหมู่ความสุจริตของภาครัฐคือบล็อกส่วนใหญ่เมื่อส่งพรอมต์โดยใช้ Google AI Studio และบล็อกไม่มีเมื่อใช้ Gemini API โดยตรง

คุณตั้งค่าเหล่านี้สำหรับคำขอแต่ละรายการที่ส่งไปยังบริการ Generative ได้ ดูรายละเอียดได้ที่ข้อมูลอ้างอิง HarmBlockThreshold API

ความคิดเห็นเกี่ยวกับความปลอดภัย

generateContent แสดงผลเป็น GenerateContentResponse ซึ่งรวมความคิดเห็นเกี่ยวกับความปลอดภัย

ความคิดเห็นแบบพรอมต์จะรวมอยู่ในpromptFeedback หากตั้งค่าเป็น promptFeedback.blockReason แสดงว่าเนื้อหาของพรอมต์ถูกบล็อก

ความคิดเห็นของผู้สมัครตอบกลับจะรวมอยู่ใน Candidate.finishReason และ Candidate.safetyRatings หากเนื้อหาคำตอบถูกบล็อกและ finishReason เป็น SAFETY คุณสามารถตรวจสอบ safetyRatings เพื่อดูรายละเอียดเพิ่มเติม ระบบจะไม่แสดงเนื้อหาที่ถูกบล็อก

ปรับการตั้งค่าความปลอดภัย

ส่วนนี้จะอธิบายวิธีปรับการตั้งค่าความปลอดภัยทั้งใน Google AI Studio และโค้ด

Google AI Studio

คุณปรับการตั้งค่าความปลอดภัยได้ใน Google AI Studio แต่ปิดไม่ได้

คลิกแก้ไขการตั้งค่าความปลอดภัยในแผงการตั้งค่าการเรียกใช้เพื่อเปิดโมดัลการตั้งค่าความปลอดภัยในการเรียกใช้ ในโมดัล คุณสามารถใช้แถบเลื่อนเพื่อปรับระดับการกรองเนื้อหาตามหมวดหมู่ความปลอดภัยต่อไปนี้

เมื่อคุณส่งคำขอ (เช่น ถามคำถามนายแบบ/นางแบบ) ข้อความ ไม่มีเนื้อหาจะปรากฏขึ้นหากเนื้อหาของคำขอถูกบล็อก หากต้องการดูรายละเอียดเพิ่มเติม ให้วางเคอร์เซอร์เหนือข้อความไม่มีเนื้อหาค้างไว้ แล้วคลิก ความปลอดภัย

Gemini API SDK

ข้อมูลโค้ดต่อไปนี้แสดงวิธีตั้งค่าความปลอดภัยในการโทรGenerateContent ซึ่งจะกำหนดเกณฑ์สำหรับหมวดหมู่การล่วงละเมิด (HARM_CATEGORY_HARASSMENT) และวาจาสร้างความเกลียดชัง (HARM_CATEGORY_HATE_SPEECH) เช่น การตั้งค่าหมวดหมู่เหล่านี้เป็น BLOCK_LOW_AND_ABOVE จะบล็อกเนื้อหาที่มีแนวโน้มต่ำหรือสูงกว่าที่จะเป็นการคุกคามหรือวาจาสร้างความเกลียดชัง หากต้องการทำความเข้าใจการตั้งค่าเกณฑ์ โปรดดูหัวข้อการกรองความปลอดภัยตามคำขอ

Python

from google.generativeai.types import HarmCategory, HarmBlockThreshold

model = genai.GenerativeModel(model_name='gemini-1.5-flash')
response = model.generate_content(
    ['Do these look store-bought or homemade?', img],
    safety_settings={
        HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    }
)

Go

model := client.GenerativeModel("gemini-1.5-flash")

model.SafetySettings = []*genai.SafetySetting{
  {
    Category:  genai.HarmCategoryHarassment,
    Threshold: genai.HarmBlockLowAndAbove,
  },
  {
    Category:  genai.HarmCategoryHateSpeech,
    Threshold: genai.HarmBlockLowAndAbove,
  },
}

Node.js

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
];

const model = genAi.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings: safetySettings });

เว็บ

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
];

const model = genAi.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings });

Dart (Flutter)

final safetySettings = [
  SafetySetting(HarmCategory.harassment, HarmBlockThreshold.low),
  SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.low),
];
final model = GenerativeModel(
  model: 'gemini-1.5-flash',
  apiKey: apiKey,
  safetySettings: safetySettings,
);

Kotlin

val harassmentSafety = SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.LOW_AND_ABOVE)

val hateSpeechSafety = SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.LOW_AND_ABOVE)

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(harassmentSafety, hateSpeechSafety)
)

Java

SafetySetting harassmentSafety = new SafetySetting(HarmCategory.HARASSMENT,
    BlockThreshold.LOW_AND_ABOVE);

SafetySetting hateSpeechSafety = new SafetySetting(HarmCategory.HATE_SPEECH,
    BlockThreshold.LOW_AND_ABOVE);

GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash",
    BuildConfig.apiKey,
    null, // generation config is optional
    Arrays.asList(harassmentSafety, hateSpeechSafety)
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

REST

    echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

ขั้นตอนถัดไป

  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ API แบบเต็มได้ในเอกสารอ้างอิง API
  • อ่านคำแนะนำด้านความปลอดภัยเพื่อดูภาพรวมทั่วไปเกี่ยวกับข้อควรพิจารณาด้านความปลอดภัยเมื่อพัฒนาด้วย LLM
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับการประเมินความน่าจะเป็นเทียบกับความรุนแรงจากทีม Jigsaw
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์ที่ช่วยให้โซลูชันด้านความปลอดภัยทำงานได้ เช่น Perspective API * คุณสามารถใช้การตั้งค่าความปลอดภัยเหล่านี้เพื่อสร้างตัวแยกประเภทเนื้อหาที่เป็นพิษ ดูตัวอย่างการจัดประเภทเพื่อเริ่มต้นใช้งาน