Configura filtri di sicurezza

i modelli di AI generativa di Google, come Gemini 1.5 Flash e Gemini 1.5 Pro, sono progettati per dare la priorità alla sicurezza. Tuttavia, possono comunque generare risposte dannose, soprattutto quando esplicitamente richiesto. Per migliorare ulteriormente la sicurezza e ridurre al minimo l'uso improprio, puoi configurare i filtri di sicurezza per bloccare le risposte potenzialmente dannose.

In questa pagina vengono descritti tutti i tipi di filtri di sicurezza e vengono descritti i concetti chiave relativi alla sicurezza. Per i filtri configurabili, mostra come configurare le soglie di blocco di ogni categoria di danno per controllare la frequenza con cui prompt e risposte vengono bloccati.

I filtri di sicurezza fungono da barriera, impedendo l'output dannoso, ma non influiscono direttamente sul comportamento del modello. Per scoprire di più sulla sterzabilità del modello, consulta le Istruzioni di sistema.

Prompt non sicuri

L'API Gemini di Vertex AI fornisce uno dei seguenti codici enum per spiegare il motivo del rifiuto di un prompt:

Enum Tipo di filtro Descrizione
PROHIBITED_CONTENT Filtro di sicurezza non configurabile La richiesta è stata bloccata perché è stata segnalata per la presenza di contenuti vietati, in genere materiale pedopornografico.
BLOCKED_REASON_UNSPECIFIED N/D Il motivo del blocco del prompt non è specificato.
ALTRO N/D Questo enum si riferisce a tutti gli altri motivi per cui un prompt viene bloccato. Tieni presente che l'API Gemini di Vertex AI non supporta tutte le lingue. Per un elenco delle lingue supportate, consulta Supporto delle lingue di Gemini.

Per scoprire di più, consulta BlockedReason.

Di seguito è riportato un esempio di output dell'API Gemini di Vertex AI quando un prompt viene bloccato perché contiene PROHIBITED_CONTENT:

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

Risposte non sicure

I seguenti filtri possono rilevare e bloccare le risposte potenzialmente non sicure:

  • Filtri di sicurezza non configurabili, che bloccano il materiale pedopornografico (CSAM) e le informazioni che consentono l'identificazione personale (PII).
  • Filtri di sicurezza configurabili, che bloccano i contenuti non sicuri in base a un elenco di categorie di danni e le relative soglie di blocco configurate dall'utente. Puoi le soglie di blocco per ognuno di questi pericoli in base appropriati per il tuo caso d'uso e la tua attività. Per saperne di più, consulta la sezione Filtri di sicurezza configurabili.
  • Filtri per le citazioni, che impediscono l'uso improprio e garantiscono la citazione corretta delle citazioni protetti da copyright. Per scoprire di più, consulta la sezione Filtro Citazione.

Un LLM genera risposte in unità di testo chiamate token. Un modello smette di generare token perché raggiunge un punto di arresto naturale o perché uno dei filtri blocca la risposta. L'API Gemini di Vertex AI fornisce uno dei seguenti codici enum per spiegare il motivo dell'interruzione della generazione di token:

Enum Tipo di filtro Descrizione
INTERROMPI N/D Questo enum indica che il modello ha raggiunto un punto di arresto naturale o la sequenza di arresto fornita.
MAX_TOKENS N/D La generazione del token è stata interrotta perché il modello ha raggiunto il numero massimo di token specificato nella richiesta.
SICUREZZA Filtro di sicurezza configurabile La generazione del token è stata interrotta perché la risposta è stata segnalata per motivi di sicurezza.
RIVENDICAZIONI Filtro citazione La generazione del token è stata interrotta perché la risposta è stata segnalata per citazioni non autorizzate.
informazioni personali sensibili Filtro di sicurezza non configurabile La generazione del token è stata interrotta perché la risposta è stata segnalata per contenuti che includono informazioni sensibili che consentono l'identificazione personale (SPII).
PROHIBITED_CONTENT Filtro di sicurezza non configurabile La generazione di token è stata interrotta perché la risposta è stata segnalata per contenuti vietati, in genere contenuti pedopornografici.
FINISH_REASON_UNSPECIFIED N/D Il motivo del completamento non è specificato.
ALTRO N/D Questa enum si riferisce a tutti gli altri motivi che interrompono la generazione del token. Tieni presente che la generazione di token non è supportata per tutte le lingue. Per un elenco delle lingue supportate, vedi Supporto delle lingue di Gemini.

Per scoprire di più, consulta FinishReason.

Se un filtro blocca la risposta, il campo Candidate.content della risposta viene annullato. Non fornisce alcun feedback al modello.

Filtri di sicurezza configurabili

I filtri di sicurezza valutano i contenuti sulla base di un elenco danni. Per ogni categoria di danno, i filtri di sicurezza assegnano una un punteggio di sicurezza basato sulla probabilità che i contenuti non siano sicuri e un altro un punteggio di sicurezza basato sulla gravità dei contenuti dannosi.

