Inviare richieste di prompt di chat (Gemini)

Questa pagina mostra come inviare prompt di chat al modello Gemini 1.0 Pro (gemini-1.0-pro) utilizzando la console Google Cloud, l'API REST e gli SDK supportati. Gemini 1.0 Pro supporta i prompt con input di solo testo, incluse attività in linguaggio naturale, chat di codice e testo in più passaggi e generazione di codice. Può generare testo e codice.

Gemini 1.0 Pro è un modello linguistico di grandi dimensioni che eccelle nella comprensione e nella generazione del linguaggio. Puoi interagire con Gemini Pro utilizzando una risposta e un prompt a turno singolo o chattare con lui in una conversazione continua e multi-turno, anche per comprendere e generare il codice.

Per un elenco delle lingue supportate da Gemini 1.0 Pro, consulta le informazioni sul modello Supporto delle lingue.


Per esplorare questo modello nella console, seleziona la scheda del modello gemini-1.0-pro in Model Garden.

Vai a Model Garden


Se stai cercando un modo per utilizzare Gemini direttamente dalle app mobile e web, dai un'occhiata agli SDK IA di Google per Android, Swift e web.

Inviare richieste di chat

Per eseguire test e iterazioni dei prompt di chat, consigliamo di utilizzare la console Google Cloud. Per inviare prompt in modo programmatico al modello, puoi usare l'API REST, l'SDK Vertex AI per Python o una delle altre librerie e SDK supportati mostrati nelle seguenti schede.

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI per l'API Python.

Risposte dinamiche e non in streaming

Puoi scegliere se il modello genera una risposta in modalità flusso o una risposta non in modalità flusso. I flussi di dati comportano la ricezione di risposte ai prompt man mano che vengono generati. In altre parole, non appena il modello genera i token di output, questi vengono inviati. Una risposta non in modalità flusso ai prompt viene inviata solo dopo che sono stati generati tutti i token di output.

Per una risposta di flusso, utilizza il parametro stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Per una risposta non in modalità flusso, rimuovi il parametro o impostalo su False.

Codice di esempio

import vertexai

from vertexai.generative_models import GenerativeModel, ChatSession

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

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

model = GenerativeModel(model_name="gemini-1.0-pro-002")

chat = model.start_chat()

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat, prompt))

prompt = "What are all the colors in a rainbow?"
print(get_chat_response(chat, prompt))

prompt = "Why does it appear when it rains?"
print(get_chat_response(chat, prompt))

C#

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

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


using Google.Cloud.AIPlatform.V1;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class MultiTurnChatSample
{
    public async Task<string> GenerateContent(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.0-pro"
    )
    {
        // Create a chat session to keep track of the context
        ChatSession chatSession = new ChatSession($"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}", location);

        string prompt = "Hello.";
        Console.WriteLine($"\nUser: {prompt}");

        string response = await chatSession.SendMessageAsync(prompt);
        Console.WriteLine($"Response: {response}");

        prompt = "What are all the colors in a rainbow?";
        Console.WriteLine($"\nUser: {prompt}");

        response = await chatSession.SendMessageAsync(prompt);
        Console.WriteLine($"Response: {response}");

        prompt = "Why does it appear when it rains?";
        Console.WriteLine($"\nUser: {prompt}");

        response = await chatSession.SendMessageAsync(prompt);
        Console.WriteLine($"Response: {response}");

        return response;
    }

    private class ChatSession
    {
        private readonly string _modelPath;
        private readonly PredictionServiceClient _predictionServiceClient;

        private readonly List<Content> _contents;

        public ChatSession(string modelPath, string location)
        {
            _modelPath = modelPath;

            _predictionServiceClient = new PredictionServiceClientBuilder
            {
                Endpoint = $"{location}-aiplatform.googleapis.com"
            }.Build();

            // Initialize contents to send over in every request.
            _contents = new List<Content>();
        }

        public async Task<string> SendMessageAsync(string prompt)
        {
            var content = new Content
            {
                Role = "USER",
                Parts =
                {
                    new Part { Text = prompt }
                }
            };
            _contents.Add(content);

            var generateContentRequest = new GenerateContentRequest
            {
                Model = _modelPath,
                GenerationConfig = new GenerationConfig
                {
                    Temperature = 0.9f,
                    TopP = 1,
                    TopK = 32,
                    CandidateCount = 1,
                    MaxOutputTokens = 2048
                }
            };
            generateContentRequest.Contents.AddRange(_contents);

            GenerateContentResponse response = await _predictionServiceClient.GenerateContentAsync(generateContentRequest);

            _contents.Add(response.Candidates[0].Content);

            return response.Candidates[0].Content.Parts[0].Text;
        }
    }
}

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida per l'IA generativa mediante l'SDK Node.js. Per saperne di più, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.

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

