Optimizador sin ejemplos

El optimizador zero-shot te permite refinar y mejorar automáticamente las peticiones escritas por los usuarios. A menudo, una petición no produce la respuesta del modelo que quieres debido a un lenguaje ambiguo, a la falta de contexto o a la inclusión de información irrelevante. Este optimizador analiza y reescribe una petición para que sea más clara, eficaz y se ajuste mejor a las capacidades del modelo, lo que se traduce en respuestas de mayor calidad.

El optimizador de cero disparos es especialmente útil en los siguientes casos:

  • Adaptación a las actualizaciones de modelos: cuando actualizas a una versión más reciente de un modelo, es posible que tus peticiones ya no funcionen de forma óptima.

  • Mejora de la comprensión de las peticiones: cuando la redacción de una petición es compleja o se puede malinterpretar, la herramienta puede reformularla para que sea lo más clara y precisa posible, lo que reduce la probabilidad de que se produzca un resultado no deseado.

Hay dos formas 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 natural. A continuación, el optimizador generará un conjunto completo y bien estructurado de instrucciones del sistema diseñadas para alcanzar tu objetivo.

  • Refinamiento de la petición: tienes una petición que funciona, pero el resultado del modelo es incoherente, se desvía ligeramente del tema o no tiene el nivel de detalle que quieres. El optimizador puede ayudarte a mejorar la petición para obtener un mejor resultado.

El optimizador admite la optimización de las peticiones en todos los idiomas admitidos por Gemini y está disponible a través del SDK de Vertex AI.

Antes de empezar

Para asegurarte de que la cuenta de servicio predeterminada de Compute Engine tiene los permisos necesarios para optimizar las peticiones, pide a tu administrador que le asigne los siguientes roles de gestión de identidades y accesos en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda conceder los permisos necesarios a la cuenta de servicio predeterminada de Compute Engine a través de roles personalizados u otros roles predefinidos.

Optimizar una petició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 la suggested_prompt, que contiene la petición optimizada que puedes usar para obtener mejores resultados de tu modelo. Los demás campos, especialmente applicable_guidelines, son útiles para entender por qué y cómo se ha mejorado tu petición, lo que puede ayudarte a escribir mejores peticiones en el futuro. Aquí tienes 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..."
}

Optimizar modelos más pequeños

Los modelos más pequeños, como Gemma 3n E4B, tienen capacidades de seguimiento de instrucciones diferentes a las de los modelos más grandes. Las peticiones que funcionan bien con modelos grandes puede que no sean óptimas para estos modelos más pequeños. El optimizador de cero disparos ofrece un modo gemini_nano para solucionar este problema. El modo gemini_nano perfecciona tu solicitud para que se ajuste específicamente a las características de los modelos más pequeños, lo que te ayuda a generar solicitudes que se adapten mejor a las capacidades de estos modelos.

En el siguiente ejemplo se muestra cómo optimizar una petició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}
# )