I filtri di sicurezza configurabili non hanno un sistema di versionamento indipendente dalle versioni del modello. Google non aggiorna il filtro sicurezza configurabile per un precedente una versione più recente di un modello. Tuttavia, potrebbe aggiornare il filtro di sicurezza configurabile per una versione futura di un modello.

Categorie di danni

I filtri di sicurezza valutano i contenuti in base alle seguenti categorie di danni:

Categoria di danno Definizione
Incitamento all'odio Commenti negativi o dannosi rivolti all'identità e/o agli attributi protetti.
Molestie Minacce, intimidazioni, bullismo o commenti illeciti rivolti a un altro individuo.
Contenuti sessualmente espliciti Contiene riferimenti ad atti sessuali o ad altri contenuti osceni.
Contenuti pericolosi Promuove o consente l'accesso a beni, servizi e attività dannosi.

Confronto dei punteggi di probabilità e dei punteggi di gravità

Il punteggio di sicurezza probabilità riflette la probabilità che una risposta del modello sia associata al rispettivo danno. Ha un un punteggio di confidenza associato compreso tra 0.0 e 1.0, arrotondato a una cifra decimale. Il punteggio di confidenza è discretizzato in quattro livelli di confidenza: NEGLIGIBLE, LOW, MEDIUM e HIGH.

Il punteggio di sicurezza di gravità riflette l'entità del livello di pericolosità di un modello risposta. Ha un punteggio di gravità associato compreso tra 0.0 e 1.0, arrotondato a una cifra decimale. Il punteggio di gravità è discretizzato in quattro livelli: NEGLIGIBLE, LOW, MEDIUM e HIGH.

I contenuti possono avere un punteggio di probabilità basso e un punteggio di gravità alto oppure un punteggio di probabilità alto e un punteggio di gravità basso.

Come configurare i filtri di sicurezza

Puoi utilizzare l'API Gemini di Vertex AI o la console Google Cloud per configurare il filtro di sicurezza.

API Gemini di Vertex AI

L'API Gemini di Vertex AI fornisce due "blocchi dannosi" metodo:

  • GRAVITÀ: questo metodo utilizza sia i punteggi di probabilità che quelli di gravità.
  • PROBABILITÀ: questo metodo utilizza solo il punteggio di probabilità.

Il metodo predefinito è SEVERITY. Per i modelli precedenti a gemini-1.5-flash e gemini-1.5-pro, il metodo predefinito è PROBABILITY. Per saperne di più, vedi Riferimento API HarrmBlockMethod.

L'API Gemini di Vertex AI fornisce il seguente "blocco dannoso" soglie:

  • BLOCK_LOW_AND_ABOVE: blocca quando il punteggio di probabilità o il punteggio di gravità è LOW, MEDIUM o HIGH.
  • BLOCK_MEDIUM_AND_ABOVE: blocca quando il punteggio di probabilità o il punteggio di gravità è MEDIUM o HIGH. Per gemini-1.5-flash-001 e gemini-1.5-pro-001, BLOCK_MEDIUM_AND_ABOVE è il valore predefinito.
  • BLOCK_ONLY_HIGH: blocca quando il punteggio di probabilità o il punteggio di gravità è HIGH.
  • HARM_BLOCK_THRESHOLD_UNSPECIFIED: blocca utilizzando la soglia predefinita.
  • OFF: non viene eseguito alcun blocco delle risposte automatiche e non vengono restituiti metadati di sicurezza. Per gemini-1.5-flash-002 e gemini-1.5-pro-002, OFF è il valore predefinito.
  • BLOCK_NONE: l'impostazione di sicurezza BLOCK_NONE rimuove il blocco delle risposte automatiche. In alternativa, puoi configurare le tue linee guida di sicurezza con i punteggi restituiti. Si tratta di un campo limitato che non è Disponibile per tutti gli utenti nel modello GA e versioni successive.

Ad esempio, il seguente codice Python dimostra come è possibile impostare il danno il metodo di blocco su SEVERITY e la soglia di blocco dei danni su BLOCK_ONLY_HIGH per la categoria di contenuti pericolosi:

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

In questo modo, verrà bloccata la maggior parte dei contenuti classificati come pericolosi. Per scoprire di più, consulta la documentazione di riferimento dell'API HarmBlockThreshold.

Per esempi end-to-end in Python, Node.js, Java, Go, C# e REST, consulta Esempi di configurazione dei filtri di sicurezza.

Console Google Cloud

La console Google Cloud consente di configurare una soglia per ogni attributo di sicurezza. Il filtro di sicurezza utilizza solo i punteggi di probabilità. Non è possibile utilizzare i punteggi di gravità.

La console Google Cloud fornisce i seguenti valori di soglia:

  • Off (impostazione predefinita): nessun blocco delle risposte automatiche.
  • Blocca pochi: blocca quando il punteggio di probabilità è HIGH.
  • Bloccane alcuni: blocca quando il punteggio di probabilità è MEDIUM o HIGH.
  • Blocca la maggior parte: viene applicato il blocco quando il punteggio di probabilità è LOW, MEDIUM o HIGH.