Risposte dinamiche e non in streaming

Puoi scegliere se il modello genera una risposta in modalità flusso o una risposta non in modalità flusso. I flussi di dati comportano la ricezione di risposte ai prompt man mano che vengono generati. In altre parole, non appena il modello genera i token di output, questi vengono inviati. Una risposta non in modalità flusso ai prompt viene inviata solo dopo che sono stati generati tutti i token di output.

Per una risposta di flusso, utilizza il metodo generateContentStream.

  const streamingResp = await generativeModel.generateContentStream(request);
  

Per una risposta non in modalità flusso, utilizza il metodo generateContent.

  const streamingResp = await generativeModel.generateContent(request);
  

Codice di esempio

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

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function createStreamChat(
  projectId = 'PROJECT_ID',
  location = 'us-central1',
  model = 'gemini-1.0-pro-002'
) {
  // 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,
  });

  const chat = generativeModel.startChat({});
  const chatInput1 = 'How can I learn more about that?';

  console.log(`User: ${chatInput1}`);

  const result1 = await chat.sendMessageStream(chatInput1);
  for await (const item of result1.stream) {
    console.log(item.candidates[0].content.parts[0].text);
  }
}

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java nella guida rapida di Vertex AI. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Java di Vertex AI per Gemini.

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

Risposte dinamiche e non in streaming

Puoi scegliere se il modello genera una risposta in modalità flusso o una risposta non in modalità flusso. I flussi di dati comportano la ricezione di risposte ai prompt man mano che vengono generati. In altre parole, non appena il modello genera i token di output, questi vengono inviati. Una risposta non in modalità flusso ai prompt viene inviata solo dopo che sono stati generati tutti i token di output.

Per una risposta di flusso, utilizza il metodo generateContentStream.

  public ResponseStream generateContentStream(Content content)
  

Per una risposta non in modalità flusso, utilizza il metodo generateContent.

  public GenerateContentResponse generateContent(Content content)
  

Codice di esempio

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ChatSession;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.IOException;

public class ChatDiscussion {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.0-pro-002";

    chatDiscussion(projectId, location, modelName);
  }

  // Ask interrelated questions in a row using a ChatSession object.
  public static void chatDiscussion(String projectId, String location, String modelName)
      throws IOException {
    // 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)) {
      GenerateContentResponse response;

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      // Create a chat session to be used for interactive conversation.
      ChatSession chatSession = new ChatSession(model);

      response = chatSession.sendMessage("Hello.");
      System.out.println(ResponseHandler.getText(response));

      response = chatSession.sendMessage("What are all the colors in a rainbow?");
      System.out.println(ResponseHandler.getText(response));

      response = chatSession.sendMessage("Why does it appear when it rains?");
      System.out.println(ResponseHandler.getText(response));
      System.out.println("Chat Ended.");
    }
  }
}

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Vertex AI. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Go per Gemini.

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

Risposte dinamiche e non in streaming

Puoi scegliere se il modello genera una risposta in modalità flusso o una risposta non in streaming. I flussi di dati comportano la ricezione di risposte ai prompt man mano che vengono generati. In altre parole, non appena il modello genera i token di output, questi vengono inviati. Una risposta non in modalità flusso ai prompt viene inviata solo dopo che sono stati generati tutti i token di output.

Per una risposta di flusso, utilizza il metodo GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Per una risposta non in modalità flusso, utilizza il metodo GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Codice di esempio

