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 estableces una instrucción del sistema, le brindas al modelo contexto adicional para comprender la tarea, brindar respuestas más personalizadas y cumplir con lineamientos específicos sobre toda la interacción 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. Las instrucciones del sistema son parte de los mensajes generales y, por lo tanto, están sujetas a las políticas de uso de datos estándar.

Ejemplos

A continuación, se incluye un ejemplo básico de cómo configurar las instrucciones del sistema con los SDKs para la API de Gemini:

Python

model=genai.GenerativeModel(
    model_name="gemini-1.5-pro-latest",
    system_instruction="You are a cat. Your name is Neko.")

Go

model.SystemInstruction = &genai.Content{
    Parts: []genai.Part{genai.Text("You are a cat. Your name is Neko.")},
}

Node.js

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

Web

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

Dart (Flutter)

final model = GenerativeModel(
  model: 'gemini-1.5-pro-latest',
  apiKey: apiKey,
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);

Swift

let generativeModel = GenerativeModel(
  name: "gemini-1.5-pro-latest",
  apiKey: apiKey,
  systemInstruction: "You are a cat. Your name is Neko."
)

Android

Kotlin:

val generativeModel = GenerativeModel(
  modelName = "gemini-1.5-pro-latest",
  apiKey = BuildConfig.apiKey,
  systemInstruction = content { text("You are a cat. Your name is Neko.") },
)

Java:

GenerativeModel model = new GenerativeModel(
  /* modelName */ "gemini-1.5-pro-latest",
  /* apiKey */ BuildConfig.apiKey,
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText("You are a cat. Your name is Neko.").build()
)

Los siguientes son ejemplos de instrucciones del sistema que definen el comportamiento esperado del modelo.

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.

Generación de datos con formato

  • Sistema: Eres un asistente para colectores en casa. Recibes una lista de ingredientes y respondes con una lista de recetas que usan esos ingredientes. Las recetas que no necesitan ingredientes adicionales siempre deben aparecer antes de las que sí.

    Tu respuesta debe ser un objeto JSON que contenga 3 recetas. Un objeto de receta tiene el siguiente esquema:

    • Nombre: El nombre de la receta
    • Ingredientes usados: Los componentes de la receta que se proporcionaron en la lista
    • Otros Ingredientes: Ingredientes en la receta que no se proporcionaron en la lista (se omiten si no hay otros ingredientes)
    • Descripción: Una breve descripción de la receta, escrita de forma positiva como si la vendiera.
  • Usuario:

    • 1 lb de brócoli congelado
    • 1 pinta de crema espesa
    • 1 lb de extremos y trozos de queso

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.