Cài đặt an toàn

API Gemini cung cấp các chế độ cài đặt an toàn mà bạn có thể điều chỉnh trong giai đoạn tạo bản mô hình để xác định xem ứng dụng của bạn có yêu cầu cấu hình an toàn hạn chế hơn hay không. Bạn có thể điều chỉnh các chế độ cài đặt này trên 4 danh mục bộ lọc để hạn chế hoặc cho phép một số loại nội dung nhất định.

Hướng dẫn này trình bày cách API Gemini xử lý các chế độ cài đặt và lọc an toàn, cũng như cách bạn có thể thay đổi chế độ cài đặt an toàn cho ứng dụng của mình.

Bộ lọc an toàn

Bộ lọc an toàn có thể điều chỉnh của Gemini API bao gồm các danh mục sau:

Danh mục Mô tả
Quấy rối Bình luận tiêu cực hoặc gây hại nhắm đến danh tính và/hoặc các thuộc tính được bảo vệ.
Lời nói hận thù Nội dung thô tục, khiếm nhã hoặc tục tĩu.
Nội dung khiêu dâm Chứa nội dung đề cập đến hành vi tình dục hoặc nội dung dâm ô khác.
Nguy hiểm Cổ xuý, tạo điều kiện hoặc khuyến khích việc thực hiện hành động gây hại.
Tính liêm chính trong cộng đồng Các cụm từ tìm kiếm liên quan đến bầu cử.

Bạn có thể sử dụng các bộ lọc này để điều chỉnh những thông tin phù hợp với trường hợp sử dụng của mình. Ví dụ: nếu đang xây dựng lời thoại cho trò chơi điện tử, bạn có thể cho phép thêm nội dung được xếp hạng là Dangerous do bản chất của trò chơi.

Ngoài các bộ lọc an toàn có thể điều chỉnh, API Gemini còn tích hợp các biện pháp bảo vệ chống lại các tác hại chính, chẳng hạn như nội dung gây nguy hiểm cho sự an toàn của trẻ em. Những loại nội dung gây hại này luôn bị chặn và không thể điều chỉnh.

Mức lọc nội dung về an toàn

Gemini API phân loại mức độ xác suất nội dung không an toàn là HIGH, MEDIUM, LOW hoặc NEGLIGIBLE.

Gemini API chặn nội dung dựa trên xác suất nội dung không an toàn, chứ không phải mức độ nghiêm trọng. Bạn cần cân nhắc điều này vì một số nội dung có thể có xác suất thấp là không an toàn, mặc dù mức độ nghiêm trọng của nội dung đó vẫn có thể cao. Ví dụ: so sánh các câu:

  1. Rô-bốt đã đấm tôi.
  2. Rô-bốt đã chém tôi.

Câu đầu tiên có thể có nhiều khả năng không an toàn hơn, nhưng bạn có thể coi câu thứ hai là nghiêm trọng hơn về mặt bạo lực. Do đó, bạn cần kiểm thử kỹ lưỡng và cân nhắc mức độ chặn phù hợp để hỗ trợ các trường hợp sử dụng chính, đồng thời giảm thiểu tác hại cho người dùng cuối.

Lọc nội dung an toàn theo yêu cầu

Bạn có thể điều chỉnh chế độ cài đặt an toàn cho từng yêu cầu bạn gửi đến API. Khi bạn gửi yêu cầu, nội dung sẽ được phân tích và chỉ định mức phân loại an toàn. Điểm xếp hạng an toàn bao gồm danh mục và xác suất phân loại mức độ gây hại. Ví dụ: nếu nội dung bị chặn do có nhiều khả năng thuộc danh mục hành vi quấy rối, thì điểm xếp hạng an toàn được trả về sẽ có danh mục bằng HARASSMENT và xác suất gây hại được đặt thành HIGH.

Theo mặc định, chế độ cài đặt an toàn sẽ chặn nội dung (bao gồm cả lời nhắc) có xác suất trung bình trở lên là không an toàn theo bất kỳ bộ lọc nào. Chế độ an toàn cơ sở này được thiết kế để hoạt động cho hầu hết các trường hợp sử dụng, vì vậy, bạn chỉ nên điều chỉnh chế độ cài đặt an toàn nếu ứng dụng của bạn luôn cần đến chế độ này.

Bảng sau đây mô tả các chế độ cài đặt chặn mà bạn có thể điều chỉnh cho từng danh mục. Ví dụ: nếu bạn đặt chế độ cài đặt chặn thành Chặn một số cho danh mục Lời nói hận thù, thì mọi nội dung có nhiều khả năng là lời nói hận thù sẽ bị chặn. Nhưng mọi thứ có xác suất thấp hơn đều được phép.

