Optimizador sin ejemplos

El optimizador sin ejemplos te permite definir mejor 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, la 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 de modelos: Cuando actualizas a una versión más reciente de un modelo, es posible que tus instrucciones existentes ya no tengan un rendimiento óptimo.

  • Mejorar la comprensión de las instrucciones: Cuando la redacción de una instrucción es compleja o podría malinterpretarse, la herramienta puede reformularla para lograr la máxima claridad y precisión, lo que reduce la posibilidad 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 el resultado del modelo es incoherente, un poco fuera de tema o carece de los detalles que deseas. El optimizador puede ayudar 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 Agent Platform.

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 le otorgue los siguientes roles de IAM en el proyecto a ella y a una cuenta de usuario que tenga el rol de usuario de Agent Platform (roles/aiplatform.user):

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 a la cuenta de servicio predeterminada de Compute Engine y a tu cuenta de usuario a través de roles personalizados o de otros roles predefinidos.

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 Agent Platform 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..."
}

Optimiza las instrucciones para 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. Es posible que las instrucciones que funcionan bien para los modelos grandes no sean ó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 define mejor 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 adapten 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'

# optimize_prompt returns OptimizeResponse type, which has 2 fields: raw_text_response and parsed_response
# raw_text_response is guaranteed and always will be given to the user.
# parsed_response is not guaranteed. If parsing is possible, the parsed response is stored in this field.
#    parsed_response contains the following 4 fields:
#    optimization_type, applicable_guidelines, original_prompt, suggested_prompt
response = client.prompt_optimizer.optimize_prompt(
    prompt=prompt,
    config=vertexai.types.OptimizeConfig(
        optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_GEMINI_NANO
        )
    )

# print(response.raw_text_response)
print(response.parsed_response.suggested_prompt)