Envía solicitudes de mensaje de chat (Gemini)

En esta página, se muestra cómo enviar mensajes de chat al modelo de Gemini 1.0 Pro (gemini-1.0-pro) con la consola de Google Cloud, la API de REST y los SDK compatibles. Gemini 1.0 Pro admite mensajes con entrada de solo texto, incluidas las tareas de lenguaje natural, el chat de texto y código de varios turnos, y la generación de código. Puede generar texto y código.

El modelo de base Gemini 1.0 Pro es un modelo grande de lenguaje que se destaca en la comprensión y generación de lenguajes. Puedes interactuar con Gemini Pro a través de una solicitud y respuesta de un solo turno, o chatear con él en una conversación continua de varios turnos, incluso para la comprensión y generación de código.

Para obtener una lista de los idiomas compatibles con Gemini 1.0 Pro, consulta la información del modelo Idiomas compatibles.


Para explorar este modelo en la consola, selecciona la tarjeta del modelo gemini-1.0-pro en el Model Garden.

Ir a Model Garden


Si buscas una manera de usar Gemini directamente desde tus dispositivos móviles y apps web, consulta los SDK de Google AI para Android, Swift y la Web.

Envía mensajes de chat

Para probar y, luego, iterar los mensajes de chat, recomendamos usar la consola de Google Cloud. Para enviar mensajes de manera programática al modelo, puedes usar la API de REST, el SDK de Vertex AI para Python o una de las otras bibliotecas y SDK compatibles que se muestran en las siguientes pestañas.

Python

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación del SDK de Vertex AI de referencia de la API de Vertex para Python.

Respuestas de transmisión y sin transmisión

Puedes elegir si el modelo genera una respuesta de transmisión o una respuesta sin transmisión. La transmisión implica recibir respuestas a las instrucciones a medida que se generan. Es decir, en cuanto el modelo genere tokens de salida, estos se enviarán. Una respuesta a los mensajes sin transmisión se envía solo después de que se generan todos los tokens de salida.

Para una respuesta de transmisión, usa el parámetro stream en generate_content.

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

Para una respuesta sin transmisión, quita el parámetro o configúralo como False.

Código de muestra

import vertexai

from vertexai.generative_models import GenerativeModel, ChatSession

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"
vertexai.init(project=project_id, location=location)
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#

Antes de probar este ejemplo, sigue las instrucciones de configuración para C# incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI C#.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


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;

            // Create a prediction service client.
            _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)
        {
            // Initialize the content with the prompt.
            var content = new Content
            {
                Role = "USER"
            };
            content.Parts.AddRange(new List<Part>()
            {
                new() {
                    Text = prompt
                }
            });
            _contents.Add(content);

            // Create a request to generate 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);

            // Make a non-streaming request, get a response.
            GenerateContentResponse response = await _predictionServiceClient.GenerateContentAsync(generateContentRequest);

            // Save the content from the response.
            _contents.Add(response.Candidates[0].Content);

            // Return the text
            return response.Candidates[0].Content.Parts[0].Text;
        }
    }
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de IA generativa para usar el SDK de Node.js. Si deseas obtener más información, consulta la documentación de referencia del SDK de Node.js para Gemini.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Respuestas de transmisión y sin transmisión

Puedes elegir si el modelo genera una respuesta de transmisión o una respuesta sin transmisión. La transmisión implica recibir respuestas a las instrucciones a medida que se generan. Es decir, en cuanto el modelo genere tokens de salida, estos se enviarán. Una respuesta a los mensajes sin transmisión se envía solo después de que se generan todos los tokens de salida.

Para una respuesta de transmisión, usa el método generateContentStream.

  const streamingResp = await generativeModel.generateContentStream(request);
  

Para una respuesta sin transmisión, usa el método generateContent.

  const streamingResp = await generativeModel.generateContent(request);
  

