Questo documento descrive come utilizzare lo strumento di ottimizzazione basato sui dati per ottimizzare automaticamente il rendimento dei prompt migliorando le istruzioni di sistema per un insieme di prompt.
Lo strumento di ottimizzazione basato sui dati può aiutarti a migliorare i prompt rapidamente e su larga scala, senza riscrivere manualmente le istruzioni di sistema o i singoli prompt. Ciò è particolarmente utile quando vuoi utilizzare istruzioni e prompt di sistema scritti per un modello con un modello diverso.
Esempio di ottimizzazione del prompt
Ad esempio, per ottimizzare le istruzioni di sistema per un insieme di prompt che fanno riferimento a informazioni contestuali per rispondere a domande sulla cucina, puoi utilizzare l'ottimizzatore basato sui dati. Per completare questa attività, prepara gli input in modo simile al seguente:
Istruzioni di sistema
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.
Modello di prompt
Question: {input_question} Facts: {input_context}
Prompt di esempio
input_question |
input_context |
---|---|
Quali sono alcune tecniche di cottura di carne rossa e maiale che massimizzano il sapore e la tenerezza riducendo al minimo la formazione di composti dannosi per la salute? | Per garantire la sicurezza, la carne rossa e il maiale devono essere cotti a una temperatura interna di 63 °C. La marinatura della carne in ingredienti acidi come succo di limone o aceto può contribuire ad ammorbidirla rompendo le fibre muscolari dure. I metodi di cottura ad alta temperatura come la cottura alla griglia e in padella possono creare una doratura e una caramellizzazione deliziose, ma è importante evitare la carbonizzazione, che può produrre composti dannosi. |
Quali sono alcuni modi creativi per aggiungere sapore e nutrienti ai frullati proteici senza utilizzare zuccheri aggiunti o ingredienti artificiali? | L'aggiunta di verdure a foglia verde come spinaci o cavolo nero è un ottimo modo per aumentare il valore nutrizionale del tuo frullato senza alterarne drasticamente il sapore. L'utilizzo di latte di mandorla non zuccherato o acqua di cocco al posto del latte normale può aggiungere una dolcezza sottile e un aumento di grassi sani o elettroliti, rispettivamente. Sapevi che se frulli troppo a lungo il tuo frullato, questo può scaldarsi? Per mantenere il tutto fresco e rinfrescante, frulla per periodi più brevi e fai una pausa se necessario. |
Istruzioni di sistema ottimizzate
As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given the intern's question and some facts, provide a clear, concise, and informative answer that will help the intern excel in their culinary journey.
Come funziona l'ottimizzazione
L'ottimizzatore basato sui dati accetta i seguenti parametri:
- Modalità di ottimizzazione: specifica se lo strumento di ottimizzazione basato sui dati ottimizza le istruzioni di sistema, seleziona prompt di esempio da aggiungere alle istruzioni di sistema come esempi few-shot o entrambi.
- Metriche di valutazione: le metriche utilizzate dallo strumento di ottimizzazione basato sui dati per ottimizzare le istruzioni di sistema e/o selezionare prompt di esempio.
- Modello target: il modello Google per cui lo strumento di ottimizzazione basato sui dati ottimizza le istruzioni di sistema e seleziona prompt di esempio.
Quando esegui l'ottimizzatore basato sui dati, questo ottimizza le istruzioni di sistema in base alle tue selezioni eseguendo un job di addestramento personalizzato in cui valuta in modo iterativo i prompt di esempio e riscrive le istruzioni di sistema per trovare la versione che produce il miglior punteggio di valutazione per il modello di destinazione.
Al termine del job, lo strumento di ottimizzazione basato sui dati restituisce le istruzioni di sistema ottimizzate con il relativo punteggio di valutazione.
Metriche di valutazione
Lo strumento di ottimizzazione basato sui dati utilizza le metriche di valutazione per ottimizzare le istruzioni di sistema e selezionare i prompt di esempio. Puoi utilizzare le metriche di valutazione standard o definire le tue metriche di valutazione personalizzate. Nota: tutte le metriche di valutazione DEVONO avere la proprietà per cui un punteggio più alto indica un rendimento migliore.
Puoi utilizzare più metriche contemporaneamente. Tuttavia, le metriche personalizzate possono essere utilizzate una sola alla volta. Se utilizzi metriche standard e personalizzate insieme, solo una delle metriche può essere una metrica personalizzata. Le altre devono essere metriche standard.
Per scoprire come specificare le metriche una alla volta o in combinazione, consulta EVALUATION_METRIC_PARAMETERS nella scheda SDK in Creare un modello di prompt e istruzioni di sistema.
Metriche di valutazione personalizzate
Le metriche personalizzate sono utili quando le metriche standard non sono adatte alla tua applicazione. Tieni presente che l'ottimizzatore basato sui dati supporta una sola metrica personalizzata alla volta.
Per scoprire come creare metriche personalizzate, consulta Creare metriche personalizzate.
Metriche di valutazione standard
L'ottimizzatore basato sui dati supporta metriche di valutazione personalizzate e anche le seguenti metriche di valutazione:
Tipo di metrica | Caso d'uso | Metrica | Descrizione |
---|---|---|---|
Basato su modelli | Riassunto | summarization_quality |
Descrive la capacità del modello di rispondere a domande dato un corpo di testo da consultare. |
Question answering | question_answering_correctness * |
Descrive la capacità del modello di rispondere correttamente a una domanda. | |
question_answering_quality |
Descrive la capacità del modello di rispondere a domande dato un corpo di testo da consultare. | ||
Coherence | coherence |
Descrive la capacità del modello di fornire una risposta coerente e misura la fluidità e la logicità del testo generato. | |
Sicurezza | safety |
Descrive il livello di sicurezza del modello, ovvero se la risposta contiene testo non sicuro. | |
Fluency | fluency |
Descrive la padronanza della lingua del modello. | |
Groundedness | groundedness |
Descrive la capacità del modello di fornire o fare riferimento a informazioni incluse solo nel testo di input. | |
Comet | comet** |
Descrive la capacità del modello di tradurre in modo qualitativo rispetto al riferimento. | |
MetricX | metricx** |
Descrive la capacità del modello di tradurre con una buona qualità. | |
Basato sul calcolo | Utilizzo degli strumenti e chiamata di funzione | tool_call_valid * |
Descrive la capacità del modello di prevedere una chiamata allo strumento valida. |
tool_name_match * |
Descrive la capacità del modello di prevedere una chiamata allo strumento con il nome dello strumento corretto. Viene ispezionata solo la prima chiamata allo strumento. | ||
tool_parameter_key_match * |
Descrive la capacità del modello di prevedere una chiamata allo strumento con i nomi dei parametri corretti. | ||
tool_parameter_kv_match * |
Descrive la capacità del modello di prevedere una chiamata allo strumento con i nomi dei parametri e i valori delle chiavi corretti. | ||
Generazione di testi generici | bleu * |
Contiene il risultato di un algoritmo per la valutazione della qualità della previsione, che è stato tradotto da una lingua naturale a un'altra lingua naturale. La qualità della previsione è considerata la corrispondenza tra un parametro di previsione e il relativo parametro di riferimento. | |
exact_match * |
Calcola se un parametro di previsione corrisponde esattamente a un parametro di riferimento. | ||
rouge_1 * |
Utilizzato per confrontare il parametro di previsione fornito con un parametro di riferimento. | ||
rouge_2 * |
|||
rouge_l * |
|||
rouge_l_sum * |
* Se vuoi ottimizzare i prompt utilizzando le valutazioni basate su question_answering_correctness
o sui calcoli, devi svolgere una delle seguenti operazioni:
- Aggiungi una variabile che rappresenti la risposta basata su dati di fatto per i tuoi prompt al modello di prompt.
- Se non disponi di risposte basate su dati di fatto per i tuoi prompt, ma in precedenza
hai utilizzato i prompt con un modello Google e
hai ottenuto i risultati che ti interessavano, puoi aggiungere il parametro
source_model
alla tua configurazione anziché aggiungere risposte basate su dati di fatto. Quando il parametrosource_model
è impostato, lo strumento di ottimizzazione basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati empirici reali.
** Se vuoi ottimizzare i prompt utilizzando comet
o metricx
, devi fornire il parametro translation_source_field_name
alla configurazione, che specifica il nome del campo corrispondente del testo di origine nei dati. Inoltre, il valore di MetricX è stato modificato in modo che sia compreso tra 0 (peggiore) e 25 (migliore) per rispettare la proprietà "maggiore è meglio".
Prima di iniziare
Per assicurarti che l'account di servizio Compute Engine predefinito disponga delle autorizzazioni necessarie per ottimizzare i prompt, chiedi all'amministratore di concedere all'account di servizio Compute Engine predefinito i seguenti ruoli IAM sul progetto:
-
Utente Vertex AI (
roles/aiplatform.user
) -
Storage Object Admin (
roles/storage.objectAdmin
) -
Lettore Artifact Registry (
roles/artifactregistry.reader
) -
Se utilizzi metriche personalizzate:
-
Cloud Run Developer (
roles/run.developer
) -
Cloud Run Invoker (
roles/run.invoker
)
-
Cloud Run Developer (
Per ulteriori informazioni 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.
Ottimizzare i prompt
Puoi ottimizzare i prompt nei seguenti modi:
- utilizzando lo strumento di ottimizzazione dei prompt di Vertex AI nella console Vertex AI
- utilizzando l'API Vertex AI
- eseguendo il notebook Vertex AI Prompt Optimizer.
Per ottimizzare i prompt, scegli il metodo che vuoi utilizzare, quindi completa i passaggi descritti in dettaglio nelle sezioni seguenti:
- Crea un modello di prompt e istruzioni di sistema
- Preparare prompt di esempio
- (Facoltativo) Creare metriche personalizzate
- Creare una configurazione
- Esegui il job di ottimizzazione dei prompt
- Analizzare i risultati e iterare
Creare un modello di prompt e istruzioni di sistema
I modelli di prompt definiscono il formato di tutti i prompt tramite variabili sostituibili. Quando utilizzi un modello di prompt per ottimizzare i prompt, le variabili vengono sostituite dai dati nel set di dati dei prompt.
Le variabili del modello di prompt devono soddisfare i seguenti requisiti:
- Le variabili devono essere racchiuse tra parentesi graffe
- I nomi delle variabili non devono contenere spazi o trattini
-
Le variabili che rappresentano input multimodali devono includere la stringa
MIME_TYPE
dopo la variabile:@@@MIME_TYPE
Sostituisci
MIME_TYPE
con un 'immagine, un video, un audio, o un documento con tipo MIME supportato dal modello di destinazione.
Crea un template di prompt e istruzioni di sistema utilizzando uno dei seguenti metodi:
Notebook
Se vuoi eseguire l'ottimizzatore basato sui dati tramite il notebook, crea istruzioni di sistema e un modello di prompt procedendo nel seguente modo:
In Colab Enterprise, apri il notebook dell'ottimizzatore di prompt Vertex AI.
Vai al blocco note dell'ottimizzatore di prompt di Vertex AI
Nella sezione Crea un modello di prompt e istruzioni di sistema, segui questi passaggi:
Nel campo SYSTEM_INSTRUCTION, inserisci le istruzioni di sistema. Ad esempio:
Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
Nel campo PROMPT_TEMPLATE, inserisci il modello di prompt. Ad esempio:
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
Se vuoi ottimizzare i prompt utilizzando le valutazioni
question_answering_correctness
o basate sul calcolo, devi eseguire una delle seguenti operazioni:
Aggiungi la variabile
{target}
al modello di prompt per rappresentare la risposta basata su dati di fatto del prompt. Ad esempio:Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
Se non disponi di risposte di riferimento per i tuoi prompt, ma in precedenza hai utilizzato i prompt con un modello Google e hai ottenuto i risultati che ti interessavano, puoi aggiungere il parametro
source_model
alla tua configurazione anziché aggiungere risposte di riferimento. Quando il parametrosource_model
è impostato, lo strumento di ottimizzazione basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati empirici reali.
SDK
Se vuoi eseguire l'ottimizzatore basato sui dati tramite l'SDK senza utilizzare il blocco note, crea file di testo per il modello di prompt e le istruzioni di sistema nel seguente modo:
Crea un file di testo per le istruzioni di sistema.
Nel file di testo, definisci le istruzioni di sistema per il file di testo. Ad esempio:
Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
Crea un file di testo per il modello di prompt.
Nel file di testo, definisci un modello di prompt che includa una o più variabili. Ad esempio:
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
Se vuoi ottimizzare i prompt utilizzando le valutazioni
question_answering_correctness
o basate sul calcolo, devi eseguire una delle seguenti operazioni:Aggiungi la variabile
{target}
al modello di prompt per rappresentare la risposta basata su dati di fatto del prompt. Ad esempio:Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
Se non disponi di risposte di riferimento per i tuoi prompt, ma in precedenza hai utilizzato i prompt con un modello Google e hai ottenuto i risultati che ti interessavano, puoi aggiungere il parametro
source_model
alla tua configurazione anziché aggiungere risposte di riferimento. Quando il parametrosource_model
è impostato, lo strumento di ottimizzazione basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati empirici reali.
Preparare prompt di esempio
Per ottenere i risultati migliori dall'ottimizzatore basato sui dati, utilizza 50-100 prompt di esempio.
- Lo strumento può comunque essere efficace anche con un minimo di 5 prompt di esempio.
- I campioni migliori includono esempi in cui il modello di destinazione ha un rendimento scarso ed esempi in cui il modello di destinazione ha un buon rendimento.
I prompt di esempio contengono i dati che sostituiscono le variabili nel modello di prompt. Puoi utilizzare un file JSONL o CSV per archiviare i prompt di esempio.
File JSONL
- Crea un file JSONL.
Nel file JSONL, aggiungi i dati del prompt che sostituiscono ogni variabile. Ad esempio:
{"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."} {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
File CSV
- Crea un file CSV.
- Nella prima riga, aggiungi le variabili del modello di prompt.
- Nelle righe successive, aggiungi i dati campione che sostituiscono ogni variabile.
- Carica il file CSV in un bucket Cloud Storage.
(Facoltativo) Creare metriche personalizzate
distinti.Crea una metrica personalizzata nel seguente modo:
Crea un file di testo denominato
requirements.txt
.Nel file
requirements.txt
, definisci le librerie richieste per la funzione metrica di valutazione personalizzata. Tutte le funzioni richiedono il pacchettofunctions-framework
.Ad esempio, il file
requirements.txt
per una metrica personalizzata che calcola ROUGE-L avrebbe un aspetto simile al seguente:functions-framework==3.* rouge-score
Crea un file Python denominato
main.py
.Nel file
main.py
, scrivi la tua funzione di valutazione personalizzata. La funzione deve accettare quanto segue:- Richieste HTTP POST
- Input JSON contenente
response
, che è l'output del LLM, ereference
, che è la risposta di riferimento per il prompt, se fornita nel set di dati del prompt.
Ad esempio, il file
main.py
per una metrica personalizzata che calcola ROUGE-L avrebbe un aspetto simile al seguente:from typing import Any import json import functions_framework from rouge_score import rouge_scorer # Register an HTTP function with the Functions Framework @functions_framework.http def main(request): request_json = request.get_json(silent=True) if not request_json: raise ValueError('Can not find request json.') """Extract 'response' and 'reference' from the request payload. 'response' represents the model's response, while 'reference' represents the ground truth response.""" response = request_json['response'] reference = request_json['reference'] # Compute ROUGE-L F-measure scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True) scores = scorer.score(reference, response) final_score = scores['rougeL'].fmeasure # Return the custom score in the response return json.dumps({ # The following key is the CUSTOM_METRIC_NAME that you pass to the job 'custom_accuracy': final_score, # The following key is optional 'explanation': 'ROUGE_L F-measure between reference and response', })
Esegui il deployment della funzione di valutazione personalizzata come funzione Cloud Run eseguendo il comando
gcloud functions deploy
:gcloud functions deploy FUNCTION_NAME \ --project PROJECT_ID \ --gen2 \ --memory=2Gb \ --concurrency=6 \ --min-instances 6 \ --region=REGION \ --runtime="python310" \ --source="." \ --entry-point main \ --trigger-http \ --timeout=3600 \ --quiet
Sostituisci quanto segue:
FUNCTION_NAME
: il nome della metrica di valutazione personalizzata.PROJECT_ID
: il tuo ID progetto.REGION
: la regione in cui vuoi eseguire il deployment della funzione. Deve trovarsi nella stessa regione in cui utilizzi il modello di destinazione.
Creare una configurazione
La configurazione dell'ottimizzatore basato sui dati specifica i parametri che vuoi impostare per il job di ottimizzazione dei prompt.
Crea una configurazione utilizzando una delle seguenti opzioni:
Notebook
Se vuoi eseguire l'ottimizzatore basato sui dati tramite il notebook, crea una configurazione nel seguente modo:
In Colab Enterprise, apri il notebook dell'ottimizzatore basato sui dati.
Vai al blocco note dell'ottimizzatore di prompt di Vertex AI
Nella sezione Configura le impostazioni del progetto, segui questi passaggi:
- Nel campo PROJECT_ID, inserisci l'ID progetto.
- Nel campo LOCATION, inserisci la località in cui vuoi eseguire l'ottimizzatore basato sui dati.
- Nel campo OUTPUT_PATH, inserisci l'URI del bucket Cloud Storage in cui vuoi che lo strumento di ottimizzazione basato sui dati scriva le istruzioni di sistema ottimizzate e/o gli esempi few-shot.
Ad esempio,
gs://bucket-name/output-path
. - Nel campo INPUT_PATH, inserisci l'URI dei prompt di esempio nel bucket Cloud Storage. Ad esempio,
gs://bucket-name/sample-prompts.jsonl
.
Nella sezione Configura le impostazioni di ottimizzazione, segui questi passaggi:
- Nel campo TARGET_MODEL, inserisci il modello per il quale vuoi ottimizzare i prompt.
- Nel campo THINKING_BUDGET, inserisci il budget di pensiero per il modello target per cui vuoi ottimizzare i prompt. Il valore predefinito è -1, il che significa che non è previsto alcun ragionamento per i modelli non di ragionamento e il ragionamento automatico per i modelli di ragionamento come Gemini 2.5. Consulta la sezione Considerazioni per informazioni sulle impostazioni manuali del budget.
- Nel campo OPTIMIZATION_MODE, inserisci la modalità di ottimizzazione che vuoi
utilizzare. Deve essere uno tra
instruction
,demonstration
oinstruction_and_demo
. - Nel campo EVAL_METRIC, inserisci una metrica di valutazione per la quale vuoi ottimizzare i prompt.
- (Facoltativo) Nel campo SOURCE_MODEL, inserisci il modello Google con cui sono stati utilizzati in precedenza le istruzioni e i prompt di sistema. Quando il
parametro
source_model
è impostato, l'ottimizzatore basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati di fatto per te, per le metriche di valutazione che richiedono risposte basate su dati di fatto. Se in precedenza non hai eseguito i prompt con un modello Google o non hai ottenuto i risultati target, aggiungi invece risposte di verità di base al prompt. Per saperne di più, consulta la sezione Creare un prompt e istruzioni di sistema di questo documento.
(Facoltativo) Nella sezione Configura impostazioni di ottimizzazione avanzate, puoi anche aggiungere uno qualsiasi dei parametri facoltativi alla configurazione.
- Nel campo NUM_INST_OPTIMIZATION_STEPS, inserisci il numero di
iterazioni utilizzate dall'ottimizzatore basato sui dati nella
modalità di ottimizzazione delle istruzioni. La durata aumenta in modo lineare all'aumentare di questo valore. Deve essere un numero intero compreso tra
10
e20
. Se non viene impostato, il valore predefinito è10
. - Nel campo NUM_DEMO_OPTIMIZATION_STEPS, inserisci il numero di
dimostrazioni valutate dall'ottimizzatore basato sui dati.
Utilizzato con la modalità di ottimizzazione
demonstration
einstruction_and_demo
. Deve essere un numero intero compreso tra10
e30
. Se non viene impostato, il valore predefinito è10
. - Nel campo NUM_DEMO_PER_PROMPT, inserisci il numero di
dimostrazioni generate per prompt. Deve essere un numero intero compreso tra
2
e il numero totale di prompt di esempio - 1. Se non viene impostato, il valore predefinito è3
. - Nel campo TARGET_MODEL_QPS, inserisci le query al secondo (QPS)
che l'ottimizzatore basato sui dati invia al modello di destinazione.
La durata diminuisce in modo lineare all'aumentare di questo valore. Deve essere un
valore float maggiore o uguale a
3.0
, ma inferiore alla quota QPS che hai sul modello di destinazione. Se non viene impostato, il valore predefinito è3.0
. - Nel campo SOURCE_MODEL_QPS, inserisci le query al secondo (QPS) che lo strumento di ottimizzazione basato sui dati invia al modello di origine. Deve essere un numero in virgola mobile maggiore o uguale a
3.0
, ma inferiore alla quota QPS che hai sul modello di origine. Se non viene impostato, il valore predefinito è3.0
. - Nel campo EVAL_QPS, inserisci le query al secondo (QPS)
che lo strumento di ottimizzazione basato sui dati invia al servizio di valutazione dell'IA generativa o alla funzione Cloud Run.
- Per le metriche basate sul modello, deve essere un numero in virgola mobile pari o superiore a
3.0
. Se non viene impostato, il valore predefinito è3.0
. - Per le metriche personalizzate, deve essere un numero in virgola mobile pari o superiore a
3.0
. Questo determina la velocità con cui l'ottimizzatore basato sui dati chiama le funzioni Cloud Run della metrica personalizzata.
- Per le metriche basate sul modello, deve essere un numero in virgola mobile pari o superiore a
- Se vuoi utilizzare più di una metrica di valutazione, procedi nel seguente modo:
- Nel campo EVAL_METRIC_1, inserisci una metrica di valutazione che vuoi utilizzare.
- Nel campo EVAL_METRIC_1_WEIGHT, inserisci il peso che vuoi che l'ottimizzatore basato sui dati utilizzi quando esegue l'ottimizzazione.
- Nel campo EVAL_METRIC_2, inserisci una metrica di valutazione che vuoi utilizzare.
- Nel campo EVAL_METRIC_2_WEIGHT, inserisci il peso che vuoi che l'ottimizzatore basato sui dati utilizzi quando esegue l'ottimizzazione.
- Nel campo EVAL_METRIC_3, inserisci facoltativamente una metrica di valutazione che vuoi utilizzare.
- Nel campo EVAL_METRIC_3_WEIGHT, inserisci facoltativamente il peso che vuoi che lo strumento di ottimizzazione basato sui dati utilizzi quando esegue l'ottimizzazione.
- Nel campo METRIC_AGGREGATION_TYPE, inserisci il peso che vuoi che l'ottimizzatore basato sui dati utilizzi quando esegue l'ottimizzazione.
- Nel campo PLACEHOLDER_TO_VALUE, inserisci le informazioni che sostituiscono le variabili nelle istruzioni di sistema. Le informazioni incluse in questo flag non vengono ottimizzate dall'ottimizzatore basato sui dati.
- Nel campo RESPONSE_MIME_TYPE, inserisci il
tipo MIME di risposta
utilizzato dal modello di destinazione. Deve essere uno tra
text/plain
oapplication/json
. Se non viene impostato, il valore predefinito ètext/plain
. - Nel campo TARGET_LANGUAGE, inserisci la lingua delle istruzioni di sistema. Se non viene impostato, il valore predefinito è l'inglese.
SDK
Se vuoi eseguire l'ottimizzatore basato sui dati tramite l'SDK, crea un file JSON con i parametri che vuoi utilizzare per ottimizzare i prompt procedendo nel seguente modo:
Crea un file JSON con i parametri che vuoi utilizzare per ottimizzare i tuoi prompt. Ogni file di configurazione richiede i seguenti parametri:
{ "project": "PROJECT_ID", "system_instruction": "SYSTEM_INSTRUCTION", "prompt_template": "PROMPT_TEMPLATE", "target_model": "TARGET_MODEL", "thinking_budget": "THINKING_BUDGET, EVALUATION_METRIC_PARAMETERS, "optimization_mode": "OPTIMIZATION_MODE", "input_data_path": "SAMPLE_PROMPT_URI", "output_path": "OUTPUT_URI" }
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.SYSTEM_INSTRUCTION
: le istruzioni di sistema che vuoi ottimizzare.PROMPT_TEMPLATE
: il modello di prompt.TARGET_MODEL
: il modello per cui vuoi ottimizzare i prompt.THINKING_BUDGET
: il budget di pensiero per il modello di destinazione per cui vuoi ottimizzare i prompt. Il valore predefinito è -1, il che significa che non è previsto alcun ragionamento per i modelli non di ragionamento e il ragionamento automatico per i modelli di ragionamento come Gemini 2.5. Consulta la sezione Considerazioni per informazioni sulle impostazioni manuali del budget.EVALUATION_METRIC_PARAMETERS
: i parametri che specifichi dipendono dal numero di metriche di valutazione che utilizzi e se le metriche sono standard o personalizzate:Singola metrica standard
Se utilizzi una singola metrica di valutazione standard, utilizza il seguente parametro:
"eval_metric": "EVALUATION_METRIC",
Sostituisci
EVALUATION_METRIC
con la metrica per cui vuoi ottimizzare i prompt.Singola metrica personalizzata
Se utilizzi una singola metrica di valutazione personalizzata, utilizza i seguenti parametri:
"eval_metric": "custom_metric", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
Sostituisci quanto segue:
CUSTOM_METRIC_NAME
: il nome della metrica, come definito dalla chiave corrispondente afinal_score
. Ad esempiocustom_accuracy
.FUNCTION_NAME
: il nome della funzione Cloud Run di cui hai eseguito il deployment in precedenza.
Più metriche standard
Se utilizzi più metriche di valutazione standard, utilizza i seguenti parametri:
"eval_metrics_types": [EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE",
Sostituisci quanto segue:
EVALUATION_METRIC_LIST
: un elenco di metriche di valutazione. Deve essere un array. Ad esempio,"bleu", "summarization_quality"
.EVAL_METRICS_WEIGHTS
: il peso per ogni metrica. Deve essere un array e avere la stessa lunghezza diEVALUATION_METRIC_LIST
.METRIC_AGGREGATION_TYPE
: il tipo di aggregazione utilizzato per le metriche di valutazione. Deve essere uno traweighted_sum
oweighted_average
. Se non viene impostato, il valore predefinito èweighted_sum
.
Più metriche standard e personalizzate
Se utilizzi più metriche di valutazione che includono un mix di una singola metrica personalizzata e una o più metriche standard, utilizza i seguenti parametri:
"eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
Sostituisci quanto segue:
EVALUATION_METRIC_LIST
: un elenco delle metriche di valutazione standard. Deve essere un array. Ad esempio,"bleu", "summarization_quality"
.EVAL_METRICS_WEIGHTS
: il peso per ogni metrica. Deve essere un array.METRIC_AGGREGATION_TYPE
: il tipo di aggregazione utilizzato per le metriche di valutazione. Deve essere uno traweighted_sum
oweighted_average
. Se non viene impostato, il valore predefinito èweighted_sum
.CUSTOM_METRIC_NAME
: il nome della metrica, come definito dalla chiave corrispondente afinal_score
. Ad esempio:custom_accuracy
.FUNCTION_NAME
: il nome della funzione Cloud Run di cui hai eseguito il deployment in precedenza.
OPTIMIZATION_MODE
: la modalità di ottimizzazione. Deve essere uno trainstruction
,demonstration
oinstruction_and_demo
.SAMPLE_PROMPT_URI
: l'URI dei prompt di esempio nel bucket Cloud Storage. Ad esempio,gs://bucket-name/sample-prompts.jsonl
.OUTPUT_URI
: l'URI del bucket Cloud Storage in cui vuoi che lo strumento di ottimizzazione basato sui dati scriva le istruzioni di sistema ottimizzate e/o gli esempi few-shot. Ad esempio,gs://bucket-name/output-path
.
Puoi anche aggiungere uno qualsiasi dei parametri facoltativi al file di configurazione.
I parametri facoltativi sono suddivisi in cinque categorie:
- Parametri del processo di ottimizzazione. Questi parametri controllano il processo di ottimizzazione complessivo, inclusa la sua durata e il numero di iterazioni di ottimizzazione eseguite, il che influisce direttamente sulla qualità delle ottimizzazioni.
- Selezione del modello e parametri di posizione. Questi parametri specificano i modelli utilizzati dall'ottimizzatore basato sui dati e le posizioni in cui vengono utilizzati.
- Parametri di latenza (QPS). Questi parametri controllano le QPS, influendo sulla velocità del processo di ottimizzazione.
- Altro. Altri parametri che controllano la struttura e i contenuti
dei prompt.
Visualizzare i parametri facoltativi
"num_steps": NUM_INST_OPTIMIZATION_STEPS, "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS, "demo_set_size": NUM_DEMO_PER_PROMPT, "target_model_location": "TARGET_MODEL_LOCATION", "source_model": "SOURCE_MODEL", "source_model_location": "SOURCE_MODEL_LOCATION", "target_model_qps": TARGET_MODEL_QPS, "eval_qps": EVAL_QPS, "source_model_qps": SOURCE_MODEL_QPS, "response_mime_type": "RESPONSE_MIME_TYPE", "language": "TARGET_LANGUAGE", "placeholder_to_content": "PLACEHOLDER_TO_CONTENT", "data_limit": DATA_LIMIT
Sostituisci quanto segue:
Parametri del processo di ottimizzazione:
NUM_INST_OPTIMIZATION_STEPS
: il numero di iterazioni utilizzate dallo strumento di ottimizzazione basato sui dati nella modalità di ottimizzazione delle istruzioni. La durata aumenta in modo lineare all'aumentare di questo valore. Deve essere un numero intero compreso tra10
e20
. Se non viene impostato, il valore predefinito è10
.NUM_DEMO_OPTIMIZATION_STEPS
: il numero di dimostrazioni che l'ottimizzatore basato sui dati valuta. Utilizzato con la modalità di ottimizzazionedemonstration
einstruction_and_demo
. Deve essere un numero intero compreso tra2
e il numero totale di prompt di esempio - 1. Se non viene impostato, il valore predefinito è10
.NUM_DEMO_PER_PROMPT
: il numero di dimostrazioni generate per prompt. Deve essere un numero intero compreso tra3
e6
. Se non viene impostato, il valore predefinito è3
.
Parametri di selezione e posizione del modello:
TARGET_MODEL_LOCATION
: la posizione in cui vuoi eseguire il modello di destinazione. Se non viene impostato, il valore predefinito èus-central1
.SOURCE_MODEL
: il modello Google con cui sono stati utilizzati in precedenza le istruzioni e i prompt di sistema. Quando il parametrosource_model
è impostato, lo strumento di ottimizzazione basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati empirici reali per te, per le metriche di valutazione che richiedono risposte basate su dati empirici reali. Se in precedenza non hai eseguito i prompt con un modello Google o non hai ottenuto i risultati target, aggiungi invece risposte di riferimento al prompt. Per saperne di più, consulta la sezione Creare un prompt e istruzioni di sistema di questo documento.SOURCE_MODEL_LOCATION
: la posizione in cui vuoi eseguire il modello di origine. Se non viene impostato, il valore predefinito èus-central1
.
Parametri di latenza (QPS):
TARGET_MODEL_QPS
: le query al secondo (QPS) che lo strumento di ottimizzazione basato sui dati invia al modello di destinazione. Il tempo di esecuzione diminuisce in modo lineare all'aumentare di questo valore. Deve essere un numero in virgola mobile maggiore o uguale a3.0
, ma inferiore alla quota di QPS che hai sul modello di destinazione. Se non viene impostato, il valore predefinito è3.0
.EVAL_QPS
: le query al secondo (QPS) che lo strumento di ottimizzazione basato sui dati invia al servizio di valutazione dell'AI generativa o alla funzione Cloud Run.- Per le metriche basate sul modello, deve essere un numero in virgola mobile pari o superiore a
3.0
. Se non viene impostato, il valore predefinito è3.0
. - Per le metriche personalizzate, deve essere un numero in virgola mobile pari o superiore a
3.0
. Questo determina la velocità con cui l'ottimizzatore basato sui dati chiama le funzioni Cloud Run della metrica personalizzata.
- Per le metriche basate sul modello, deve essere un numero in virgola mobile pari o superiore a
SOURCE_MODEL_QPS
: le query al secondo (QPS) che lo strumento di ottimizzazione basata sui dati invia al modello di origine. Deve essere un numero in virgola mobile maggiore o uguale a3.0
, ma inferiore alla quota QPS che hai sul modello di origine. Se non viene impostato, il valore predefinito è3.0
.
Altri parametri:
RESPONSE_MIME_TYPE
: il tipo di risposta MIME utilizzato dal modello di destinazione. Deve essere uno tratext/plain
oapplication/json
. Se non viene impostato, il valore predefinito ètext/plain
.TARGET_LANGUAGE
: la lingua delle istruzioni del sistema. Se non viene impostato, il valore predefinito è l'inglese.PLACEHOLDER_TO_CONTENT
: le informazioni che sostituiscono le variabili nelle istruzioni di sistema. Le informazioni incluse in questo flag non sono ottimizzate dall'ottimizzatore di prompt basato sui dati.DATA_LIMIT
: la quantità di dati utilizzati per la convalida. La durata aumenta in modo lineare con questo valore. Deve essere un numero intero compreso tra5
e100
. Se non viene impostato, il valore predefinito è100
.
Esegui l'ottimizzatore dei prompt
Esegui l'ottimizzatore basato sui dati utilizzando una delle seguenti opzioni:
Notebook
Esegui l'ottimizzatore basato sui dati tramite il blocco note procedendo nel seguente modo:
In Colab Enterprise, apri il notebook dell'ottimizzatore di prompt Vertex AI.
Nella sezione Esegui ottimizzatore di prompt, fai clic su play_circle Esegui cella.
Viene eseguito lo strumento di ottimizzazione basato sui dati.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la località in cui vuoi eseguire lo strumento di ottimizzazione dei prompt di Vertex AI.
- PROJECT_ID: il tuo ID progetto.
- JOB_NAME: un nome per il job di ottimizzazione dei prompt di Vertex AI.
- PATH_TO_CONFIG: l'URI del file di configurazione nel bucket Cloud Storage.
Ad esempio,
gs://bucket-name/configuration.json
.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
Corpo JSON della richiesta:
{ "displayName": "JOB_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": 1, "containerSpec": { "imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0", "args": ["--config=PATH_TO_CONFIG""] } } ] } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
,
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
La risposta è simile alla seguente:
SDK
Esegui l'ottimizzatore basato sui dati tramite l'SDK aggiungendo le seguenti sezioni di codice a Colab o Notebook.
Effettua le seguenti sostituzioni:
- LOCATION: la località in cui vuoi eseguire l'ottimizzatore basato sui dati.
- PROJECT_ID: il tuo ID progetto.
- PROJECT_NUMBER: il numero del tuo progetto, disponibile in Cloud Console.
- PATH_TO_CONFIG: l'URI del file di configurazione in Cloud Storage. Ad esempio,
gs://bucket-name/configuration.json
.
# Authenticate
from google.colab import auth
auth.authenticate_user(project_id=PROJECT_ID)
# Set the Service Account
SERVICE_ACCOUNT = f"{PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
# Import Vertex AI SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)
#Create the Vertex AI Client
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)
# Setup the job dictionary
vapo_config = {
'config_path': PATH_TO_CONFIG,
'service_account': SERVICE_ACCOUNT,
'wait_for_completion': True,
}
#Start the Vertex AI Prompt Optimizer
client = client.prompt_optimizer.optimize(method="vapo", config=vapo_config)
Una volta completata l'ottimizzazione, esamina gli artefatti di output nella posizione di output specificata nella configurazione.
Analizzare i risultati ed eseguire l'iterazione
Dopo aver eseguito l'ottimizzatore basato sui dati, controlla l'avanzamento del job utilizzando una delle seguenti opzioni:
Notebook
Se vuoi visualizzare i risultati dell'ottimizzatore basato sui dati tramite il notebook:
Apri il notebook dell'ottimizzatore dei prompt di Vertex AI.
Nella sezione Esamina i risultati, segui questi passaggi:
Nel campo RESULT_PATH, aggiungi l'URI del bucket Cloud Storage che hai configurato per consentire all'ottimizzatore basato sui dati di scrivere i risultati. Ad esempio,
gs://bucket-name/output-path
.Fai clic su play_circle Esegui cella.
Console
Nella console Google Cloud , nella sezione Vertex AI, vai alla pagina Pipeline di addestramento.
Fai clic sulla scheda Job personalizzati. Il job di addestramento personalizzato dell'ottimizzatore basato sui dati viene visualizzato nell'elenco insieme al relativo stato.
Al termine del job, rivedi le ottimizzazioni nel seguente modo:
Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage:
Fai clic sul nome del bucket Cloud Storage.
Vai alla cartella con lo stesso nome della modalità di ottimizzazione che hai utilizzato per valutare i prompt, ovvero
instruction
odemonstration
. Se hai utilizzato la modalitàinstruction_and_demo
, vengono visualizzate entrambe le cartelle. La cartellainstruction
contiene i risultati dell'ottimizzazione delle istruzioni di sistema, mentre la cartellademonstration
contiene i risultati dell'ottimizzazionedemonstration
e le istruzioni di sistema ottimizzate.La cartella contiene i seguenti file:
config.json
: la configurazione completa utilizzata dallo strumento di ottimizzazione dei prompt di Vertex AI.templates.json
: ogni insieme di istruzioni di sistema e/o esempi few-shot generati dall'ottimizzatore basato sui dati e il relativo punteggio di valutazione.eval_results.json
: la risposta del modello di destinazione per ogni prompt di esempio per ogni insieme di istruzioni di sistema generate e/o esempi few-shot e il relativo punteggio di valutazione.optimized_results.json
: le istruzioni di sistema con il rendimento migliore e/o gli esempi few-shot e il relativo punteggio di valutazione.
Per visualizzare le istruzioni di sistema ottimizzate, visualizza il file
optimized_results.json
.
Best practice
I modelli in anteprima sono supportati solo tramite la regione
global
e il job personalizzato Vertex non supportaglobal
come regione. Pertanto, non utilizzare VAPO per ottimizzare i modelli di anteprima come modello target.Per i modelli GA, gli utenti possono selezionare le località specifiche per regione, ad esempio
us-central1
oeurope-central2
anzichéglobal
, per rispettare i requisiti di residenza dei dati.
Passaggi successivi
- Prova il notebook dell'SDK Vertex AI Prompt Optimizer.
- Scopri di più sulle best practice per l'AI responsabile e sui filtri di sicurezza di Vertex AI.
- Scopri di più sulle strategie di prompt.
- Esplora esempi di prompt nella galleria dei prompt.