import (
	"context"
	"encoding/json"
	"fmt"
	"io"

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

func makeChatRequests(w io.Writer, projectID string, location string, modelName string) error {
	// location := "us-central1"
	// modelName := "gemini-1.0-pro-002"
	ctx := context.Background()
	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("error creating client: %w", err)
	}
	defer client.Close()

	gemini := client.GenerativeModel(modelName)
	chat := gemini.StartChat()

	r, err := chat.SendMessage(
		ctx,
		genai.Text("Hello"))
	if err != nil {
		return err
	}
	rb, err := json.MarshalIndent(r, "", "  ")
	if err != nil {
		return fmt.Errorf("json.MarshalIndent: %w", err)
	}
	fmt.Fprintln(w, string(rb))

	r, err = chat.SendMessage(
		ctx,
		genai.Text("What are all the colors in a rainbow?"))
	if err != nil {
		return err
	}
	rb, err = json.MarshalIndent(r, "", "  ")
	if err != nil {
		return fmt.Errorf("json.MarshalIndent: %w", err)
	}
	fmt.Fprintln(w, string(rb))

	r, err = chat.SendMessage(
		ctx,
		genai.Text("Why does it appear when it rains?"))
	if err != nil {
		return fmt.Errorf("chat.SendMessage: %w", err)
	}
	rb, err = json.MarshalIndent(r, "", "  ")
	if err != nil {
		return fmt.Errorf("json.MarshalIndent: %w", err)
	}
	fmt.Fprintln(w, string(rb))

	return nil
}

REST

Puoi utilizzare REST per inviare un prompt di chat utilizzando l'API Vertex AI per inviare una richiesta POST all'endpoint del modello del publisher.

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

  • GENERATE_RESPONSE_METHOD: il tipo di risposta che vuoi che il modello generi. Scegli un metodo che generi il modo in cui vuoi che venga restituita la risposta del modello:
    • streamGenerateContent: la risposta viene riprodotta in streaming mentre viene generata per ridurre la percezione della latenza da parte di un pubblico umano.
    • generateContent: la risposta viene restituita dopo essere stata generata completamente.
  • LOCATION: la regione in cui elaborare la richiesta. Le opzioni disponibili sono le seguenti:

    Fai clic per espandere le 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-002
    • gemini-1.0-pro-vision-001
    • gemini-1.5-pro-preview-0514
  • ROLE: il ruolo in una conversazione associato ai contenuti. È necessario specificare un ruolo anche nei casi d'uso a turno singolo. I valori accettati includono:
    • 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 includono:

    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 includono:

    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 lo blocca meno.
  • SYSTEM_INSTRUCTION: (facoltativo) disponibile per gemini-1.0-pro-002 e gemini-1.5-pro-preview-0514. Istruzioni per il modello per guidarlo verso prestazioni migliori. Ad esempio, "Rispondi nel modo più conciso possibile" o "Stampa i risultati in formato JSON".
  • TEMPERATURE: la temperatura viene utilizzata per il campionamento durante la generazione delle risposte, che si verifica quando vengono applicati topP e topK. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature più basse sono ideali per prompt che richiedono una risposta meno creativa o meno aperta, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato messaggio sono per lo più deterministiche, ma è comunque possibile una piccola variazione.

    Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura.

  • TOP_P: Top-P cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile (vedi top-K) al meno probabile finché la somma delle loro probabilità equivale al valore top-P. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di top-P è 0.5, il modello selezionerà A o B come token successivo utilizzando la temperatura ed esclude C come candidato.

    Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • TOP_K: Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (detta anche decodifica greedy), mentre un top-K pari a 3 indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.

    Per ogni fase di selezione dei token, vengono campionati i token top-K con le probabilità più elevate. Quindi, i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

    Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • MAX_OUTPUT_TOKENS: numero massimo di token che è possibile generare nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

    Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe.

  • STOP_SEQUENCES: specifica un elenco di stringhe che indicano al modello di interrompere la generazione di testo se una delle stringhe viene rilevata nella risposta. Se una stringa compare più volte nella risposta, la risposta viene troncata nel punto in cui è stata rilevata per la prima volta. Le stringhe sono sensibili alle maiuscole.

    Ad esempio, se seguente è la risposta restituita quando stopSequences non è specificato:

    public static string reverse(string myString)

    La risposta restituita con stopSequences impostato su ["Str", "reverse"] è:

    public static string

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "system_instruction":
  {
    "parts": [
      {
        "text": "SYSTEM_INSTRUCTION"
      }
    ]
  },
  "safety_settings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
  "generation_config": {
    "temperature": TEMPERATURE,
    "topP": TOP_P,
    "topK": TOP_K,
    "candidateCount": 1,
    "maxOutputTokens": MAX_OUTPUT_TOKENS,
    "stopSequences": STOP_SEQUENCES,
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

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:GENERATE_RESPONSE_METHOD"

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:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente.

Comando curl di esempio

LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"

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}:${GENERATE_RESPONSE_METHOD} -d \
$'{
  "contents": [
    {
    "role": "user",
    "parts": { "text": "Hello!" }
    },
    {
    "role": "model",
    "parts": { "text": "Argh! What brings ye to my ship?" }
    },
    {
    "role": "user",
    "parts": { "text": "Wow! You are a real-life pirate!" }
    }
  ],
  "safety_settings": {
    "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    "threshold": "BLOCK_LOW_AND_ABOVE"
  },
  "generation_config": {
    "temperature": 0.9,
    "topP": 1,
    "candidateCount": 1,
    "maxOutputTokens": 2048
  }
}'

