Mengonfigurasi filter keamanan

Model AI generatif Google, seperti Gemini 1.5 Flash dan Gemini 1.5 Pro, dirancang untuk memprioritaskan keamanan. Namun, mereka tetap dapat menghasilkan respons berbahaya, terutama saat diprompt secara eksplisit. Untuk lebih meningkatkan keamanan dan meminimalkan penyalahgunaan, Anda dapat mengonfigurasi filter keamanan untuk memblokir respons yang berpotensi berbahaya.

Halaman ini menjelaskan setiap jenis filter keamanan dan menguraikan konsep keamanan utama. Untuk filter yang dapat dikonfigurasi, halaman ini menunjukkan cara mengonfigurasi nilai minimum pemblokiran setiap kategori bahaya untuk mengontrol frekuensi pemblokiran perintah dan respons.

Filter keamanan berfungsi sebagai penghalang, mencegah output berbahaya, tetapi tidak secara langsung memengaruhi perilaku model. Untuk mempelajari kemampuan kemudi model lebih lanjut, lihat Petunjuk sistem untuk keamanan.

Perintah yang tidak aman

Vertex AI Gemini API memberikan salah satu kode enum berikut untuk menjelaskan alasan perintah ditolak:

Enum Jenis filter Deskripsi
PROHIBITED_CONTENT Filter keamanan yang tidak dapat dikonfigurasi Perintah tersebut diblokir karena ditandai karena berisi konten yang dilarang, biasanya CSAM.
BLOCKED_REASON_UNSPECIFIED T/A Alasan pemblokiran perintah tidak ditentukan.
LAINNYA T/A Enum ini mengacu pada semua alasan lain untuk memblokir perintah. Perhatikan bahwa Vertex AI Gemini API tidak mendukung semua bahasa. Untuk mengetahui daftar bahasa yang didukung, lihat Dukungan bahasa Gemini.

Untuk mempelajari lebih lanjut, lihat BlockedReason.

Berikut adalah contoh output Vertex AI Gemini API saat perintah diblokir karena berisi PROHIBITED_CONTENT:

{
  "promptFeedback": {
    "blockReason": "PROHIBITED_CONTENT"
  },
  "usageMetadata": {
    "promptTokenCount": 7,
    "totalTokenCount": 7
  }
}

Respons yang tidak aman

Filter berikut dapat mendeteksi dan memblokir respons yang berpotensi tidak aman:

  • Filter keamanan yang tidak dapat dikonfigurasi, yang memblokir materi pelecehan seksual terhadap anak-anak (CSAM) dan informasi identitas pribadi (PII).
  • Filter keamanan yang dapat dikonfigurasi, yang memblokir konten tidak aman berdasarkan daftar kategori bahaya dan batas pemblokiran yang dikonfigurasi pengguna. Anda dapat mengonfigurasi nilai minimum pemblokiran untuk setiap bahaya ini berdasarkan hal yang sesuai untuk kasus penggunaan dan bisnis Anda. Untuk mempelajari lebih lanjut, lihat Filter keamanan yang dapat dikonfigurasi.
  • Filter kutipan, yang memberikan kutipan untuk materi sumber. Untuk mempelajari lebih lanjut, lihat Filter kutipan.

LLM menghasilkan respons dalam unit teks yang disebut token. Model berhenti membuat token karena mencapai titik berhenti alami atau karena salah satu filter memblokir respons. Vertex AI Gemini API menyediakan salah satu kode enum berikut untuk menjelaskan alasan pembuatan token dihentikan:

Enum Jenis filter Deskripsi
STOP T/A Enum ini menunjukkan bahwa model mencapai titik perhentian alami atau urutan perhentian yang diberikan.
MAX_TOKENS T/A Pembuatan token dihentikan karena model mencapai jumlah maksimum token yang ditentukan dalam permintaan.
KESELAMATAN Filter keamanan yang dapat dikonfigurasi Pembuatan token dihentikan karena respons ditandai karena alasan keamanan.
PEMBACAAN Filter kutipan Pembuatan token dihentikan karena potensi pembacaan.
SPII Filter keamanan yang tidak dapat dikonfigurasi Pembuatan token dihentikan karena respons ditandai untuk konten Informasi Identitas Pribadi yang Sensitif (SPII).
PROHIBITED_CONTENT Filter keamanan yang tidak dapat dikonfigurasi Pembuatan token dihentikan karena respons ditandai karena berisi konten yang dilarang, biasanya CSAM.
FINISH_REASON_UNSPECIFIED T/A Alasan penyelesaian tidak ditentukan.
LAINNYA T/A Enum ini mengacu pada semua alasan lain yang menghentikan pembuatan token. Perhatikan bahwa pembuatan token tidak didukung untuk semua bahasa. Untuk mengetahui daftar bahasa yang didukung, lihat Dukungan bahasa Gemini.

