Questo documento descrive come utilizzare l'ottimizzatore dei prompt di Vertex AI per ottimizzare automaticamente il rendimento dei prompt migliorando le istruzioni di sistema per un insieme di prompt.
L'ottimizzatore di prompt di Vertex AI può aiutarti a migliorare rapidamente i prompt su larga scala, senza dover riscrivere manualmente le istruzioni di sistema o i singoli prompt. Questa opzione è particolarmente utile se vuoi utilizzare istruzioni e prompt di sistema scritti per un modello con un altro modello.
L'ottimizzatore di prompt di Vertex AI aiuta a migliorare i prompt valutando la risposta del modello ai prompt di esempio in base alle metriche di valutazione specificate. Per utilizzare lo ottimizzatore di prompt di Vertex AI, devi disporre di quanto segue:
- Un insieme di prompt di esempio
- Istruzioni di sistema utilizzate da tutti i prompt di esempio
- Un modello di prompt che fa riferimento ai prompt di esempio
Esempio di ottimizzazione dei 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 di prompt di Vertex AI. Per completare questa attività, devi preparare input simili ai seguenti:
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 per cucinare carne rossa e maiale che massimizzano il sapore e la tenerezza riducendo al minimo la formazione di composti dannosi? | Per garantire la sicurezza, la carne rossa e il maiale devono essere cotti a una temperatura interna di 63 gradi centigradi. Marinare la carne con ingredienti acidi come succo di limone o aceto può aiutarti a renderla più tenera rompendo le fibre muscolari dure. I metodi di cottura ad alta temperatura come la griglia e la padella possono creare una deliziosa doratura e caramellizzazione, ma è importante evitare di bruciare, perché possono formarsi composti dannosi. |
Quali sono alcuni modi creativi per aggiungere sapore e nutrimento agli shake proteici senza utilizzare zuccheri aggiunti o ingredienti artificiali? | L'aggiunta di verdure a foglia verde come spinaci o cavolo è un ottimo modo per aumentare il valore nutritivo del tuo frullato senza alterarne drasticamente il sapore. L'utilizzo di latte di mandorle o acqua di cocco non zuccherato al posto del latte normale può aggiungere una dolcezza sottile e un aumento di grassi o elettroliti sani, rispettivamente. Lo sapevi che frullare troppo il tuo shake può surriscaldarlo? Per mantenere il tutto fresco e rinfrescante, frulla per brevi intervalli e fai una pausa al frullatore, se necessario. |
Come funziona l'ottimizzazione
Dopo aver preparato gli input, scegli una modalità di ottimizzazione, una metrica di valutazione e un modello target.
- Modalità di ottimizzazione: specifica se l'ottimizzatore dei prompt di Vertex AI ottimizza le istruzioni di sistema, seleziona prompt di esempio da aggiungere alle istruzioni di sistema come esempi di pochi scatti o entrambe le opzioni.
- Metrica di valutazione: la metrica utilizzata dall'ottimizzatore dei prompt di Vertex AI per ottimizzare le istruzioni di sistema e/o selezionare i prompt di esempio.
- Modello di destinazione: il modello di Google per il quale l'ottimizzatore di prompt di Vertex AI ottimizza le istruzioni di sistema e/o seleziona i prompt di esempio da utilizzare.
Quando esegui l'ottimizzatore di prompt di Vertex AI, le istruzioni di sistema vengono ottimizzate in base alle tue selezioni mediante l'esecuzione di un job di addestramento personalizzato in cui vengono valutati in modo iterativo i prompt di esempio e riscritte le istruzioni di sistema per trovare la versione che genera il punteggio di valutazione migliore per il modello di destinazione.
Al termine del job, l'ottimizzatore di prompt di Vertex AI genera le istruzioni di sistema ottimizzate con il relativo punteggio di valutazione.
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.
Modelli supportati
Puoi ottimizzare le istruzioni di sistema per l'utilizzo con i seguenti modelli:
Metriche di valutazione supportate
L'ottimizzatore di prompt di Vertex AI supporta le metriche di valutazione personalizzate e, inoltre, le seguenti metriche di valutazione:
Tipo di metrica | Caso d'uso | Metrica | Descrizione |
---|---|---|---|
In base a modelli | Riassumi | summarization_quality |
Descrive la capacità del modello di rispondere alle domande in base a un testo di riferimento. |
Risposta alle domande | question_answering_correctness * |
Descrive la capacità del modello di rispondere correttamente a una domanda. | |
question_answering_quality |
Descrive la capacità del modello di rispondere alle domande in base a un testo di riferimento. | ||
Coerenza | coherence |
Descrive la capacità del modello di fornire una risposta coerente e misura quanto il testo generato sia logico e abbia senso. | |
Sicurezza | safety |
Descrive il livello di sicurezza del modello, ovvero se la risposta contiene testo non sicuro. | |
Fluenza | fluency |
Descrive la padronanza della lingua del modello. | |
Equilibrio | groundedness |
Descrive la capacità del modello di fornire informazioni o fare riferimento a informazioni incluse solo nel testo inserito. | |
In base ai calcoli | Utilizzo dello strumento e chiamata delle funzioni | 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 corretto. Viene controllata 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 chiave corretti. | ||
Generare testo generico | bleu * |
Contiene il risultato di un algoritmo per la valutazione della qualità della previsione, che è stata tradotta da un linguaggio naturale all'altro. 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 su calcoli, devi eseguire 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 hai risposte basate su dati di fatto per i tuoi prompt, ma in precedenza hai utilizzato i prompt con un modello Google e hai raggiunto i risultati previsti, puoi aggiungere il parametro
source_model
alla configurazione anziché aggiungere le risposte basate su dati di fatto. Quando il parametrosource_model
è impostato, Vertex AI esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati di fatto per te.
Prima di iniziare
-
Per assicurarti che l'account di servizio predefinito di Compute Engine abbia le autorizzazioni necessarie per ottimizzare i prompt, chiedi all'amministratore di concedere all'account di servizio predefinito di Compute Engine i seguenti ruoli IAM nel progetto:
-
Utente Vertex AI (
roles/aiplatform.user
) -
Storage Object Admin (
roles/storage.objectAdmin
) -
Artifact Registry Reader (
roles/artifactregistry.reader
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
L'amministratore potrebbe anche essere in grado di assegnare all'account di servizio predefinito di Compute Engine le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
-
Utente Vertex AI (
La tabella seguente include i modelli che richiedono una quota di query al minuto (QPM) e il QPM consigliato per ciascun modello. Se la quota QPM è inferiore a quella consigliata, l'ottimizzatore dei prompt di Vertex AI potrebbe funzionare più lentamente del previsto. Se configuri l'ottimizzatore di prompt di Vertex AI con un QPM superiore a quello a cui hai accesso, il job non andrà a buon fine. Se non disponi di una quota sufficiente per eseguire l'ottimizzatore dei prompt di Vertex AI, puoi richiedere un aumento della quota.
Modello Descrizione Quota QPM minima Quota QPM consigliata Modello target Il modello che vuoi ottimizzare. 200 QPM Oltre 500 QPM gemini-1.5-pro-001
Il modello utilizzato dall'ottimizzatore dei prompt di Vertex AI per riscrivere e valutare i prompt. 200 QPM Oltre 500 QPM
Ottimizzare i prompt
Puoi ottimizzare i prompt eseguendo il notebook di ottimizzazione dei prompt di Vertex AI o utilizzando l'API Vertex AI. Per ottimizzare i prompt, scegli il metodo che vuoi utilizzare per eseguire l'ottimizzatore dei prompt di Vertex AI, quindi completa i passaggi descritti in dettaglio nelle sezioni seguenti:
- Creare un modello di prompt e istruzioni di sistema
- Preparare prompt di esempio
- Scegliere una metrica di valutazione
- Creare una configurazione
- Eseguire il job di ottimizzazione dei prompt
- Analizza i risultati ed esegui l'iterazione
Crea un modello di prompt e le 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 del 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
Le variabili che rappresentano input multimodali devono includere la stringa
MIME_TYPE
dopo la variabile:@@@MIME_TYPE
Sostituisci
MIME_TYPE
con un tipo MIME di immagine, video, audio o documento supportato dal modello di destinazione.
Crea un modello di prompt e le istruzioni di sistema utilizzando uno dei seguenti metodi:
Notebook
Se vuoi eseguire l'ottimizzatore di prompt di Vertex AI tramite il notebook, crea istruzioni di sistema e un modello di prompt come segue:
In Colab Enterprise, apri il notebook dell'ottimizzatore di prompt di Vertex AI.
Nella sezione Creare un modello di prompt e le 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 basate su
question_answering_correctness
o sui calcoli, devi svolgere una delle seguenti operazioni:
Aggiungi la variabile
{target}
al modello del 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 hai risposte di verità oggettive per i tuoi prompt, ma hai utilizzato in precedenza i prompt con un modello Google e hai ottenuto i risultati mirati, puoi aggiungere il parametro
source_model
alla configurazione anziché aggiungere risposte di verità oggettive. Quando il parametrosource_model
è impostato, l'ottimizzatore dei prompt di Vertex AI esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati di fatto.
SDK
Se vuoi eseguire lo strumento di ottimizzazione dei prompt di Vertex AI tramite l'SDK senza utilizzare il notebook, crea file di testo per il modello di prompt e le istruzioni di sistema seguendo questa procedura:
Crea un file di testo per le istruzioni di sistema.
Nel file di testo, definisci 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.
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 basate su
question_answering_correctness
o sui calcoli, devi eseguire una delle seguenti operazioni:Aggiungi la variabile
{target}
al modello del 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 hai risposte di verità oggettive per i tuoi prompt, ma hai utilizzato in precedenza i prompt con un modello Google e hai ottenuto i risultati mirati, puoi aggiungere il parametro
source_model
alla configurazione anziché aggiungere risposte di verità oggettive. Quando il parametrosource_model
è impostato, l'ottimizzatore dei prompt di Vertex AI esegue i prompt di esempio sul modello di origine per generare le risposte basate su dati di fatto.
Preparare prompt di esempio
Per ottenere i risultati migliori dall'ottimizzatore di prompt di Vertex AI, utilizza 50-100 prompt di esempio.
- Lo strumento può comunque essere efficace con un minimo di 5 prompt di esempio.
- I campioni migliori includono esempi in cui il modello di destinazione ha un rendimento scadente.
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 dal modello di prompt.
- Nelle righe seguenti, aggiungi i dati di esempio che sostituiscono ogni variabile.
- Carica il file CSV in un bucket Cloud Storage.
Scegli una metrica di valutazione
L'ottimizzatore di prompt di Vertex AI utilizza le metriche di valutazione per ottimizzare le istruzioni di sistema e selezionare i prompt di esempio.
Scegli una delle
metriche di valutazione supportate o definisci la
tua metrica di valutazione personalizzata. Le metriche personalizzate sono utili quando quelle standard non si adattano alla tua applicazione. Puoi ottimizzare i prompt utilizzando più metriche.
Tuttavia, l'ottimizzatore dei prompt di Vertex AI supporta solo una metrica personalizzata alla volta. Ad esempio, puoi eseguire l'ottimizzatore dei prompt di Vertex AI
utilizzando una metrica personalizzata e la metrica bleu
oppure con le metriche bleu
, rouge
e
summarization_quality
, ma non puoi eseguire l'ottimizzatore dei prompt di Vertex AI
con più metriche personalizzate contemporaneamente.
Per creare una metrica personalizzata:
Crea un file di testo denominato
requirements.txt
.Nel file
requirements.txt
, definisci le librerie richieste per la funzione della metrica di valutazione personalizzata. Tutte le funzioni richiedono ilfunctions-framework
pacchetto.Ad esempio, il file
requirements.txt
per una metrica personalizzata che calcola ROUGE-L sarà simile al seguente:functions-framework==3.* rouge-score
Crea un file Python denominato
main.py
.Nel file
main.py
, scrivi la funzione di valutazione personalizzata. La funzione deve accettare quanto segue:- Richieste HTTP POST
- Input JSON contenente
response
, che è l'output dell'LLM, etarget
, che è la risposta del dato di fatto per il prompt.
Ad esempio, il file
main.py
per una metrica personalizzata che calcola ROUGE-L dovrebbe avere il seguente aspetto: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 'target' from the request payload. 'response' represents the model's response, while 'target' represents the ground truth response.""" response = request_json['response'] reference = request_json['target'] # 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.
Creare una configurazione
La configurazione dell'ottimizzatore di prompt di Vertex AI specifica i parametri da impostare per il job di ottimizzazione del prompt, tra cui:
- Modalità di ottimizzazione: specifica se l'ottimizzatore dei prompt di Vertex AI ottimizza le istruzioni di sistema, seleziona prompt di esempio da aggiungere alle istruzioni di sistema come esempi di pochi scatti o entrambe le opzioni.
- Metrica di valutazione: la metrica utilizzata dall'ottimizzatore dei prompt di Vertex AI per ottimizzare le istruzioni di sistema e/o selezionare i prompt di esempio.
- Modello di destinazione: il modello di Google per il quale l'ottimizzatore di prompt di Vertex AI ottimizza le istruzioni di sistema e/o seleziona i prompt di esempio da utilizzare.
Crea una configurazione utilizzando una delle seguenti opzioni:
Notebook
Se vuoi eseguire l'ottimizzatore di prompt di Vertex AI tramite il blocco note, crea una configurazione nel seguente modo:
In Colab Enterprise, apri il notebook dell'ottimizzatore di prompt di Vertex AI.
Nella sezione Configura le impostazioni del progetto:
- Nel campo PROJECT_ID, inserisci l'ID progetto.
- Nel campo LOCATION, inserisci la posizione in cui vuoi eseguire l'ottimizzatore dei prompt di Vertex AI.
- Nel campo OUTPUT_PATH, inserisci l'URI del bucket Cloud Storage in cui vuoi che lo strumento di ottimizzazione dei prompt di Vertex AI scriva le istruzioni di sistema ottimizzate e/o gli esempi con pochi scatti.
Ad esempio,
gs://bucket-name/output-path
. - Nel campo INPUT_PATH, inserisci l'URI per i prompt di esempio nel tuo bucket Cloud Storage. Ad esempio,
gs://bucket-name/sample-prompts.jsonl
.
Nella sezione Configura le impostazioni di ottimizzazione:
- Nel campo TARGET_MODEL, inserisci il modello per cui vuoi ottimizzare i prompt da utilizzare.
- In OPTIMIZATION_MODE, inserisci la modalità di ottimizzazione che vuoi utilizzare. Deve essere uno tra
instruction
,demonstration
oinstruction_and_demo
. - Nel campo EVAL_METRIC, inserisci la metrica di valutazione in base alla quale vuoi ottimizzare i prompt.
- (Facoltativo) Nel campo SOURCE_MODEL, inserisci il
modello Google con cui sono stati precedentemente utilizzati i prompt e le istruzioni del sistema. Quando il parametro
source_model
è impostato, l'ottimizzatore dei prompt di Vertex AI 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 raggiunto 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.
(Facoltativo) Nella sezione Configura le impostazioni di ottimizzazione avanzata, puoi anche aggiungere uno dei parametri facoltativi alla configurazione.
- Nel campo NUM_INST_OPTIMIZATION_STEPS, inserisci il numero di
Iterazioni utilizzate dall'ottimizzatore dei prompt di Vertex AI in
modalità di ottimizzazione delle istruzioni. Il tempo di esecuzione aumenta in modo lineare man mano che aumenti questo valore. Deve essere un numero intero compreso tra
10
e20
. Se non viene impostato, il valore predefinito è10
. - Nel campo NUM_TEMPLATES_PER_STEP, inserisci il numero di istruzioni di sistema generate e valutate dall'ottimizzatore dei prompt di Vertex AI. Utilizzato con la modalità di ottimizzazione
instruction
einstruction_and_demo
. Deve essere un numero intero compreso tra1
e4
. Se non viene impostato, il valore predefinito è2
. - Nel campo NUM_DEMO_OPTIMIZATION_STEPS, inserisci il numero di dimostrazioni valutate dall'ottimizzatore dei prompt di Vertex AI.
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
3
e6
. Se non viene impostato, il valore predefinito è3
. - Nel campo TARGET_MODEL_QPS, inserisci le query al secondo (QPS)
inviate dall'ottimizzatore dei prompt di Vertex AI al modello di destinazione.
Il tempo di esecuzione diminuisce in modo lineare con l'aumento di questo valore. Deve essere un valore float pari o superiore a
3.0
, ma inferiore alla quota QPS che hai nel modello di destinazione. Se non viene impostato, il valore predefinito è3.0
. - Nel campo SOURCE_MODEL_QPS, inserisci il numero di query al secondo
(QPS) che lo strumento di ottimizzazione dei prompt di Vertex AI invia al
modello di origine. Deve essere un numero compreso tra
3.0
e un valore maggiore, ma inferiore alla quota QPS disponibile nel modello di origine. Se non viene impostato, il valore predefinito è3.0
. - Nel campo EVAL_QPS, inserisci le query al secondo (QPS)
che l'ottimizzatore dei prompt di Vertex AI invia al
modello di valutazione,
gemini-1.5-pro
.- Per le metriche basate su modelli, deve essere un valore float maggiore o uguale a
3.0
, ma inferiore alla quota che hai pergemini-1.5-pro
. Se non viene impostato, il valore predefinito è3.0
. - Per le metriche personalizzate, deve essere un numero in virgola mobile maggiore o uguale a
3.0
. Questo determina la frequenza con cui l'ottimizzatore dei prompt di Vertex AI chiama le funzioni Cloud Run per le metrica personalizzata.
- Per le metriche basate su modelli, deve essere un valore float maggiore o uguale 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 di prompt di Vertex AI 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 dei prompt di Vertex AI utilizzi quando esegue l'ottimizzazione.
- Facoltativamente, nel campo EVAL_METRIC_3 inserisci una metrica di valutazione che vuoi utilizzare.
- Se vuoi, nel campo EVAL_METRIC_3_WEIGHT inserisci
- Nel campo METRIC_AGGREGATION_TYPE, inserisci il peso che vuoi che l'ottimizzatore dei prompt di Vertex AI utilizzi quando esegue l'ottimizzazione.
- Nel campo PLACEHOLDER_TO_VALUE, inserisci le informazioni che devono sostituire le eventuali variabili nelle istruzioni di sistema. Le informazioni incluse in questo flag non sono ottimizzate dall'ottimizzatore del prompt di Vertex AI.
- Nel campo RESPONSE_MIME_TYPE, inserisci il
tipo di risposta MIME
utilizzato dal modello di destinazione. Deve essere
text/plain
oapplication/json
. Se non viene impostato, il valore predefinito ètext/plain
. - Nel campo TARGET_LANGUAGE, inserisci la lingua delle istruzioni del sistema. Se non viene impostato, il valore predefinito è l'inglese.
SDK
Se vuoi eseguire l'ottimizzatore dei prompt di Vertex AI tramite l'SDK, crea un file JSON con i parametri che vuoi utilizzare per ottimizzare i prompt nel seguente modo:
Crea un file JSON con i parametri che vuoi utilizzare per ottimizzare i prompt. Ogni file di configurazione richiede i seguenti parametri:
{ "project": "PROJECT_ID", "system_instruction_path": "SYSTEM_INSTRUCTION_PATH", "prompt_template_path": "PROMPT_TEMPLATE_PATH", "target_model": "TARGET_MODEL", 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_PATH
: l'URI per le istruzioni di sistema nel bucket Cloud Storage. Ad esempio,gs://bucket-name/system-instruction.txt
.PROMPT_TEMPLATE
: l'URI per il modello di prompt nel bucket Cloud Storage. Ad esempio:gs://bucket-name/prompt-template.txt
TARGET_MODEL
: il modello per cui vuoi ottimizzare i prompt da utilizzare.EVALUATION_METRIC_PARAMETERS
: i parametri che specifichi dipendono dal numero di metriche di valutazione che utilizzi e se le metriche sono standard o personalizzate:Metrica standard singola
Se utilizzi una singola metrica di valutazione supportata, utilizza il seguente parametro:
"eval_metric": "EVALUATION_METRIC",
Sostituisci
EVALUATION_METRIC
con la metrica di valutazione per cui vuoi ottimizzare i prompt.Metrica personalizzata singola
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 esempio,custom_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 supportate, 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 di 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
.
Più metriche standard e personalizzate
Se utilizzi più metriche di valutazione che includono una combinazione di una metrica personalizzata e di 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 di 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 per i prompt di esempio nel bucket Cloud Storage. Ad esempio,gs://bucket-name/sample-prompts.jsonl
.OUTPUT_URI
: l'URI per il bucket Cloud Storage in cui vuoi che l'ottimizzatore di prompt di Vertex AI scriva le istruzioni di sistema ottimizzate e/o gli esempi di pochi scatti. Ad esempio,gs://bucket-name/output-path
.
Inoltre, puoi 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 la procedura di ottimizzazione complessiva, inclusa la durata e il numero di iterazioni di ottimizzazione eseguite, che influiscono direttamente sulla qualità delle ottimizzazioni.
- Selezione del modello e parametri di località. Questi parametri specificano i modelli utilizzati dall'ottimizzatore dei prompt di Vertex AI e le posizioni in cui vengono utilizzati.
- Parametri di latenza (QPS). Questi parametri controllano la QPS, influenzando la 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_template_eval_per_step": NUM_TEMPLATES_PER_STEP, "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 dall'ottimizzatore dei prompt di Vertex AI in modalità di ottimizzazione delle istruzioni. Il tempo di esecuzione aumenta in modo lineare man mano che aumenti questo valore. Deve essere un numero intero compreso tra10
e20
. Se non viene impostato, il valore predefinito è10
.NUM_TEMPLATES_PER_STEP
: il numero di istruzioni di sistema generate e valutate dall'ottimizzatore dei prompt di Vertex AI. Utilizzato con la modalità di ottimizzazioneinstruction
einstruction_and_demo
. Deve essere un numero intero compreso tra1
e4
. Se non viene impostato, il valore predefinito è2
.NUM_DEMO_OPTIMIZATION_STEPS
: il numero di dimostrazioni valutate dall'ottimizzatore dei prompt di Vertex AI. Utilizzato con la modalità di ottimizzazionedemonstration
einstruction_and_demo
. Deve essere un numero intero compreso tra10
e30
. 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 del modello e della posizione:
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 di Google con cui in precedenza venivano utilizzati i prompt e le istruzioni del sistema. Quando il parametrosource_model
è impostato, Vertex AI 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 raggiunto i risultati previsti, aggiungi al prompt le risposte di verità sul campo. 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
: il numero di query al secondo (QPS) che l'ottimizzatore dei prompt di Vertex AI invia al modello di destinazione. Il tempo di esecuzione diminuisce in modo lineare con l'aumento di questo valore. Deve essere un numero compreso tra3.0
e un valore maggiore, ma inferiore alla quota QPS che hai nel modello di destinazione. Se non viene impostato, il valore predefinito è3.0
.EVAL_QPS
: le query al secondo (QPS) inviate dall'ottimizzatore dei prompt di Vertex AI al modello di valutazione,gemini-1.5-pro
.- Per le metriche basate su modelli, deve essere un valore float maggiore o uguale a
3.0
, ma inferiore alla quota che hai pergemini-1.5-pro
. Se non viene impostato, il valore predefinito è3.0
. - Per le metriche personalizzate, deve essere un numero in virgola mobile maggiore o uguale a
3.0
. Questo determina la frequenza con cui l'ottimizzatore dei prompt di Vertex AI chiama le funzioni Cloud Run per le metrica personalizzata.
- Per le metriche basate su modelli, deve essere un valore float maggiore o uguale a
SOURCE_MODEL_QPS
: le query al secondo (QPS) inviate dall'ottimizzatore dei prompt di Vertex AI al modello di origine. Deve essere un numero compreso tra3.0
e un valore maggiore, ma inferiore alla quota QPS disponibile nel 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 esseretext/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 eventuali variabili nelle istruzioni di sistema. Le informazioni incluse in questo flag non sono ottimizzate dall'ottimizzatore dei prompt di Vertex AI.DATA_LIMIT
: la quantità di dati utilizzati per la convalida. Il tempo di esecuzione 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 di prompt di Vertex AI utilizzando una delle seguenti opzioni:
Notebook
Esegui l'ottimizzatore dei prompt di Vertex AI tramite il notebook, procedendo nel seguente modo:
In Colab Enterprise, apri il blocco note dell'ottimizzatore dei prompt di Vertex AI.
Nella sezione Esegui ottimizzatore dei prompt, fai clic su play_circle Esegui cella.
Viene eseguito l'ottimizzatore dei prompt di Vertex AI.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la posizione in cui vuoi eseguire l'ottimizzatore 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 delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
,
quindi esegui il comando seguente:
$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:
Python
Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Analizza i risultati ed esegui l'iterazione
Dopo aver eseguito l'ottimizzatore di prompt di Vertex AI, controlla l'avanzamento del job utilizzando una delle seguenti opzioni:
Notebook
Se vuoi visualizzare i risultati dell'ottimizzatore dei prompt di Vertex AI tramite il blocco note, procedi nel seguente modo:
Apri il blocco note dell'ottimizzatore dei prompt di Vertex AI.
Nella sezione Esamina i risultati:
Nel campo RESULT_PATH, aggiungi l'URI del bucket Cloud Storage in cui hai configurato l'ottimizzatore dei prompt di Vertex AI per 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. Nell'elenco viene visualizzato il job di addestramento personalizzato dell'ottimizzatore di prompt di Vertex AI 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 che ha lo stesso nome della modalità di ottimizzazione impiegata per valutare i prompt,
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'ottimizzazione didemonstration
e le istruzioni di sistema ottimizzate.La cartella contiene i seguenti file:
config.json
: la configurazione completa utilizzata dall'ottimizzatore dei prompt di Vertex AI.templates.json
: ogni insieme di istruzioni di sistema e/o esempi con pochi scatti generati dall'ottimizzatore di prompt di Vertex AI 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 e/o esempi di pochi scatti generati e il relativo punteggio di valutazione.optimized_results.json
: le istruzioni di sistema con il rendimento migliore e/o gli esempi con pochi scatti e il relativo punteggio di valutazione.
Per visualizzare le istruzioni di sistema ottimizzate, visualizza il
optimized_results.json
file.
Passaggi successivi
- Prova il notebook dell'SDK Vertex AI Prompt Optimizer.
- Scopri di più sulle best practice di AI responsabile e sui filtri di sicurezza di Vertex AI.
- Scopri di più sulle strategie di prompt.
- Esplora gli esempi di prompt nella galleria dei prompt.