Ngưỡng (Google AI Studio) Ngưỡng (API) Mô tả
Không chặn thành phần nào BLOCK_NONE Luôn hiển thị bất kể xác suất xuất hiện nội dung không an toàn
Chặn một số BLOCK_ONLY_HIGH Chặn khi có nhiều khả năng là nội dung không an toàn
Chặn một số BLOCK_MEDIUM_AND_ABOVE Chặn khi có khả năng cao hoặc trung bình là nội dung không an toàn
Chặn hầu hết BLOCK_LOW_AND_ABOVE Chặn khi có xác suất thấp, trung bình hoặc cao là nội dung không an toàn
Không áp dụng HARM_BLOCK_THRESHOLD_UNSPECIFIED Không chỉ định ngưỡng, chặn bằng ngưỡng mặc định

Nếu bạn không đặt ngưỡng, thì ngưỡng chặn mặc định sẽ là Chặn hầu hết (chỉ dành cho gemini-1.5-pro-002gemini-1.5-flash-002) hoặc Chặn một số (trong tất cả các mô hình khác) đối với tất cả danh mục ngoại trừ danh mục Tính liêm chính trong cộng đồng.

Ngưỡng chặn mặc định cho danh mục Tính liêm chính trong cộng đồngChặn hầu hết khi gửi lời nhắc bằng Google AI Studio và Không chặn khi sử dụng trực tiếp Gemini API.

Bạn có thể đặt các chế độ cài đặt này cho từng yêu cầu bạn gửi đến dịch vụ tạo sinh. Hãy xem tài liệu tham khảo API HarmBlockThreshold để biết thông tin chi tiết.

Phản hồi về sự an toàn

generateContent trả về một GenerateContentResponse bao gồm cả phản hồi về sự an toàn.

Ý kiến phản hồi nhanh được đưa vào promptFeedback. Nếu bạn đặt promptFeedback.blockReason, thì nội dung của lời nhắc sẽ bị chặn.

Ý kiến phản hồi về đề xuất phản hồi được đưa vào Candidate.finishReasonCandidate.safetyRatings. Nếu nội dung phản hồi bị chặn và finishReasonSAFETY, bạn có thể kiểm tra safetyRatings để biết thêm thông tin chi tiết. Nội dung bị chặn sẽ không được trả về.

Điều chỉnh chế độ cài đặt an toàn

Phần này trình bày cách điều chỉnh chế độ cài đặt an toàn trong cả Google AI Studio và trong mã của bạn.

Google AI Studio

Bạn có thể điều chỉnh các chế độ cài đặt an toàn trong Google AI Studio, nhưng không thể tắt các chế độ cài đặt này.

Nhấp vào Chỉnh sửa chế độ cài đặt an toàn trong bảng điều khiển Cài đặt chạy để mở cửa sổ bật lên Cài đặt an toàn khi chạy. Trong cửa sổ bật lên, bạn có thể sử dụng thanh trượt để điều chỉnh mức lọc nội dung theo danh mục an toàn:

Khi bạn gửi một yêu cầu (ví dụ: bằng cách đặt câu hỏi cho mô hình), thông báo No Content (Không có nội dung) sẽ xuất hiện nếu nội dung của yêu cầu bị chặn. Để xem thêm chi tiết, hãy giữ con trỏ trên văn bản Không có nội dung rồi nhấp vào An toàn.

SDK Gemini API

Đoạn mã sau đây cho biết cách đặt chế độ cài đặt an toàn trong lệnh gọi GenerateContent. Thao tác này sẽ đặt ngưỡng cho các danh mục hành vi quấy rối (HARM_CATEGORY_HARASSMENT) và lời nói hận thù (HARM_CATEGORY_HATE_SPEECH). Ví dụ: việc đặt các danh mục này thành BLOCK_LOW_AND_ABOVE sẽ chặn mọi nội dung có khả năng thấp hoặc cao là nội dung quấy rối hoặc lời nói hận thù. Để tìm hiểu về chế độ cài đặt ngưỡng, hãy xem phần Lọc an toàn theo yêu cầu.

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 });

Web

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

Các bước tiếp theo

  • Hãy xem tài liệu tham khảo API để tìm hiểu thêm về API đầy đủ.
  • Xem lại hướng dẫn về an toàn để biết thông tin tổng quan về các vấn đề cần cân nhắc về an toàn khi phát triển bằng LLM.
  • Tìm hiểu thêm về cách đánh giá xác suất so với mức độ nghiêm trọng từ nhóm Jigsaw
  • Tìm hiểu thêm về các sản phẩm đóng góp vào các giải pháp an toàn như Perspective API. * Bạn có thể sử dụng các chế độ cài đặt an toàn này để tạo một trình phân loại nội dung độc hại. Hãy xem ví dụ về việc phân loại để bắt đầu.