Console

Per utilizzare Vertex AI Studio per inviare un prompt di chat nella console Google Cloud, segui questi passaggi:

  1. Nella sezione Vertex AI della console Google Cloud, vai alla sezione Lingua di Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Fai clic su Chat di testo.
  3. Configura il modello e i parametri:

    • Regione: seleziona la regione che vuoi utilizzare.
    • Modello: seleziona Gemini Pro.
    • Temperatura: usa il dispositivo di scorrimento o la casella di testo per inserire un valore per la temperatura.

      La temperatura viene utilizzata per il campionamento durante la generazione delle risposte, che si verifica quando vengono applicati topP e topK. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature più basse sono ideali per prompt che richiedono una risposta meno creativa o meno aperta, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato messaggio sono per lo più deterministiche, ma è comunque possibile una piccola variazione.

      Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura.

    • Limite di token: utilizza il dispositivo di scorrimento o la casella di testo per inserire un valore per il limite massimo di output.

      Numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

      Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe.

    • Aggiungi sequenza di interruzioni: inserisci una sequenza di interruzioni, ovvero una serie di caratteri (spazi inclusi) che interrompe la generazione di risposte se il modello la rileva. La sequenza non è inclusa nella risposta. Puoi aggiungere fino a cinque sequenze di interruzioni.
  4. (Facoltativo) Per configurare parametri avanzati, fai clic su Avanzate e configura come segue:

    Fai clic per espandere le configurazioni avanzate

    • Top-K: usa il dispositivo di scorrimento o la casella di testo per inserire un valore per top-K.

      Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (detta anche decodifica greedy), mentre un top-K pari a 3 indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.

      Per ogni fase di selezione dei token, vengono campionati i token top-K con le probabilità più elevate. Quindi, i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

      Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

    • Top-P: usa il dispositivo di scorrimento o la casella di testo per inserire un valore per top-P. I token vengono selezionati dal più probabile al meno probabile, finché la somma delle loro probabilità non corrisponde al valore di top-P. Per i risultati meno variabili, imposta top-P su 0.
  5. La console Google Cloud supporta solo l'inserimento di flussi di dati, che comporta la ricezione di risposte ai prompt man mano che vengono generati. Ora puoi inserire un messaggio nella casella del messaggio per avviare una conversazione con il modello.

    Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.

  6. (Facoltativo) Per salvare il prompt in I miei prompt, fai clic su Salva.
  7. (Facoltativo) Per ottenere il codice Python o un comando curl per il prompt, fai clic su Genera codice.
  8. (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione

Utilizza le istruzioni di sistema

Le istruzioni di sistema consentono agli utenti di indirizzare il comportamento del modello in base alle loro esigenze e ai loro casi d'uso specifici. Quando imposti un'istruzione di sistema, fornisci al modello un contesto aggiuntivo per comprendere l'attività, fornire risposte più personalizzate e rispettare linee guida specifiche per l'intera interazione dell'utente con il modello. Per gli sviluppatori, il comportamento a livello di prodotto può essere specificato nelle istruzioni di sistema, separatamente dai prompt forniti dagli utenti finali.

Puoi utilizzare le istruzioni di sistema in molti modi, tra cui:

  • Definire un utente tipo o un ruolo (ad esempio per un chatbot)
  • Definizione del formato di output (Markdown, YAML e così via)
  • Definizione dello stile e del tono dell'output (ad esempio, livello di dettaglio, formalità e livello di lettura target)
  • Definire gli obiettivi o le regole per l'attività (ad esempio, restituire uno snippet di codice senza ulteriori spiegazioni)
  • Fornire contesto aggiuntivo per il prompt (ad esempio, un limite di conoscenza)

Quando si imposta un'istruzione di sistema, questa si applica all'intera richiesta. Funziona per più turni di utenti e modelli se incluso nel prompt.

Esempi di codice delle istruzioni di sistema

Di seguito è riportato un esempio di specifica di istruzioni di sistema semplici nell'utilizzo dell'SDK Python di Vertex AI.

from vertexai.generative_models import GenerativeModel
model = GenerativeModel(
    "gemini-1.0-pro-002",
    system_instruction=[
        "Don't use technical terms in your response",
    ],
)
print(model.generate_content("Explain gravity"))

Di seguito è riportato un esempio di inclusione di una semplice istruzione di sistema in un comando curl.

LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-002"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"

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:generateContent" -d \
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "randomly select 10 words from a history book"
        }
      ]
    }
  ],
  "system_instruction":
    {
      "parts": [
        {
          "text": "please print the results in json format."
        }
      ]
    },
  "generation_config": {
    "maxOutputTokens": 2048,
    "temperature": 0.4,
    "topP": 1,
    "topK": 32
  }
}