Untuk mempelajari lebih lanjut, lihat FinishReason.

Jika filter memblokir respons, filter akan membatalkan kolom Candidate.content respons. Model ini tidak memberikan masukan apa pun ke model.

Filter keamanan yang dapat dikonfigurasi

Filter keamanan menilai konten berdasarkan daftar bahaya. Untuk setiap kategori bahaya, filter keamanan menetapkan satu skor keamanan berdasarkan probabilitas konten tidak aman dan skor keamanan lain berdasarkan keparahan konten berbahaya.

Filter keamanan yang dapat dikonfigurasi tidak memiliki versi yang independen dari versi model. Google tidak akan memperbarui filter keamanan yang dapat dikonfigurasi untuk versi model yang dirilis sebelumnya. Namun, tindakan ini dapat memperbarui filter keamanan yang dapat dikonfigurasi untuk versi model mendatang.

Kategori bahaya

Filter keamanan menilai konten berdasarkan kategori bahaya berikut:

Kategori Kerugian Definisi
Ujaran Kebencian Komentar negatif atau berbahaya yang menargetkan atribut identitas dan/atau dilindungi.
Pelecehan Komentar yang mengancam, mengintimidasi, menindas, atau melecehkan yang menarget individu lain.
Seksual Vulgar Berisi referensi ke tindakan seksual atau konten cabul lainnya.
Konten Berbahaya Mempromosikan atau memungkinkan akses ke barang, layanan, dan aktivitas berbahaya.

Perbandingan skor probabilitas dan skor keparahan

Skor keamanan probabilitas mencerminkan kemungkinan respons model terkait dengan bahaya masing-masing. Atribut ini memiliki skor keyakinan terkait antara 0.0 dan 1.0, yang dibulatkan ke satu angka desimal. Skor keyakinan didiskretisasi menjadi empat tingkat keyakinan keamanan: NEGLIGIBLE, LOW, MEDIUM, dan HIGH.

Skor keamanan keparahan mencerminkan besarnya tingkat bahaya respons model. Masalah ini memiliki skor keparahan terkait yang berkisar dari 0.0 hingga 1.0, dibulatkan ke satu tempat desimal. Skor keparahan diskretasikan menjadi empat level: NEGLIGIBLE, LOW, MEDIUM, dan HIGH.

Konten dapat memiliki skor probabilitas rendah dan skor keparahan tinggi, atau skor probabilitas tinggi dan skor keparahan rendah.

Cara mengonfigurasi filter keamanan

Anda dapat menggunakan Vertex AI Gemini API atau konsol Google Cloud untuk mengonfigurasi filter keamanan.

Vertex AI Gemini API

Vertex AI Gemini API menyediakan dua metode "blokir bahaya":

  • KEPARAHAN: Metode ini menggunakan skor probabilitas dan keparahan.
  • PROBABILITY: Metode ini hanya menggunakan skor probabilitas.

Metode default-nya adalah SEVERITY. Untuk model yang lebih lama dari gemini-1.5-flash dan gemini-1.5-pro, metode defaultnya adalah PROBABILITY. Untuk mempelajari lebih lanjut, lihat referensi API HarmBlockMethod.

Vertex AI Gemini API menyediakan nilai minimum "blokir bahaya" berikut:

  • BLOCK_LOW_AND_ABOVE: Memblokir jika skor probabilitas atau skor keparahan adalah LOW, MEDIUM, atau HIGH.
  • BLOCK_MEDIUM_AND_ABOVE: Memblokir jika skor probabilitas atau skor keparahan adalah MEDIUM atau HIGH. Untuk gemini-1.5-flash-001 dan gemini-1.5-pro-001, BLOCK_MEDIUM_AND_ABOVE adalah nilai default.
  • BLOCK_ONLY_HIGH: Blokir jika skor probabilitas atau skor keparahan adalah HIGH.
  • HARM_BLOCK_THRESHOLD_UNSPECIFIED: Memblokir menggunakan nilai minimum default.
  • NONAKTIF: Tidak ada pemblokiran respons otomatis dan tidak ada metadata keamanan yang ditampilkan. Untuk gemini-1.5-flash-002 dan gemini-1.5-pro-002, OFF adalah nilai default.
  • BLOCK_NONE: Setelan keamanan BLOCK_NONE menghapus pemblokiran respons otomatis. Sebagai gantinya, Anda dapat mengonfigurasi pedoman keamanan Anda sendiri dengan skor yang ditampilkan. Ini adalah kolom terbatas yang tidak tersedia untuk semua pengguna dalam versi model GA.

