Ottimizzatore zero-shot

L'ottimizzatore zero-shot ti consente di perfezionare e migliorare automaticamente i prompt scritti dagli utenti. Spesso, un prompt potrebbe non produrre la risposta del modello che vuoi a causa di un linguaggio ambiguo, della mancanza di contesto o dell'inclusione di informazioni irrilevanti. Questo ottimizzatore analizza e riscrive un prompt esistente per renderlo più chiaro, efficace e meglio allineato alle funzionalità del modello, portando in definitiva a risposte di qualità superiore.

L'ottimizzatore zero-shot è particolarmente utile per:

  • Adattamento agli aggiornamenti dei modelli: quando esegui l'upgrade a una versione più recente di un modello, i prompt esistenti potrebbero non funzionare più in modo ottimale.

  • Miglioramento della comprensione dei prompt: quando la formulazione di un prompt è complessa o potrebbe essere interpretata in modo errato, lo strumento può riformularla per la massima chiarezza e precisione, riducendo la probabilità di un risultato indesiderato.

Esistono due modi per utilizzare l'ottimizzatore:

  • Generazione di istruzioni: invece di scrivere istruzioni di sistema complesse da zero, puoi descrivere il tuo obiettivo o la tua attività in un linguaggio semplice. L'ottimizzatore genererà quindi un insieme completo e ben strutturato di istruzioni di sistema progettate per raggiungere il tuo obiettivo.

  • Perfezionamento dei prompt: hai un prompt funzionante, ma l'output del modello è incoerente, leggermente fuori tema o non contiene i dettagli che ti interessano. L'ottimizzatore può aiutarti a migliorare il prompt per ottenere un output migliore.

L'ottimizzatore supporta l'ottimizzazione dei prompt in tutte le lingue supportate da Gemini ed è disponibile tramite l'SDK della Agent Platform.

Prima di iniziare

Per assicurarti che il service account predefinito di Compute Engine disponga delle autorizzazioni necessarie per ottimizzare i prompt, chiedi all'amministratore di concedere i seguenti ruoli IAM sul progetto a questo service account e a un account utente con il ruolo Utente della piattaforma Agent (roles/aiplatform.user) :

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di concedere al service account predefinito di Compute Engine e al tuo account utente le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Ottimizza un prompt

# 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))

Questo oggetto output è di tipo OptimizeResponse e fornisce informazioni sul processo di ottimizzazione. La parte più importante è suggested_prompt, che contiene il prompt ottimizzato che puoi utilizzare per ottenere risultati migliori dal tuo modello. Gli altri campi, in particolare applicable_guidelines, sono utili per capire perché e come è stato migliorato il prompt, il che può aiutarti a scrivere prompt migliori in futuro. Ecco un esempio dell'output:

{
  "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..."
}

Ottimizzazione per modelli più piccoli

I modelli più piccoli come Gemma 3n E4B hanno funzionalità di follow-up delle istruzioni diverse rispetto ai modelli più grandi. I prompt che funzionano bene per i modelli di grandi dimensioni potrebbero non essere ottimali per questi modelli più piccoli. L'ottimizzatore zero-shot fornisce una modalità gemini_nano per risolvere questo problema. La modalità gemini_nano perfeziona il prompt in modo che si allinei in modo specifico alle caratteristiche dei modelli più piccoli, il che aiuta a generare prompt più adatti alle funzionalità dei modelli più piccoli.

Il seguente esempio mostra come ottimizzare un prompt per modelli più piccoli:

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)