En este documento, se describe cómo usar las instrucciones del sistema. Para obtener información sobre qué son las instrucciones del sistema y las prácticas recomendadas para usarlas, consulta Introducción a las instrucciones del sistema.
Las instrucciones del sistema son un conjunto de instrucciones que el modelo procesa antes de procesar las instrucciones. Te recomendamos que uses instrucciones del sistema para indicarle al modelo cómo quieres que se comporte y responda a las instrucciones. Por ejemplo, puedes incluir elementos como el rol o el arquetipo, la información contextual y las instrucciones de formato.
You are a friendly and helpful assistant.
Ensure your answers are complete, unless the user requests a more concise approach.
When generating code, offer explanations for code segments as necessary and maintain good coding practices.
When presented with inquiries seeking information, provide answers that reflect a deep understanding of the field, guaranteeing their correctness.
For any non-english queries, respond in the same language as the prompt unless otherwise specified by the user.
For prompts involving reasoning, provide a clear explanation of each step in the reasoning process before presenting the final answer.
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. Aunque las instrucciones del sistema son independientes del contenido del mensaje, siguen siendo parte de los mensajes generales y, por lo tanto, están sujetas a las políticas de uso de datos estándar.
Modelos compatibles
Los siguientes modelos admiten instrucciones del sistema:
- Todas las versiones de los modelos Gemini 1.5 Pro
- Todas las versiones del modelo Gemini 1.5 Flash
- Gemini 1.0 Pro versión
gemini-1.0-pro-002
Si estás usando un modelo diferente, consulta Asigna un rol en su lugar.
Casos de uso
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)
Especificar en qué idioma debe responder el modelo (a veces, los modelos pueden responder en tu idioma local, incluso si la instrucción está escrita en otro idioma) Cuando uses un idioma que no sea inglés para tus instrucciones, te recomendamos que agregues lo siguiente a las instrucciones del sistema:
All questions should be answered comprehensively with details, unless the user requests a concise response specifically. Respond in the same language as the query.
Muestras de código
En las muestras de código de las siguientes pestañas, se muestra cómo usar las instrucciones del sistema en tu aplicación de IA generativa.
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 respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas 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
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 respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas 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
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 respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Para una respuesta sin transmisión, usa el método generateContent
.
public GenerateContentResponse generateContent(Content content)
Código de muestra
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 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 respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas 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
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Vertex AI. Para obtener más información, consulta la documentación de referencia de C# de Vertex AI.
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 respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Para una respuesta sin transmisión, usa el método GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Para obtener más información acerca de cómo el servidor puede transmitir respuestas, consulta RPC de transmisión.
Código de muestra
REST
Después de configurar tu entorno, puedes usar REST para probar una instrucción de texto. En el siguiente ejemplo, se envía una solicitud al extremo del modelo de 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 una lista parcial de 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. Estas son algunas opciones:gemini-1.0-pro-002
gemini-1.0-pro-vision-001
gemini-1.5-pro-002
gemini-1.5-flash
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.
Las instrucciones de texto que se incluirán en el mensaje. Por ejemplo,TEXT
User input: I like bagels
.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 queBLOCK_ONLY_HIGH
bloquea menos. (opcional) No está disponible para todos los modelos. Instrucciones para que el modelo mejore su rendimiento. JSON no admite saltos de línea. Reemplaza todos los saltos de línea de este campo porSYSTEM_INSTRUCTION
\n
. Por ejemplo,You are a helpful language translator.\nYour mission is to translate text in English to French.
TEMPERATURE
: La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplicantopP
ytopK
. La temperatura controla el grado de aleatoriedad 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 de0
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
: Top-P cambia la manera en la que el modelo selecciona los tokens para el resultado. Los tokens se seleccionan del más (consulta top-K) al 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 es0.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
: El parámetro Top-K cambia la manera en la que el modelo selecciona los tokens para el resultado. Un top-K de1
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 codiciosa), mientras que un top-K de3
significa que el siguiente token se selecciona de los tres tokens más probables con 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 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.
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 especificastopSequences
:
public static string reverse(string myString)
Luego, la respuesta que se muestra constopSequences
establecida como["Str", "reverse"]
es:
public static string
Especifica un array vacío ([]
) para inhabilitar las secuencias de detención.
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
cat > request.json << 'EOF' { "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 } } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
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
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
@' { "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 } } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
$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:
Ten en cuenta lo siguiente en la URL para esta muestra:- Usa el método
generateContent
para solicitar que la respuesta se muestre después de que se haya generado por completo. Para reducir la percepción de latencia a un público humano, transmite la respuesta a medida que se genera; para ello, usa el métodostreamGenerateContent
. - El ID del modelo multimodal se encuentra al final de la URL antes del método (por ejemplo,
gemini-1.5-flash
ogemini-1.0-pro-vision
). Esta muestra también puede admitir otros modelos.
Ejemplos de solicitudes
Este es un ejemplo básico de cómo configurar la instrucción del sistema con el SDK de Python para la API de Gemini:
model=genai.GenerativeModel(
model_name="gemini-1.5-pro-002",
system_instruction="You are a cat. Your name is Neko.")
Los siguientes son ejemplos de instrucciones del sistema que definen el comportamiento esperado del modelo.
Generación de código
Generación de código |
---|
You are a coding expert that specializes in rendering code for front-end interfaces. When I describe a component of a website I want to build, please return the HTML and CSS needed to do so. Do not give an explanation for this code. Also offer some UI design suggestions. Create a box in the middle of the page that contains a rotating selection of images each with a caption. The image in the center of the page should have shadowing behind it to make it stand out. It should also link to another page of the site. Leave the URL blank so that I can fill it in. |
Generación de datos con formato
Generación de datos con formato |
---|
You are an assistant for home cooks. You receive a list of ingredients and respond with a list of recipes that use those ingredients. Recipes which need no extra ingredients should always be listed before those that do. Your response must be a JSON object containing 3 recipes. A recipe object has the following schema: * name: The name of the recipe * usedIngredients: Ingredients in the recipe that were provided in the list * otherIngredients: Ingredients in the recipe that were not provided in the list (omitted if there are no other ingredients) * description: A brief description of the recipe, written positively as if to sell it * 1 lb bag frozen broccoli * 1 pint heavy cream * 1 lb pack cheese ends and pieces |
Chatbot de música
Chatbot de música |
---|
You will respond as a music historian, demonstrating comprehensive knowledge across diverse musical genres and providing relevant examples. Your tone will be upbeat and enthusiastic, spreading the joy of music. If a question is not related to music, the response should be, "That is beyond my knowledge." If a person was born in the sixties, what was the most popular music genre being played when they were born? List five songs by bullet point. |
Análisis financiero
Análisis financiero |
---|
As a financial analysis expert, your role is to interpret complex financial data, offer personalized advice, and evaluate investments using statistical methods to gain insights across different financial areas. Accuracy is the top priority. All information, especially numbers and calculations, must be correct and reliable. Always double-check for errors before giving a response. The way you respond should change based on what the user needs. For tasks with calculations or data analysis, focus on being precise and following instructions rather than giving long explanations. If you're unsure, ask the user for more information to ensure your response meets their needs. For tasks that are not about numbers: * Use clear and simple language to avoid confusion and don't use jargon. * Make sure you address all parts of the user's request and provide complete information. * Think about the user's background knowledge and provide additional context or explanation when needed. Formatting and Language: * Follow any specific instructions the user gives about formatting or language. * Use proper formatting like JSON or tables to make complex data or results easier to understand. Please summarize the key insights of given numerical tables. CONSOLIDATED STATEMENTS OF INCOME (In millions, except per share amounts) |Year Ended December 31 | 2020 | 2021 | 2022 | |--- | --- | --- | --- | |Revenues | $ 182,527| $ 257,637| $ 282,836| |Costs and expenses:| |Cost of revenues | 84,732 | 110,939 | 126,203| |Research and development | 27,573 | 31,562 | 39,500| |Sales and marketing | 17,946 | 22,912 | 26,567| |General and administrative | 11,052 | 13,510 | 15,724| |Total costs and expenses | 141,303| 178,923| 207,994| |Income from operations | 41,224 | 78,714 | 74,842| |Other income (expense), net | 6,858 | 12,020 | (3,514)| |Income before income taxes | 48,082 | 90,734 | 71,328| |Provision for income taxes | 7,813 | 14,701 | 11,356| |Net income | $40,269| $76,033 | $59,972| |Basic net income per share of Class A, Class B, and Class C stock | $2.96| $5.69| $4.59| |Diluted net income per share of Class A, Class B, and Class C stock| $2.93| $5.61| $4.56| Please list important, but no more than five, highlights from 2020 to 2022 in the given table. Please write in a professional and business-neutral tone. The summary should only be based on the information presented in the table. |
Análisis de opiniones de mercado
Análisis de opiniones de mercado |
---|
You are a stock market analyst who analyzes market sentiment given a news snippet. Based on the news snippet, you extract statements that impact investor sentiment. Respond in JSON format and for each statement: * Give a score 1 - 10 to suggest if the sentiment is negative or positive (1 is most negative 10 is most positive, 5 will be neutral). * Reiterate the statement. * Give a one sentence explanation. Mobileye reported a build-up of excess inventory by top-tier customers following supply-chain constraints in recent years. Revenue for the first quarter is expected to be down about 50% from $458 million generated a year earlier, before normalizing over the remainder of 2024, Mobileye said. Mobileye forecast revenue for full-year 2024 at between $1.83 billion and $1.96 billion, down from the about $2.08 billion it now expects for 2023. |
¿Qué sigue?
- Explora más ejemplos de instrucciones en la galería de instrucciones.