Misalnya, kode Python berikut menunjukkan cara menetapkan nilai minimum pemblokiran konten berbahaya ke BLOCK_ONLY_HIGH untuk kategori konten berbahaya:

generative_models.SafetySetting(
        category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
    ),

Tindakan ini akan memblokir sebagian besar konten yang diklasifikasikan sebagai konten berbahaya. Untuk mempelajari lebih lanjut, lihat referensi HarmBlockThreshold API.

Untuk contoh menyeluruh di Python, Node.js, Java, Go, C#, dan REST, lihat Contoh konfigurasi filter keamanan.

Konsol Google Cloud

Konsol Google Cloud memungkinkan Anda mengonfigurasi nilai minimum untuk setiap atribut keamanan. Filter keamanan hanya menggunakan skor probabilitas. Tidak ada opsi untuk menggunakan skor keparahan.

Konsol Google Cloud menyediakan nilai nilai minimum berikut:

  • Nonaktif (default): Tidak ada pemblokiran respons otomatis.
  • Block few: Memblokir jika skor probabilitasnya adalah HIGH.
  • Blokir beberapa: Memblokir jika skor probabilitasnya adalah MEDIUM atau HIGH.
  • Blokir sebagian besar: Memblokir jika skor probabilitasnya adalah LOW, MEDIUM, atau HIGH.

Misalnya, jika Anda menetapkan setelan pemblokiran ke Block few untuk kategori Konten Berbahaya, semua konten yang memiliki probabilitas tinggi sebagai konten berbahaya akan diblokir. Semua yang memiliki probabilitas lebih rendah diizinkan. Nilai minimum default-nya adalah Block some.

Untuk menetapkan nilai minimum, lihat langkah-langkah berikut:

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Vertex AI Studio.

    Buka Vertex AI Studio

  2. Di bagian Buat perintah baru, klik salah satu tombol untuk membuka halaman desain perintah.

  3. Klik Setelan keamanan.

    Jendela dialog Setelan keamanan akan terbuka.

  4. Untuk setiap kategori bahaya, konfigurasikan nilai nilai minimum yang diinginkan.

  5. Klik Simpan.

Contoh output saat respons diblokir oleh filter keamanan yang dapat dikonfigurasi

Berikut adalah contoh output Vertex AI Gemini API saat respons diblokir oleh filter keamanan yang dapat dikonfigurasi karena berisi konten berbahaya:

{
  "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
  }
}

Contoh konfigurasi filter keamanan

Contoh berikut menunjukkan cara mengonfigurasi filter keamanan menggunakan Vertex AI Gemini API:

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

import vertexai

from vertexai.generative_models import (
    GenerativeModel,
    HarmCategory,
    HarmBlockThreshold,
    Part,
    SafetySetting,
)

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel("gemini-1.5-flash-002")

# Safety config
safety_config = [
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
]

image_file = Part.from_uri(
    "gs://cloud-samples-data/generative-ai/image/scones.jpg", "image/jpeg"
)

# Generate content
response = model.generate_content(
    [image_file, "What is in this image?"],
    safety_settings=safety_config,
)

print(response.text)
print(response.candidates[0].safety_ratings)
# Example response:
# The image contains a beautiful arrangement of blueberry scones, flowers, coffee, and blueberries.
# The scene is set on a rustic blue background. The image evokes a sense of comfort and indulgence.
# ...

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const {
  VertexAI,
  HarmCategory,
  HarmBlockThreshold,
} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
const PROJECT_ID = process.env.CAIP_PROJECT_ID;
const LOCATION = 'us-central1';
const MODEL = 'gemini-1.5-flash-001';