Código de muestra

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'
) {
  // 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

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Java de Vertex AI para Gemini.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Respuestas de transmisión y sin transmisión

Puedes elegir si el modelo genera una respuesta de transmisión o una respuesta sin transmisión. La transmisión implica recibir respuestas a las instrucciones a medida que se generan. Es decir, en cuanto el modelo genere tokens de salida, estos se enviarán. Una respuesta a los mensajes sin transmisión se envía solo después de que se generan todos los tokens de salida.

Para una respuesta de transmisión, usa el método generateContentStream.

  public ResponseStream generateContentStream(Content content)
  

Para una respuesta sin transmisión, usa el método generateContent.

  public GenerateContentResponse generateContent(Content content)
  

Código de muestra

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";

    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

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Vertex para Go de Vertex AI para Gemini.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Respuestas de transmisión y sin transmisión

Puedes elegir si el modelo genera una respuesta de transmisión o una respuesta sin transmisión. La transmisión implica recibir respuestas a las instrucciones a medida que se generan. Es decir, en cuanto el modelo genere tokens de salida, estos se enviarán. Una respuesta a los mensajes sin transmisión se envía solo después de que se generan todos los tokens de salida.

Para una respuesta de transmisión, usa el método GenerateContentStream.

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

Para una respuesta sin transmisión, usa el método GenerateContent.

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

Código de muestra

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

Puedes usar REST para enviar un mensaje de chat con la API de Vertex AI a fin de enviar una solicitud POST al extremo del modelo del publicador.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • GENERATE_RESPONSE_METHOD: El tipo de respuesta que quieres que genere el modelo. Elige un método que genere cómo quieres que se muestre la respuesta del modelo:
    • streamGenerateContent: La respuesta se transmite a medida que se genera para reducir la percepción de latencia para un público humano.
    • generateContent: La respuesta se muestra después de que se genera por completo.
  • LOCATION: La región para procesar la solicitud. Las opciones disponibles incluyen las siguientes:

    Haz clic para expandir las regiones disponibles.

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: El ID del proyecto.
  • MODEL_ID: el ID del modelo multimodal que deseas usar. Las opciones son las siguientes:
    • gemini-1.0-pro-002
    • gemini-1.0-pro-vision-001
    • gemini-1.5-pro-preview-0409
  • ROLE: el rol en una conversación asociada con el contenido. Especificar un rol es obligatorio incluso en casos de uso de un solo turno. Los valores aceptables son los siguientes:
    • USER: especifica el contenido que envías.
    • MODEL: especifica la respuesta del modelo.
  • TEXT: las instrucciones de texto que se incluirán en el mensaje.
  • SAFETY_CATEGORY: la categoría de seguridad para la que se configura un umbral. Los valores aceptables son los siguientes:

    Haz clic para expandir las categorías de seguridad

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: el umbral para bloquear respuestas que podrían pertenecer a la categoría de seguridad especificada según la probabilidad. Los valores aceptables son los siguientes:

    Haz clic para expandir los umbrales de bloqueo

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (predeterminada)
    • BLOCK_LOW_AND_ABOVE
    BLOCK_LOW_AND_ABOVE bloquea más, mientras que BLOCK_ONLY_HIGH bloquea menos.
  • SYSTEM_INSTRUCTION: Disponible para gemini-1.0-pro-002 y gemini-1.5-pro-preview-0409 (opcional). Instrucciones para que el modelo lo dirija hacia un mejor rendimiento. Por ejemplo, “Responde de la manera más concisa posible” o “Imprime los resultados en formato JSON”.
  • TEMPERATURE: La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplican topP y topK. La temperatura controla el grado de aleatorización en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de 0 significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.

    Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.

  • TOP_P: P superior cambia la manera en la que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde el más alto (consulta K superior) hasta el menos probable, hasta que la suma de sus probabilidades sea igual al valor de P superior. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor P superior es 0.5, el modelo elegirá A o B como el siguiente token mediante la temperatura y excluirá a C como candidato.

    Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

  • TOP_K: K superior cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a 1 significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3 significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.

    Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.

    Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

  • MAX_OUTPUT_TOKENS: Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene aproximadamente cuatro caracteres. 100 tokens corresponden a casi 60 u 80 palabras.

    Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.

  • STOP_SEQUENCES: especifica una lista de cadenas que le indica al modelo que deje de generar texto si se encuentra una de las cadenas en la respuesta. Si una cadena aparece varias veces en la respuesta, la respuesta trunca el lugar en que se encontró por primera vez. Las cadenas distinguen entre mayúsculas y minúsculas.

    Por ejemplo, si la siguiente es la respuesta que se muestra cuando no se especifica stopSequences:

    public static string reverse(string myString)

    Luego, la respuesta que se muestra con stopSequences configurada como ["Str", "reverse"] es la siguiente:

    public static string

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Ejemplo del comando curl

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

Consola

Para usar Vertex AI Studio y enviar un mensaje de chat en la consola de Google Cloud, sigue estos pasos:

  1. En la sección Vertex AI de la consola de Google Cloud, ve a la sección Lenguaje de Generative AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en Chat de texto.
  3. Configura el modelo y los parámetros:

    • Región: selecciona la región que deseas usar.
    • Modelo: selecciona Gemini Pro.
    • Temperatura: Usa el control deslizante o el cuadro de texto para ingresar un valor de temperatura.

      La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplican topP y topK. La temperatura controla el grado de aleatorización en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de 0 significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.

      Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.

    • Límite de token: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor para el límite máximo de salida.

      Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene casi cuatro caracteres. 100 tokens corresponden a casi 60 u 80 palabras.

      Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.

    • Agregar una secuencia de detención: ingresa una secuencia de detención, que es una serie de caracteres (incluidos los espacios) que detiene la generación de respuesta si el modelo la encuentra. La secuencia no se incluye como parte de la respuesta. Puedes agregar hasta cinco secuencias de detención.
  4. Opcional: Para configurar parámetros avanzados, haz clic en Avanzada y establece la configuración de la siguiente manera:

    Haz clic para expandir las configuraciones avanzadas.

    • K superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor para K superior.

      K superior cambia la manera en que el modelo selecciona tokens para la salida. K superior a 1 significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3 significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.

      Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.

      Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

    • P superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor de P superior. Los tokens se seleccionan del más probable al menos probable hasta que la suma de sus probabilidades sea igual al valor de Top-P. Para obtener los resultados menos variables, establece Top-P como 0.
  5. La consola de Google Cloud solo admite la transmisión, lo que implica recibir respuestas a las instrucciones a medida que se generan. Estás listo para ingresar un mensaje en el cuadro de mensaje para iniciar una conversación con el modelo.

    El modelo usa los mensajes anteriores como contexto para las respuestas nuevas.

  6. Opcional: Para guardar el mensaje en Mis mensajes, haz clic en Guardar.
  7. Opcional: Para obtener el código de Python o un comando curl para tu mensaje, haz clic en Obtener código.
  8. Opcional: Para borrar todos los mensajes anteriores, haz clic en Borrar conversación .

Usa las instrucciones del sistema

Las instrucciones del sistema permiten a los usuarios dirigir el comportamiento del modelo según sus necesidades y casos de uso específicos. Cuando configuras una instrucción del sistema, le das contexto adicional al modelo para comprender la tarea, proporcionar respuestas más personalizadas y cumplir con lineamientos específicos sobre la interacción completa del usuario con el modelo. Para los desarrolladores, el comportamiento a nivel del producto se puede especificar en las instrucciones del sistema, aparte de las instrucciones que proporcionan los usuarios finales.

Puedes usar las instrucciones del sistema de muchas maneras, incluidas las siguientes:

  • Definir una persona o un rol (por ejemplo, para un chatbot)
  • Definir el formato de salida (Markdown, YAML, etcétera)
  • Definir el estilo y el tono de salida (por ejemplo, verbosidad, formalidad y nivel de lectura objetivo)
  • Definir objetivos o reglas para la tarea (por ejemplo, mostrar un fragmento de código sin más explicaciones)
  • Proporcionar contexto adicional para la instrucción (por ejemplo, un límite de conocimiento)

Cuando se establece una instrucción del sistema, se aplica a toda la solicitud. Funciona en varios turnos de usuario y modelo cuando se incluye en la instrucción.

Muestras de código de instrucciones del sistema

El siguiente es un ejemplo de cómo especificar instrucciones simples del sistema mediante el uso del SDK de Vertex AI para Python.

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"))

El siguiente es un ejemplo de cómo incluir una instrucción simple del sistema en 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
  }
}

