Optimizador sin ejemplos

El optimizador sin ejemplos te permite refinar y mejorar automáticamente las instrucciones escritas por el usuario. A menudo, es posible que una instrucción no produzca la respuesta del modelo que deseas debido a un lenguaje ambiguo, falta de contexto o la inclusión de información irrelevante. Este optimizador analiza y reescribe una instrucción existente para que sea más clara, eficaz y esté mejor alineada con las capacidades del modelo, lo que, en última instancia, genera respuestas de mayor calidad.

El optimizador sin ejemplos es particularmente útil para lo siguiente:

  • Adaptación a las actualizaciones del modelo: Cuando actualizas a una versión más reciente de un modelo, es posible que tus instrucciones existentes ya no funcionen de manera óptima.

  • Mejora de la comprensión de instrucciones: Cuando la redacción de una instrucción es compleja o se puede malinterpretar, la herramienta puede reformularla para lograr la máxima claridad y precisión, lo que reduce la probabilidad de un resultado no deseado.

Existen dos maneras de usar el optimizador:

  • Generación de instrucciones: En lugar de escribir instrucciones complejas del sistema desde cero, puedes describir tu objetivo o tarea en lenguaje sencillo. Luego, el optimizador generará un conjunto completo y bien estructurado de instrucciones del sistema diseñadas para lograr tu objetivo.

  • Refinamiento de instrucciones: Tienes una instrucción que funciona, pero la respuesta del modelo es incoherente, está ligeramente fuera de tema o no tiene el nivel de detalle que deseas. El optimizador puede ayudarte a mejorar la instrucción para obtener un mejor resultado.

El optimizador admite la optimización de instrucciones en todos los idiomas compatibles con Gemini y está disponible a través del SDK de Vertex AI.

Antes de comenzar

Para garantizar que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios para optimizar las instrucciones, pídele a tu administrador que otorgue a la cuenta de servicio predeterminada de Compute Engine los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda otorgarle los permisos necesarios al agente de servicio de Compute Engine mediante roles personalizados o cualquier otro rol predefinido.

Optimiza una instrucción

# Import libraries
import vertexai
import logging

# Google Colab authentication
from google.colab import auth
PROJECT_NAME = "PROJECT"
auth.authenticate_user(project_id=PROJECT_NAME)

# Initialize the Vertex AI client
client = vertexai.Client(project=PROJECT_NAME, location='us-central1')

# Input original prompt to optimize
prompt = """You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.

Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.
"""

# Optimize prompt
output = client.prompt_optimizer.optimize_prompt(prompt=prompt)

# View optimized prompt
print(output.model_dump_json(indent=2))

Este objeto output es de tipo OptimizeResponse y proporciona información sobre el proceso de optimización. La parte más importante es el suggested_prompt, que contiene la instrucción optimizada que puedes usar para obtener mejores resultados de tu modelo. Los otros campos, en especial applicable_guidelines, son útiles para comprender por qué y cómo se mejoró tu instrucción, lo que puede ayudarte a escribir mejores instrucciones en el futuro. Este es un ejemplo del resultado:

{
  "optimization_mode": "zero_shot",
  "applicable_guidelines": [
    {
      "applicable_guideline": "Structure",
      "suggested_improvement": "Add role definition.",
      "text_before_change": "...",
      "text_after_change": "Role: You are an AI assistant...\n\nTask Context:\n..."
    },
    {
      "applicable_guideline": "RedundancyInstructions",
      "suggested_improvement": "Remove redundant explanation.",
      "text_before_change": "...",
      "text_after_change": ""
    }
  ],
  "original_prompt": "...",
  "suggested_prompt": "Role: You are an AI assistant...\n\nTask Context:\n..."
}

Optimización para modelos más pequeños

Los modelos más pequeños, como Gemma 3n E4B, tienen diferentes capacidades de seguimiento de instrucciones que los modelos más grandes. Las instrucciones que funcionan bien para los modelos grandes podrían no ser óptimas para estos modelos más pequeños. El optimizador sin ejemplos proporciona un modo gemini_nano para abordar este problema. El modo gemini_nano refina tu instrucción para que se alinee específicamente con las características de los modelos más pequeños, lo que ayuda a generar instrucciones que se ajustan mejor a las capacidades de los modelos más pequeños.

En el siguiente ejemplo, se muestra cómo optimizar una instrucción para modelos más pequeños:

client = vertexai.Client(project=PROJECT_NAME, location='us-central1')
prompt = 'Generate system instructions for analyzing medical articles'

gemini_nano_config = vertexai.types.OptimizerConfig(
    optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_GEMINI_NANO
)

response = client.prompt_optimizer.optimize_prompt(
    prompt=prompt,
    config=gemini_nano_config
)

# Or more simpler way to call the prompt optimizer
# response = client.prompt_optimizer.optimize_prompt(
#    prompt=prompt,
#    config={optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_GEMINI_NANO}
# )