async function setSafetySettings() {
  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: PROJECT_ID, location: LOCATION});

  // Instantiate the model
  const generativeModel = vertexAI.getGenerativeModel({
    model: MODEL,
    // The following parameters are optional
    // They can also be passed to individual content generation requests
    safetySettings: [
      {
        category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      },
      {
        category: HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      },
    ],
  });

  const request = {
    contents: [{role: 'user', parts: [{text: 'Tell me something dangerous.'}]}],
  };

  console.log('Prompt:');
  console.log(request.contents[0].parts[0].text);
  console.log('Streaming Response Text:');

  // Create the response stream
  const responseStream = await generativeModel.generateContentStream(request);

  // Log the text response as it streams
  for await (const item of responseStream.stream) {
    if (item.candidates[0].finishReason === 'SAFETY') {
      console.log('This response stream terminated due to safety concerns.');
      break;
    } else {
      process.stdout.write(item.candidates[0].content.parts[0].text);
    }
  }
  console.log('This response stream terminated due to safety concerns.');
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.Candidate;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.api.GenerationConfig;
import com.google.cloud.vertexai.api.HarmCategory;
import com.google.cloud.vertexai.api.SafetySetting;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import java.util.Arrays;
import java.util.List;

public class WithSafetySettings {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";
    String textPrompt = "your-text-here";

    String output = safetyCheck(projectId, location, modelName, textPrompt);
    System.out.println(output);
  }

  // Use safety settings to avoid harmful questions and content generation.
  public static String safetyCheck(String projectId, String location, String modelName,
      String textPrompt) throws Exception {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      StringBuilder output = new StringBuilder();

      GenerationConfig generationConfig =
          GenerationConfig.newBuilder()
              .setMaxOutputTokens(2048)
              .setTemperature(0.4F)
              .build();

      List<SafetySetting> safetySettings = Arrays.asList(
          SafetySetting.newBuilder()
              .setCategory(HarmCategory.HARM_CATEGORY_HATE_SPEECH)
              .setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE)
              .build(),
          SafetySetting.newBuilder()
              .setCategory(HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT)
              .setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE)
              .build()
      );

      GenerativeModel model = new GenerativeModel(modelName, vertexAI)
          .withGenerationConfig(generationConfig)
          .withSafetySettings(safetySettings);

      GenerateContentResponse response = model.generateContent(textPrompt);
      output.append(response).append("\n");

      // Verifies if the above content has been blocked for safety reasons.
      boolean blockedForSafetyReason = response.getCandidatesList()
          .stream()
          .anyMatch(candidate -> candidate.getFinishReason() == Candidate.FinishReason.SAFETY);
      output.append("Blocked for safety reasons?: ").append(blockedForSafetyReason);

      return output.toString();
    }
  }
}

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Go Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import (
	"context"
	"fmt"
	"io"
	"mime"
	"path/filepath"

	"cloud.google.com/go/vertexai/genai"
)

// generateMultimodalContent generates a response into w, based upon the  provided image.
func generateMultimodalContent(w io.Writer, projectID, location, modelName string) error {
	// location := "us-central1"
	// model := "gemini-1.5-flash-001"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	model := client.GenerativeModel(modelName)
	model.SetTemperature(0.4)
	// configure the safety settings thresholds
	model.SafetySettings = []*genai.SafetySetting{
		{
			Category:  genai.HarmCategoryHarassment,
			Threshold: genai.HarmBlockLowAndAbove,
		},
		{
			Category:  genai.HarmCategoryDangerousContent,
			Threshold: genai.HarmBlockLowAndAbove,
		},
	}

	// Given an image file URL, prepare image file as genai.Part
	img := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext("320px-Felis_catus-cat_on_snow.jpg")),
		FileURI:  "gs://cloud-samples-data/generative-ai/image/320px-Felis_catus-cat_on_snow.jpg",
	}

	res, err := model.GenerateContent(ctx, img, genai.Text("describe this image."))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	fmt.Fprintf(w, "generated response: %s\n", res.Candidates[0].Content.Parts[0])
	return nil
}

C#

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API C# Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


using Google.Api.Gax.Grpc;
using Google.Cloud.AIPlatform.V1;
using System.Text;
using System.Threading.Tasks;
using static Google.Cloud.AIPlatform.V1.SafetySetting.Types;

public class WithSafetySettings
{
    public async Task<string> GenerateContent(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001"
    )
    {
        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();


        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = "Hello!" }
                    }
                }
            },
            SafetySettings =
            {
                new SafetySetting
                {
                    Category = HarmCategory.HateSpeech,
                    Threshold = HarmBlockThreshold.BlockLowAndAbove
                },
                new SafetySetting
                {
                    Category = HarmCategory.DangerousContent,
                    Threshold = HarmBlockThreshold.BlockMediumAndAbove
                }
            }
        };

        using PredictionServiceClient.StreamGenerateContentStream response = predictionServiceClient.StreamGenerateContent(generateContentRequest);

        StringBuilder fullText = new();

        AsyncResponseStream<GenerateContentResponse> responseStream = response.GetResponseStream();
        await foreach (GenerateContentResponse responseItem in responseStream)
        {
            // Check if the content has been blocked for safety reasons.
            bool blockForSafetyReason = responseItem.Candidates[0].FinishReason == Candidate.Types.FinishReason.Safety;
            if (blockForSafetyReason)
            {
                fullText.Append("Blocked for safety reasons");
            }
            else
            {
                fullText.Append(responseItem.Candidates[0].Content.Parts[0].Text);
            }
        }

        return fullText.ToString();
    }
}

