Configura gli attributi di sicurezza

I modelli linguistici di grandi dimensioni (LLM) potrebbero generare output inaspettati, tra cui testo offensivo, insensibile o di fatto errato. Per garantire la sicurezza ed evitare usi impropri, Gemini utilizza i filtri di sicurezza per bloccare prompt e risposte che determina come potenzialmente dannosi.

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

I filtri di sicurezza agiscono come una barriera, prevenendo output dannosi, ma non influenzano direttamente il comportamento del modello. Per scoprire di più sulla sterzabilità del modello, consulta Istruzioni di sistema.

Prompt non sicuri

L'API Vertex AI Gemini fornisce uno dei seguenti codici enum per spiegare perché un prompt è stato rifiutato:

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/A Il motivo per il blocco del prompt non è specificato.
ALTRO N/A Questa enum si riferisce a tutti gli altri motivi per il blocco di un prompt. Tieni presente che l'API Gemini di Vertex AI non supporta tutte le lingue. Per un elenco delle lingue supportate, vedi 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 è bloccato per contenere PROHIBITED_CONTENT:

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

Risposte non sicure

Per determinare quali risposte sono potenzialmente non sicure, l'API Vertex AI Gemini utilizza i seguenti filtri:

  • Filtri di sicurezza non configurabili, che bloccano il materiale pedopornografico 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 attributi di sicurezza e alle relative soglie di blocco configurate dall'utente. Puoi configurare le soglie di blocco per ciascuno di questi attributi in base a ciò che è appropriato per il tuo caso d'uso e la tua attività. Per saperne di più, consulta la sezione Filtri di sicurezza configurabili.
  • Filtri delle citazioni, che impediscono l'uso improprio e garantiscono la corretta citazione dei dati protetti da copyright. Per scoprire di più, consulta la sezione Filtro Citazione.

Un LLM genera le risposte in unità di testo chiamate token. Un modello interrompe la generazione di token perché raggiunge un punto di interruzione naturale o perché uno dei filtri blocca la risposta. L'API Vertex AI Gemini fornisce uno dei seguenti codici enum per spiegare perché la generazione dei token si è interrotta:

Enum Tipo di filtro Descrizione
INTERROMPI N/A Questa enum indica che il modello ha raggiunto un punto di interruzione naturale o la sequenza di interruzione fornita.
MAX_TOKENS N/A 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 di informazioni sensibili che consentono l'identificazione personale (informazioni personali sensibili).
PROHIBITED_CONTENT Filtro di sicurezza non configurabile La generazione del token è stata interrotta perché la risposta è stata segnalata perché include contenuti vietati, in genere materiale pedopornografico.
FINISH_REASON_UNSPECIFIED N/A Il motivo del completamento non è specificato.
ALTRO N/A 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ù, vedi FinishReason.

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

Filtri di sicurezza configurabili

Gemini valuta i contenuti in base a un elenco di attributi di sicurezza, che includono categorie e argomenti dannosi che possono essere considerati sensibili. Per ogni attributo, l'API Vertex AI Gemini assegna un punteggio di sicurezza basato sulla probabilità che i contenuti non siano sicuri e un altro punteggio di sicurezza basato sulla gravità dei contenuti dannosi.

Il filtro di sicurezza configurabile non ha un controllo delle versioni indipendente dalle versioni del modello. Google non aggiorna il filtro sicurezza configurabile per una versione rilasciata di un modello. Tuttavia, può aggiornare il filtro sicurezza configurabile per una versione futura di un modello.

Attributi di sicurezza

Gemini valuta i contenuti in base ai seguenti attributi di sicurezza:

Attributo di sicurezza Definizione
Incitamento all'odio Commenti negativi o dannosi che hanno come target l'identità e/o attributi protetti.
Molestie Commenti dannosi, intimidatori, prepotenti o illeciti rivolti a un altro individuo.
Sessualmente esplicito Riferimenti ad atti sessuali o ad altri contenuti osceni.
Contenuti pericolosi Promuovono o consentono l'accesso a beni, servizi e attività dannosi.

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

L'attributo sicurezza probability riflette la probabilità che una risposta del modello sia associata al rispettivo attributo sicurezza. Ha 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 affidabilità della sicurezza: NEGLIGIBLE, LOW, MEDIUM e HIGH.

L'attributo sicurezza gravità riflette l'entità del potenziale dannoso di una risposta del modello. Ha un punteggio di gravità associato che va da 0.0 a 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à elevato oppure un punteggio di probabilità alto e un punteggio di gravità basso. Ad esempio, considera le due frasi seguenti:

  1. Il robot mi ha dato un pugno.
  2. Il robot mi ha colpito.

La prima frase potrebbe comportare una maggiore probabilità di non essere sicura, mentre la seconda frase potrebbe avere una gravità maggiore in termini di violenza. Per questo motivo, è importante testare e considerare con attenzione il livello appropriato di blocco richiesto per supportare i tuoi casi d'uso principali e ridurre al minimo i danni per gli utenti finali.

Come configurare il filtro di sicurezza

Per configurare il filtro di sicurezza, puoi utilizzare l'API Vertex AI Gemini o la console Google Cloud.

API Gemini di Vertex AI

L'API Gemini di Vertex AI offre due metodi di "blocco dannoso":

  • 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 è PROBABILITY. Per scoprire di più, consulta la documentazione di riferimento dell'API HarmBlockMethod.