Ad esempio, se imposti l'opzione di blocco su Blocca pochi per Categoria di contenuti pericolosi, tutto ciò che ha un'alta probabilità di contenuti pericolosi vengono bloccati. È consentito qualsiasi valore con una probabilità inferiore. La soglia predefinita è Block some.

Per impostare le soglie:

  1. Nella sezione Vertex AI della console Google Cloud, vai a la pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. In Crea un nuovo prompt, fai clic su uno dei pulsanti per aprire la pagina di progettazione del prompt.

  3. Fai clic su Impostazioni di sicurezza.

    Viene visualizzata la finestra di dialogo Impostazioni di sicurezza.

  4. Per ogni categoria di danno, configura il valore di soglia desiderato.

  5. Fai clic su Salva.

Esempio di output quando una risposta viene bloccata dal filtro di sicurezza configurabile

Di seguito è riportato un esempio di output dell'API Gemini di Vertex AI quando una risposta viene bloccata dal filtro di sicurezza configurabile per la presenza di contenuti pericolosi:

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

Esempi di configurazione del filtro di sicurezza

I seguenti esempi mostrano come configurare il filtro di sicurezza utilizzando l'API Gemini di Vertex AI:

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.

Per autenticarti in Vertex AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta API Java Vertex AI documentazione di riferimento.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Prima di provare questo esempio, segui le istruzioni di configurazione Go riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta API Go Vertex AI documentazione di riferimento.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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#

Prima di provare questo esempio, segui le istruzioni di configurazione C# riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# di Vertex AI.

Per autenticarti in Vertex AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: la regione in cui elaborare la richiesta. Disponibile sono le seguenti:

    Fai clic per espandere un elenco parziale delle regioni disponibili

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: il tuo ID progetto.
  • MODEL_ID: l'ID del modello multimodale che vuoi utilizzare. Le opzioni sono:
    • gemini-1.0-pro
    • gemini-1.0-pro-vision
  • ROLE: Il ruolo in una conversazione associata ai contenuti. La specifica di un ruolo è obbligatoria anche nei casi d'uso con un solo turno. I valori accettabili sono:
    • USER: specifica i contenuti inviati da te.
    • MODEL: specifica la risposta del modello.
  • TEXT: Le istruzioni testuali da includere nel prompt.
  • SAFETY_CATEGORY: La categoria di sicurezza per cui configurare una soglia. I valori accettati sono:

    Fai clic per espandere le categorie di sicurezza

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: La soglia per le risposte di blocco che potrebbero appartenere alla categoria di sicurezza specificata in base a la probabilità più alta. I valori accettati sono:

    Fai clic per espandere le soglie di blocco

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (valore predefinito)
    • BLOCK_LOW_AND_ABOVE
    di Gemini Advanced.
    BLOCK_LOW_AND_ABOVE blocca più, mentre BLOCK_ONLY_HIGH blocca meno elementi.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente.

Comando curl di esempio

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"
    }
  ]
}'

Filtro citazione

Le caratteristiche di codice generativo di Vertex AI hanno lo scopo di produrre contenuti originali. Per impostazione predefinita, Gemini limita la probabilità che i contenuti esistenti vengano replicati a lungo. Se una funzionalità di Gemini fa un'ampia citazione da una pagina web, Gemini cita la pagina.

A volte gli stessi contenuti sono disponibili su più pagine web. Gemini tenta di indirizzarti a una fonte molto conosciuta. Nel caso di citazioni di repository di codice, la citazione potrebbe anche fare riferimento a una licenza open source applicabile. Il rispetto di eventuali requisiti di licenza è una tua responsabilità.

Per ulteriori informazioni sui metadati del filtro per le citazioni, consulta la documentazione di riferimento dell'API Citation.

Filtro integrità civica

Il filtro integrità civica rileva e blocca i prompt che menzionano o sono correlati a elezioni politiche e candidati. Questo filtro è disattivato per impostazione predefinita. Per attivare Attivalo, imposta la soglia di blocco per CIVIC_INTEGRITY su uno dei seguenti e i relativi valori. Il valore specificato non cambia.

  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

Il seguente codice Python mostra come attivare il filtro di integrità civica:

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

Per ulteriori dettagli sul filtro di integrità civica, contatta il tuo team Google Cloud responsabile.

Best practice

Anche se i filtri di sicurezza aiutano a prevenire contenuti non sicuri, a volte potrebbero bloccare contenuti sicuri o non vedere contenuti non sicuri. Modelli avanzati come Gemini 1.5 Flash e Gemini 1.5 Pro sono progettato per generare risposte sicure anche senza filtri. Prova diverse impostazioni dei filtri per trovare il giusto equilibrio tra sicurezza e autorizzazione di contenuti appropriati.

Passaggi successivi