REST

Setelah menyiapkan lingkungan, Anda dapat menggunakan REST untuk menguji perintah teks. Contoh berikut mengirimkan permintaan ke endpoint model penayang.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Region untuk memproses permintaan. Opsi yang tersedia mencakup hal berikut:

    Klik untuk meluaskan sebagian daftar region yang tersedia

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Project ID Anda.
  • MODEL_ID: ID model model multimodal yang ingin Anda gunakan. Opsinya adalah:
    • gemini-1.0-pro
    • gemini-1.0-pro-vision
  • ROLE: Peran dalam percakapan yang terkait dengan konten. Menentukan peran diperlukan bahkan dalam kasus penggunaan satu giliran. Nilai yang dapat diterima mencakup hal berikut:
    • USER: Menentukan konten yang dikirim oleh Anda.
    • MODEL: Menentukan respons model.
  • TEXT: Petunjuk teks yang akan disertakan dalam perintah.
  • SAFETY_CATEGORY: Kategori keamanan untuk mengonfigurasi nilai minimum. Nilai yang dapat diterima mencakup hal berikut:

    Klik untuk meluaskan kategori keamanan

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: Batas untuk memblokir respons yang mungkin termasuk dalam kategori keamanan yang ditentukan berdasarkan probabilitas. Nilai yang dapat diterima mencakup hal berikut:

    Klik untuk meluaskan nilai minimum pemblokiran

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (default)
    • BLOCK_LOW_AND_ABOVE
    BLOCK_LOW_AND_ABOVE memblokir paling banyak, sedangkan BLOCK_ONLY_HIGH memblokir paling sedikit.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent

Isi JSON permintaan:

{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "safetySettings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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

Anda akan melihat respons JSON yang mirip seperti berikut:

Contoh perintah curl

LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
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"
    }
  ]
}'

Filter kutipan

Fitur kode generatif Vertex AI dimaksudkan untuk menghasilkan konten asli. Secara desain, Gemini membatasi kemungkinan konten yang sudah ada direplikasi secara mendetail. Jika fitur Gemini membuat kutipan yang panjang dari halaman web, Gemini akan mencantumkan halaman tersebut sebagai sumber kutipan.

Terkadang konten yang sama dapat ditemukan di beberapa halaman web. Gemini akan mengarahkan Anda ke sumber yang populer. Dalam hal kutipan ke repositori kode, kutipan juga dapat merujuk ke lisensi open source yang berlaku. Mematuhi setiap persyaratan lisensi adalah tanggung jawab Anda sendiri.

Untuk mempelajari metadata filter kutipan, lihat Referensi Citation API.

Filter integritas sipil

Filter integritas sipil mendeteksi dan memblokir perintah yang menyebutkan atau terkait dengan pemilu dan kandidat politik. Filter ini dinonaktifkan secara default. Untuk mengaktifkannya, tetapkan nilai minimum pemblokiran untuk CIVIC_INTEGRITY ke salah satu nilai berikut. Nilai yang Anda tentukan tidak akan berpengaruh.

  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

Kode Python berikut menunjukkan cara mengaktifkan filter integritas sipil:

  generative_models.SafetySetting(
          category=generative_models.HarmCategory.CIVIC_INTEGRITY,
          threshold=generative_models.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      ),

Untuk mengetahui detail selengkapnya tentang filter integritas sipil, hubungi perwakilan Google Cloud Anda.

Praktik terbaik

Meskipun filter keamanan membantu mencegah konten yang tidak aman, filter tersebut terkadang mungkin memblokir konten yang aman atau melewatkan konten yang tidak aman. Model lanjutan seperti Gemini 1.5 Flash dan Gemini 1.5 Pro didesain untuk menghasilkan respons yang aman meskipun tanpa filter. Uji berbagai setelan filter untuk menemukan keseimbangan yang tepat antara keamanan dan mengizinkan konten yang sesuai.

Langkah selanjutnya