Questo documento descrive come utilizzare l'ottimizzatore basato sui dati per ottimizzare automaticamente le prestazioni dei prompt migliorando le istruzioni di sistema per un insieme di prompt.
L'ottimizzatore basato sui dati può aiutarti a migliorare i prompt rapidamente e su larga scala, senza dover riscrivere manualmente le istruzioni di sistema o i singoli prompt. Ciò è particolarmente utile quando vuoi utilizzare le istruzioni e i prompt di sistema scritti per un determinato modello con un modello diverso.
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 basato sui dati. Per completare questa attività, devi preparare 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.
Template di prompt
Question: {input_question}
Facts: {input_context}
Prompt di esempio
input_question |
input_context |
|---|---|
| Quali sono alcune tecniche per cucinare la carne rossa e di maiale che massimizzano il sapore e la morbidezza riducendo al minimo la formazione di composti dannosi per la salute? | La carne rossa e di maiale deve essere cotta a una temperatura interna di 63 °C per garantire la sicurezza. Marinare la carne con ingredienti acidi come succo di limone o aceto può aiutare a renderla più tenera, scomponendo le fibre muscolari più dure. I metodi di cottura ad alte temperature, come la grigliatura e la rosolatura in padella, possono creare una deliziosa doratura e caramellizzazione, ma è importante evitare la carbonizzazione, che può produrre composti dannosi. |
| Quali sono alcuni modi creativi per aggiungere sapore e nutrimento ai frullati proteici senza utilizzare zuccheri aggiunti o ingredienti artificiali? | Aggiungere verdure a foglia verde come spinaci o cavolo riccio è 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 leggera dolcezza e una dose di grassi sani o elettroliti, rispettivamente. Sapevi che frullare troppo il tuo shake può effettivamente riscaldarlo? Per mantenere il composto fresco, frulla per brevi intervalli e fai riposare il frullatore 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 cosa ottimizzare. Può essere uno dei seguenti:
instruction: ottimizza l'istruzione di sistema.demonstration: seleziona i prompt di esempio da aggiungere all'istruzione di sistema come esempi few-shot.instruction_and_demo: esegue entrambe le azioni precedenti.
- Metriche di valutazione: le metriche utilizzate dall'ottimizzatore basato sui dati per ottimizzare le istruzioni di sistema e/o selezionare i prompt di esempio.
- Modello di destinazione: il modello Google per cui l'ottimizzatore basato sui dati ottimizza le istruzioni di sistema e seleziona i 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 punteggio di valutazione migliore per il modello di destinazione.
Al termine del job, l'ottimizzatore basato sui dati genera le istruzioni di sistema ottimizzate con il relativo punteggio di valutazione.
Metriche di valutazione
L'ottimizzatore 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 alla volta. Tuttavia, le metriche personalizzate possono essere utilizzate solo una 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 Crea un template 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 Crea metriche personalizzate.
Metriche di valutazione standard
L'ottimizzatore basato sui dati supporta metriche di valutazione personalizzate, oltre alle 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 alle domande dato un corpo di testo di riferimento. |
| 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 alle domande dato un corpo di testo di riferimento. | ||
| Coerenza | coherence |
Descrive la capacità del modello di fornire una risposta coerente e misura la fluidità logica e il senso 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 valutare la qualità di una traduzione rispetto al riferimento. | |
| MetricX | metricx** |
Descrive la capacità del modello di valutare la qualità di una traduzione. | |
| Basata su 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 esaminata solo la prima chiamata dello 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. | ||
| Generazione di testi generici | bleu* |
Contiene il risultato di un algoritmo per la valutazione della qualità della previsione, che è stata tradotta da un linguaggio naturale a un 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 question_answering_correctness o basate sul calcolo, devi eseguire una delle seguenti operazioni:
- Aggiungi una variabile che rappresenta la risposta basata su dati di fatto per i tuoi prompt al tuo template di prompt.
Se non hai dati di fatto per i tuoi prompt, ma li hai utilizzati in precedenza con un modello Google e hai ottenuto i risultati target, puoi aggiungere il parametro
source_modelalla tua configurazione anziché aggiungere dati di fatto. Quando il parametrosource_modelè impostato, l'ottimizzatore basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte di fatto.Il parametro
source_modeldeve essere utilizzato solo per l'upgrade o la migrazione del modello.
** Se vuoi ottimizzare i prompt utilizzando comet o metricx, devi fornire alla configurazione il parametro translation_source_field_name, che specifica il nome del campo corrispondente del testo di origine nei dati. Inoltre, il valore di MetricX è stato modificato in un intervallo compreso tra 0 (peggiore) e 25 (migliore) per rispettare la proprietà "più grande è, meglio è".
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 i seguenti ruoli IAM all'account di servizio predefinito di Compute Engine nel progetto:
- Utente della piattaforma agente (
roles/aiplatform.user) - Storage Object Admin (
roles/storage.objectAdmin) - Artifact Registry Reader (
roles/artifactregistry.reader) -
Se utilizzi metriche personalizzate:
- Cloud Run Developer (
roles/run.developer) - Cloud Run Invoker (
roles/run.invoker) - Agent Platform Service Agent (
roles/aiplatform.serviceAgent)
- Cloud Run Developer (
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 le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
Ottimizza i prompt
Puoi ottimizzare i prompt nei seguenti modi:
- utilizzando l'ottimizzatore dei prompt di Gemini Enterprise Agent Platform nella console di Gemini Enterprise Agent Platform
- utilizzando l'API Agent Platform
- eseguendo il notebook dell'ottimizzatore dei prompt di Agent Platform.
Per ottimizzare i prompt, scegli il metodo che vuoi utilizzare, quindi completa i passaggi descritti in dettaglio nelle sezioni seguenti:
- Crea un template di prompt e le istruzioni di sistema
- Prepara prompt di esempio
- (Facoltativo) Crea metriche personalizzate
- Crea una configurazione
- Esegui il job di ottimizzazione dei prompt
- Analizza i risultati e itera
Crea un template di prompt e le istruzioni di sistema
I template di prompt definiscono il formato di tutti i prompt tramite variabili sostituibili. Quando utilizzi un template di prompt per ottimizzare i prompt, le variabili vengono sostituite dai dati nel set di dati dei prompt.
Le variabili del template 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_TYPEdopo la variabile:@@@MIME_TYPE
Sostituisci
MIME_TYPEcon un tipo MIME di immagine, video, audio o documento supportato dal modello di destinazione.
Crea un template di prompt e le istruzioni di sistema utilizzando uno dei seguenti metodi:
Notebook
Se vuoi eseguire l'ottimizzatore basato sui dati tramite il notebook, crea le istruzioni di sistema e un template di prompt nel seguente modo:
In Colab Enterprise, apri il notebook dell'ottimizzatore dei prompt di Gemini Enterprise Agent Platform.
Vai al notebook dell'ottimizzatore dei prompt di Gemini Enterprise Agent Platform
Nella sezione Crea un template 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 template 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_correctnesso basate sul calcolo, devi eseguire una delle seguenti operazioni:
Aggiungi la variabile
{target}al template 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 hai risposte di dati di fatto per i tuoi prompt, ma hai utilizzato in precedenza i prompt con un modello Google e hai ottenuto i risultati target, puoi aggiungere il parametro
source_modelalla tua configurazione anziché aggiungere risposte di dati di fatto. Quando il parametrosource_modelè impostato, l'ottimizzatore basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte di dati di fatto.
SDK
Se vuoi eseguire l'ottimizzatore basato sui dati tramite l'SDK senza utilizzare il notebook, crea file di testo per il template di prompt e le istruzioni di sistema seguendo questi passaggi:
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 template di prompt.
Nel file di testo, definisci un template 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_correctnesso basate sul calcolo, devi eseguire una delle seguenti operazioni:Aggiungi la variabile
{target}al template 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 hai risposte di dati di fatto per i tuoi prompt, ma hai utilizzato in precedenza i prompt con un modello Google e hai ottenuto i risultati target, puoi aggiungere il parametro
source_modelalla tua configurazione anziché aggiungere risposte di dati di fatto. Quando il parametrosource_modelè impostato, l'ottimizzatore basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte di fatto.
Prepara 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 con un minimo di 5 prompt di esempio.
- I campioni migliori includono esempi in cui il modello target ha un rendimento scarso ed esempi in cui il modello target ha un rendimento elevato.
I prompt di esempio contengono i dati che sostituiscono le variabili nel template 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 template di prompt.
- Nelle righe seguenti, aggiungi i dati di esempio che sostituiscono ogni variabile.
- Carica il file CSV in un bucket Cloud Storage.
(Facoltativo) Crea metriche personalizzate
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 il pacchettofunctions-framework.Ad esempio, il file
requirements.txtper una metrica personalizzata che calcola ROUGE-L sarebbe 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, ovvero l'output dell'LLM, ereference, ovvero la risposta di dati di fatto per il prompt, se fornita nel set di dati del prompt.
Ad esempio, il file
main.pyper 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 essere la stessa regione in cui viene utilizzato 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.
Tieni presente che i modelli Gemma non dispongono di API gestite su Gemini Enterprise Agent Platform. Per utilizzare un modello Gemma, devi prima eseguire il deployment di un modello Gemma con ottimizzazione delle istruzioni (-it) in Model Garden o sulla tua macchina locale. Per saperne di più sul deployment in Model Garden, consulta Utilizza i modelli aperti Gemma.
Per saperne di più sul deployment sulla tua macchina locale, consulta Esegui Gemma con Ollama.
Crea una configurazione utilizzando una delle seguenti opzioni:
Notebook
Se vuoi eseguire l'ottimizzatore basato sui dati tramite il notebook, crea una configurazione seguendo questi passaggi:
In Colab Enterprise, apri il notebook dell'ottimizzatore basato sui dati.
Vai al notebook dell'ottimizzatore dei prompt di Gemini Enterprise Agent Platform
Nella sezione Configura le impostazioni progetto, segui questi passaggi:
- Nel campo PROJECT_ID, inserisci l'ID progetto.
- Nel campo LOCALITÀ, 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 l'ottimizzatore 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 tuo 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 cui vuoi ottimizzare i prompt.
- Nel campo THINKING_BUDGET, inserisci il budget di pensiero per il modello di destinazione per cui vuoi ottimizzare i prompt. Il valore predefinito è -1, il che significa che non viene eseguito il ragionamento per i modelli non di ragionamento e viene eseguito il ragionamento automatico per i modelli di ragionamento come Gemini 2.5. Consulta la sezione In fase di valutazione per scoprire di più sulle impostazioni manuali del budget.
- In OPTIMIZATION_MODE, inserisci la modalità di ottimizzazione che vuoi utilizzare. Deve essere uno dei seguenti:
instruction: ottimizza l'istruzione di sistema.demonstration: seleziona i prompt di esempio da aggiungere alle istruzioni di sistema come esempi few-shot.instruction_and_demo: esegue entrambe le azioni precedenti.
- Nel campo EVAL_METRIC, inserisci una metrica di valutazione per cui vuoi ottimizzare i prompt.
- (Facoltativo) Nel campo SOURCE_MODEL, inserisci il modello Google con cui sono stati utilizzati in precedenza le istruzioni di sistema e i prompt. Quando il parametro
source_modelè impostato, l'ottimizzatore basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte di fatto per te, per le metriche di valutazione che richiedono risposte di fatto. Se in precedenza non hai eseguito i prompt con un modello Google o non hai ottenuto i risultati target, aggiungi risposte di dati di fatto al prompt. Per saperne di più, consulta la sezione Crea un prompt e le istruzioni di sistema di questo documento.
(Facoltativo) Nella sezione Configura le impostazioni di ottimizzazione avanzate, puoi aggiungere alla configurazione uno qualsiasi dei parametri facoltativi.
- Nel campo NUM_INST_OPTIMIZATION_STEPS, inserisci il numero di iterazioni utilizzate dall'ottimizzatore basato sui dati in modalità di ottimizzazione delle istruzioni. Il runtime aumenta in modo lineare man mano che aumenti questo valore. Deve essere un numero intero compreso tra
10e20. 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
demonstrationeinstruction_and_demo. Deve essere un numero intero compreso tra10e30. 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
2e 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.
Il tempo di esecuzione diminuisce in modo lineare man mano che aumenti questo valore. Deve essere un
valore float pari o superiore a
3.0, ma inferiore alla quota QPS del modello di destinazione. Se non viene impostato, il valore predefinito è3.0. - Nel campo SOURCE_MODEL_QPS, inserisci le query al secondo (QPS) che l'ottimizzatore 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 di QPS che hai per il 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 basato sui dati invia al servizio di valutazione dell'AI generativa o alla funzione Cloud Run.
- Per le metriche basate su modelli, deve essere un valore 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 frequenza con cui l'ottimizzatore basato sui dati chiama le funzioni Cloud Run della metrica personalizzata.
- Per le metriche basate su modelli, deve essere un valore in virgola mobile pari o superiore a
- Se vuoi utilizzare più di una metrica di valutazione, segui questi passaggi:
- Nel campo EVAL_METRIC_1, inserisci una metrica di valutazione che vuoi utilizzare.
- Nel campo EVAL_METRIC_1_WEIGHT, inserisci la ponderazione 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 la ponderazione 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 la ponderazione che vuoi che l'ottimizzatore 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 eventuali 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 della risposta utilizzato dal modello di destinazione. Deve essere
text/plainoapplication/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 seguendo questi passaggi:
Crea un file JSON con i parametri che vuoi utilizzare per ottimizzare i prompt. Ogni file di configurazione richiede i seguenti parametri. La configurazione varia leggermente tra
vertexai.types.PromptOptimizerMethod.OPTIMIZATION_TARGET_GEMINI_NANOevertexai.types.PromptOptimizerMethod.VAPO.VAPO
{ "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" }GEMINI_NANO
{ "project": "PROJECT_ID", "system_instruction": "SYSTEM_INSTRUCTION", "prompt_template": "PROMPT_TEMPLATE", "target_model": "TARGET_MODEL", "target_model_endpoint_url": "BASE_URL", 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 template di prompt.TARGET_MODEL: il modello per cui vuoi ottimizzare i prompt. PerOPTIMIZATION_TARGET_GEMINI_NANO, utilizza un modello ottimizzato per le istruzioni (-it).BASE_URL: l'URL di base del modello di cui è stato eseguito il deployment in Model Garden o sulla tua macchina locale. Ad esempio:https://<var>DEDICATED_ENDPOINT_DNS</var>/v1beta1/projects/<var>PROJECT_NUMBER</var>/locations/<var>LOCATION</var>/endpoints/<var>ENDPOINT_ID</var>ohttp://localhost:8000/v1. Obbligatorio per la configurazione diOPTIMIZATION_TARGET_GEMINI_NANO.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 viene eseguito alcun ragionamento per i modelli non di ragionamento e viene eseguito il ragionamento automatico per i modelli di ragionamento come Gemini 2.5. Per scoprire di più sulle impostazioni manuali del budget, consulta Thinking. Tieni presente che alcuni modelli, come i modelli Gemma, non supportanothinking_budget.EVALUATION_METRIC_PARAMETERS: i parametri che specifichi dipendono dal numero di metriche di valutazione che utilizzi e dal fatto che le metriche siano standard o personalizzate:Singola metrica standard
Se utilizzi una singola metrica di valutazione standard, utilizza il seguente parametro:
"eval_metric": "EVALUATION_METRIC",
Sostituisci
EVALUATION_METRICcon 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 di 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 essereweighted_sumoweighted_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 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 di ogni metrica. Deve essere un array.METRIC_AGGREGATION_TYPE: il tipo di aggregazione utilizzato per le metriche di valutazione. Deve essereweighted_sumoweighted_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 dei seguenti:instruction: ottimizza l'istruzione di sistema.demonstration: seleziona i prompt di esempio da aggiungere alle istruzioni di sistema come esempi few-shot.instruction_and_demo: esegue entrambe le azioni precedenti.
SAMPLE_PROMPT_URI: l'URI dei prompt di esempio nel tuo bucket Cloud Storage. Ad esempio,gs://bucket-name/sample-prompts.jsonl.OUTPUT_URI: l'URI del bucket Cloud Storage in cui vuoi che l'ottimizzatore basato sui dati scriva le istruzioni di sistema ottimizzate e/o gli esempi di 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.
- Parametri di selezione e posizione del modello. Questi parametri specificano i modelli utilizzati dall'ottimizzatore basato sui dati e le località 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.
Visualizza 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 dall'ottimizzatore basato sui dati in modalità di ottimizzazione delle istruzioni. Il runtime aumenta in modo lineare man mano che aumenti questo valore. Deve essere un numero intero compreso tra10e20. Se non viene impostato, il valore predefinito è10.NUM_DEMO_OPTIMIZATION_STEPS: il numero di dimostrazioni valutate dall'ottimizzatore basato sui dati. Utilizzato con la modalità di ottimizzazionedemonstrationeinstruction_and_demo. Deve essere un numero intero compreso tra2e 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 tra3e6. Se non viene impostato, il valore predefinito è3.
Parametri di selezione e posizione del modello:
TARGET_MODEL_LOCATION: la località 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 sono state utilizzate in precedenza le istruzioni di sistema e i prompt. Quando il parametrosource_modelè impostato, l'ottimizzatore basato sui dati esegue i prompt di esempio sul modello di origine per generare le risposte di dati di fatto per le metriche di valutazione che richiedono risposte di 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 dati di fatto al prompt. Per saperne di più, consulta la sezione Crea un prompt e le istruzioni di sistema di questo documento.SOURCE_MODEL_LOCATION: la località 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) inviate dall'ottimizzatore basato sui dati al modello di destinazione. Il tempo di esecuzione diminuisce in modo lineare man mano che aumenti questo valore. Deve essere un valore in virgola mobile pari o superiore a3.0, ma inferiore alla quota QPS del modello di destinazione. Se non viene impostato, il valore predefinito è3.0.EVAL_QPS: le query al secondo (QPS) che l'ottimizzatore basato sui dati invia al servizio di valutazione dell'AI generativa o alla funzione Cloud Run.- Per le metriche basate su modelli, deve essere un valore 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 frequenza con cui l'ottimizzatore basato sui dati chiama le funzioni Cloud Run della metrica personalizzata.
- Per le metriche basate su modelli, deve essere un valore in virgola mobile pari o superiore a
SOURCE_MODEL_QPS: le query al secondo (QPS) che l'ottimizzatore basato sui dati invia al modello di origine. Deve essere un numero in virgola mobile maggiore o uguale a3.0, ma inferiore alla quota di QPS che hai per il 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/plainoapplication/json. Se non viene impostato, il valore predefinito ètext/plain.TARGET_LANGUAGE: la lingua delle istruzioni di 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 vengono ottimizzate dall'ottimizzatore dei prompt basato sui dati.DATA_LIMIT: la quantità di dati utilizzati per la convalida. Il runtime aumenta in modo lineare con questo valore. Deve essere un numero intero compreso tra5e100. 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 notebook seguendo questi passaggi:
In Colab Enterprise, apri il notebook dell'ottimizzatore dei prompt di Gemini Enterprise Agent Platform.
Nella sezione Esegui l'ottimizzatore dei prompt, fai clic su play_circle Esegui cella.
Viene eseguito l'ottimizzatore basato sui dati.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION: la località in cui vuoi eseguire l'ottimizzatore dei prompt di Gemini Enterprise Agent Platform.
- PROJECT_ID: il tuo ID progetto.
- JOB_NAME: un nome per il job di ottimizzazione dei prompt di Gemini Enterprise Agent Platform.
- 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,
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:
SDK
Esegui l'ottimizzatore basato sui dati tramite l'SDK aggiungendo le seguenti sezioni di codice a Colab o al 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 nella console Google Cloud .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 Agent Platform SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)
#Create the Agent Platform 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 Agent Platform Prompt Optimizer
client = client.prompt_optimizer.optimize(method=vertexai.types.PromptOptimizerMethod.VAPO, config=vapo_config)
Per utilizzare il modello Gemma come modello di destinazione, apporta le seguenti modifiche:
nano_config = vertexai.types.PromptOptimizerConfig(
config_path="gs://sample-bucket/config_nano.json",
service_account_project_number=project_number,
wait_for_completion=True
)
# Simpler version
# nano_config = {
# "config_path": "gs://sample-bucket/config_nano.json",
# "service_account": service_account,
# "wait_for_completion": True
# }
logging.basicConfig(encoding='utf-8', level=logging.INFO, force=True)
client.prompt_optimizer.optimize(
method=vertexai.types.PromptOptimizerMethod.OPTIMIZATION_TARGET_GEMINI_NANO,
config=nano_config
)
Al termine dell'ottimizzazione, esamina gli artefatti di output nella posizione di output specificata nella configurazione.
Analizza i risultati ed esegui l'iterazione
Dopo aver eseguito l'ottimizzatore basato sui dati, esamina l'avanzamento del job utilizzando una delle seguenti opzioni:
Notebook
Se vuoi visualizzare i risultati dell'ottimizzatore basato sui dati tramite il notebook, segui questi passaggi:
Apri il notebook di ottimizzazione dei prompt di Gemini Enterprise Agent Platform.
Nella sezione Esamina i risultati, segui questi passaggi:
Nel campo RESULT_PATH, aggiungi l'URI del bucket Cloud Storage che hai configurato per l'ottimizzatore basato sui dati 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 Agent Platform, 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, esamina 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,
instructionodemonstration. Se hai utilizzato la modalitàinstruction_and_demo, vengono visualizzate entrambe le cartelle. La cartellainstructioncontiene i risultati dell'ottimizzazione delle istruzioni di sistema, mentre la cartellademonstrationcontiene i risultati dell'ottimizzazione didemonstratione le istruzioni di sistema ottimizzate.La cartella contiene i seguenti file:
config.json: la configurazione completa utilizzata dall'ottimizzatore dei prompt di Gemini Enterprise Agent Platform.templates.json: ogni insieme di istruzioni di sistema e/o esempi di few-shot generati dall'ottimizzatore basato sui dati e il relativo punteggio di valutazione.eval_results.json: la risposta del modello target 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
globale il job personalizzato Vertex non supportaglobalcome regione. Pertanto, non utilizzare VAPO per ottimizzare i modelli di anteprima come modello di destinazione.Per i modelli GA, gli utenti possono selezionare le località specifiche della regione, ad esempio
us-central1oeurope-central2anzichéglobal, per soddisfare i requisiti di residenza dei dati.
Passaggi successivi
- Prova il notebook dell'SDK dell'ottimizzatore dei prompt di Gemini Enterprise Agent Platform.
- Scopri di più sulle best practice per l'AI responsabile e sui filtri di sicurezza di Agent Platform.
- Scopri di più sulle strategie di prompting.