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 in linea con le funzionalità del modello, in modo da ottenere risposte di qualità superiore.
L'ottimizzatore zero-shot è particolarmente utile per:
Adattamento agli aggiornamenti del modello: 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 ottenere la massima chiarezza e precisione, riducendo la possibilità 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 linguaggio semplice. L'ottimizzatore genererà quindi un insieme completo e ben strutturato di istruzioni di sistema progettate per raggiungere il tuo obiettivo.
Raffinamento del prompt: hai un prompt funzionante, ma l'output del modello è incoerente, leggermente fuori tema o non ha i dettagli che desideri. L'ottimizzatore può aiutarti a migliorare il prompt per un output migliore.
L'ottimizzatore supporta l'ottimizzazione dei prompt in tutte le lingue supportate da Gemini ed è disponibile tramite l'SDK Vertex AI.
Prima di iniziare
Per assicurarti che l'account di servizio predefinito di Compute Engine disponga delle autorizzazioni necessarie per ottimizzare i prompt, chiedi all'amministratore di concedere all'account di servizio predefinito di Compute Engine i seguenti ruoli IAM sul progetto:
-
Utente Vertex AI (
roles/aiplatform.user) -
Service Agent di Vertex AI (
roles/aiplatform.serviceAgent)
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 all'account di servizio predefinito di Compute Engine 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 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))
Questo oggetto output è di tipo OptimizeResponse e fornisce informazioni
sul processo di ottimizzazione. La parte più importante è il
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 il tuo prompt
è stato migliorato, 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 capacità di seguire le 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 sia allineato in modo specifico alle caratteristiche dei modelli più piccoli, il che
consente di 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'
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}
# )