Ejemplos de instrucciones del sistema

Los siguientes son ejemplos de instrucciones del sistema que definen el comportamiento esperado del modelo. El primero es una instrucción del sistema para la generación de código de frontend, el segundo es un ejemplo de un caso de uso de análisis de opiniones del mercado y el tercero es un chatbot del consumidor.

Generación de código

  • Sistema: Eres un experto en programación que se especializa en la renderización de código para interfaces de frontend. Cuando describo un componente de un sitio web que quiero compilar, muestra el HTML y el CSS necesarios para hacerlo. No des una explicación para este código. También ofrece algunas sugerencias de diseño de la IU.
  • Usuario: Crea un cuadro en el centro de la página que contenga una selección rotativa de imágenes, cada una con una leyenda. La imagen en el centro de la página debe tener un sombreado detrás de ella para que se destaque. También debe vincular a otra página del sitio. Deja la URL en blanco para poder completarla.

Análisis de opiniones de mercado

  • Sistema: eres un analista del mercado de valores que analiza la opinión del mercado a partir de un fragmento de noticias. Según el fragmento de noticias, puedes extraer declaraciones que afectan la opinión de los inversionistas.

    Responde en formato JSON y para cada instrucción:

    • Asigna una puntuación de 1 a 10 para sugerir si la opinión es negativa o positiva (1 es la más negativa, 10 es la más positiva, 5 será neutral).
    • Reitera la declaración.
    • Proporciona una explicación de una oración.
  • Usuario: Mobileye informó una acumulación de inventario excesivo por parte de clientes de primer nivel siguiendo las restricciones de la cadena de suministro en los últimos años. Se espera que los ingresos para el primer trimestre sean inferiores a un 50% con respecto a los $458 millones generados un año antes, antes de normalizarse con el resto de 2024, según Mobileye. Mobileye prevé los ingresos para todo el año 2024 entre $1.83 mil millones y $1.96 mil millones, por debajo de los $2.08 mil millones que espera ahora para 2023.

Chatbot de música

  • Sistema: Responderás como un historiador de música, demostrarás conocimientos integrales sobre diversos géneros musicales y proporcionarás ejemplos relevantes. Tu tono será animado y entusiasta y expandirá la alegría de la música. Si una pregunta no está relacionada con la música, la respuesta debería ser: “Esto está más allá de mi conocimiento”.
  • Usuario: Si una persona nació en los sesenta, ¿cuál era el género de música más popular que se reproducía? Enumera cinco canciones por viñeta.

¿Qué sigue?