Esempi di istruzioni di sistema

Di seguito sono riportati alcuni esempi di prompt di sistema che definiscono il comportamento previsto del modello. La prima è un prompt di sistema per la generazione di codice front-end, il secondo è un esempio di un caso d'uso di analisi del sentiment del mercato e il terzo è un chatbot consumer.

Generazione del codice

  • Sistema: sei un esperto di programmazione specializzato nel rendering del codice per le interfacce front-end. Quando descrivi il componente di un sito web che voglio creare, restituisci i codici HTML e CSS necessari per farlo. Non fornire spiegazioni per questo codice. Offri anche alcuni suggerimenti per la progettazione dell'interfaccia utente.
  • Utente:crea una casella al centro della pagina contenente una selezione di immagini a rotazione, ciascuna con una didascalia. L'immagine al centro della pagina dovrebbe avere ombreggiatura dietro per farla risaltare. Deve anche rimandare a un'altra pagina del sito. Lascia vuoto l'URL in modo da poterlo compilare.

Analisi del sentiment del mercato

  • Sistema: sei un analista del mercato azionario che analizza il sentiment del mercato in base a uno snippet di notizie. In base allo snippet della notizia, estrai le dichiarazioni che influiscono sul sentiment degli investitori.

    Rispondi in formato JSON e per ogni istruzione:

    • Assegna un punteggio da 1 a 10 per suggerire se il sentiment è negativo o positivo (1 è il massimo negativo, 10 è il più positivo, 5 sarà neutro).
    • Ripeti la dichiarazione.
    • Spiega una frase.
  • Utente: Mobileye ha segnalato un accumulo di inventario in eccesso da parte di clienti di alto livello in seguito ai vincoli della catena di fornitura negli ultimi anni. Si prevede che le entrate per il primo trimestre scendono di circa il 50% rispetto ai 458 milioni di dollari generati un anno prima, per poi normalizzarsi nel resto del 2024, ha affermato Mobileye. Mobileye prevede entrate per l'intero 2024 comprese tra 1,83 e 1,96 miliardi di dollari, in calo rispetto ai circa 2,08 miliardi di dollari che ora si prevede per il 2023.

Chatbot musicale

  • Sistema: risponderai come storico della musica, dimostrando una conoscenza completa di diversi generi musicali e fornendo esempi pertinenti. Il tono sarà allegro ed entusiasta e diffonderà la gioia della musica. Se una domanda non è legata alla musica, la risposta dovrebbe essere: "Non è a mia disposizione".
  • Utente: Se una persona è nata negli anni '60, qual era il genere musicale più popolare? Elenca cinque brani per punto.

Passaggi successivi