L'API Vertex AI Gemini fornisce le seguenti soglie di "blocco dei danni":

  • 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.
  • BLOCK_ONLY_HIGH: blocca quando il punteggio di probabilità o il punteggio di gravità è HIGH.
  • HARM_BLOCK_THRESHOLD_UNSPECIFIED: blocca utilizzando la soglia predefinita.
  • BLOCK_NONE (limitato): l'impostazione di sicurezza BLOCK_NONE rimuove il blocco delle risposte automatiche e consente di configurare le tue linee guida di sicurezza con i punteggi restituiti. Questo è un campo limitato che non è disponibile per tutti gli utenti nelle versioni del modello GA. BLOCK_NONE non è supportato per l'input audio e video quando usi Gemini 1.5 Flash o Gemini 1.5 Pro.

Per accedere all'impostazione BLOCK_NONE, puoi:

  1. Applica la lista consentita tramite il modulo Lista consentita del filtro di sicurezza di Gemini oppure
  2. Passa alla fatturazione mensile non automatica per il tuo tipo di account con il riferimento alla fatturazione mensile non automatica di Google Cloud.

La soglia predefinita è BLOCK_MEDIUM_AND_ABOVE. Per scoprire di più, consulta Riferimento dell'API HarmBlockThreshold.

Ad esempio, il seguente codice Python mostra come puoi impostare il metodo di blocco del danno su SEVERITY e la soglia del blocco dei danni su BLOCK_LOW_AND_ABOVE 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_LOW_AND_ABOVE,
    ),

Questa operazione blocca la maggior parte dei contenuti classificati come pericolosi.

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

Console Google Cloud

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

La console Google Cloud fornisce i seguenti valori di soglia:

  • Blocca pochi: blocca quando il punteggio di probabilità è HIGH.
  • Bloccane alcuni: blocca quando il punteggio di probabilità è MEDIUM o HIGH.
  • Blocca più elementi: blocca quando il punteggio di probabilità è LOW, MEDIUM o HIGH.

Ad esempio, se imposti l'opzione di blocco su Blocca pochi per la categoria di contenuti pericolosi, viene bloccato tutto ciò che ha un'alta probabilità di essere contenuti pericolosi. È consentito tutto ciò che presenta una probabilità inferiore. La soglia predefinita è Block some.

Per impostare le soglie, segui questi passaggi:

  1. Nella sezione Vertex AI della console Google Cloud, vai alla 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 dei prompt.

  3. Fai clic su Impostazioni di sicurezza.

    Si apre la finestra di dialogo Impostazioni di sicurezza.

  4. Per ogni attributo di sicurezza, configura il valore di soglia desiderato.

  5. Fai clic su Salva.

Output di esempio quando una risposta viene bloccata dal filtro 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 dimostrano 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 maggiori informazioni, consulta la documentazione di riferimento dell'API Python.

import vertexai

from vertexai import generative_models

# TODO(developer): Update and un-comment below line
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

model = generative_models.GenerativeModel(model_name="gemini-1.5-flash-001")

# Generation config
generation_config = generative_models.GenerationConfig(
    max_output_tokens=2048, temperature=0.4, top_p=1, top_k=32
)

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

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

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

text_responses = []
for response in responses:
    print(response.text)
    text_responses.append(response.text)

Node.js

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Vertex AI.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori 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.
 */
async function setSafetySettings(
  projectId = 'PROJECT_ID',
  location = 'us-central1',
  model = 'gemini-1.5-flash-001'
) {
  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: projectId, 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
    safety_settings: [
      {
        category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      },
    ],
    generation_config: {
      max_output_tokens: 256,
      temperature: 0.4,
      top_p: 1,
      top_k: 16,
    },
  });

  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 per la configurazione di Java nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Vertex AI.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori 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)
              .setTopK(32)
              .setTopP(1)
              .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_MEDIUM_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 per la configurazione di Go nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go Vertex AI.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori 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 prompt
// and image provided.
func generateMultimodalContent(w io.Writer, prompt, image, projectID, location, modelName string) error {
	// prompt := "describe this image."
	// location := "us-central1"
	// model := "gemini-1.5-flash-001"
	// image := "gs://cloud-samples-data/generative-ai/image/320px-Felis_catus-cat_on_snow.jpg"
	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(image)),
		FileURI:  image,
	}

	res, err := model.GenerateContent(ctx, img, genai.Text(prompt))
	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 per la configurazione di C# nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# Vertex AI.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori 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 di publisher.

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

  • LOCATION: la regione in cui elaborare la richiesta. Le opzioni disponibili 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. È necessario specificare un ruolo anche nei casi d'uso a turno singolo. I valori accettati sono:
    • USER: specifica i contenuti inviati da te.
    • MODEL: specifica la risposta del modello.
  • TEXT: le istruzioni di testo 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 il blocco delle risposte che potrebbero appartenere alla categoria di sicurezza specificata in base alla probabilità. 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
    BLOCK_LOW_AND_ABOVE blocca di più, mentre BLOCK_ONLY_HIGH blocca meno.

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" }
  },
  "safety_settings": {
    "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 ed esegui questo comando:

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 ed esegui questo comando:

$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": "BLOCK_NONE"
    },
    {
      "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 funzionalità di codice generativo di Vertex AI sono pensate per produrre contenuti originali. In base alla sua progettazione, Gemini limita la probabilità che i contenuti esistenti vengano replicati Se una funzionalità di Gemini fa una citazione esaustiva da una pagina web, Gemini indicherà 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 a 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.

Passaggi successivi