Ottimizzare i prompt

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 dei prompt di Vertex AI può aiutarti a migliorare i tuoi prompt rapidamente su larga scala, senza dover riscrivere manualmente le istruzioni di sistema singoli prompt. Ciò è particolarmente utile quando vuoi utilizzare le impostazioni istruzioni e prompt scritti per un modello con un modello diverso.

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 tuoi 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 informazioni contestuali per rispondere a domande di cucina, puoi usare Ottimizzatore dei prompt Vertex AI. Per completare questa attività, ti prepari gli input sono 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? La carne rossa e la carne di maiale devono essere cotte a una temperatura interna di 145 gradi Fahrenheit (63 gradi Celsius) per garantire la sicurezza. Può essere utile marinare la carne con ingredienti acidi, come succo di limone o aceto. soffrire meglio scomponendo le fibre muscolari dure. Metodi di cottura a temperatura elevata come la cottura alla griglia o la padella può creare una doratura deliziosa e ma è importante evitare le scottature, che possono produrre 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, come spinaci o cavolo, è un ottimo modo per aumentare valore nutrizionale del tuo frullato senza alterare 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, valutazione metrica e 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 per l'ottimizzazione del sistema

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 in modo da utilizzarle 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
Basato sul modello Riassumi summarization_quality Descrive la capacità del modello di rispondere a domande dato un corpo di testo a 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 fornisce misure il flusso logico e la logica del testo generato.
Sicurezza safety Descrive il livello di sicurezza del modello, ovvero se la risposta contiene testo non sicuro.
Padronanza fluency Descrive la padronanza della lingua del modello.
Maratona groundedness Descrive la capacità del modello di fornire informazioni o fare riferimento a informazioni incluse solo nel testo inserito.
In base ai calcoli Utilizzo degli strumenti e chiamate di funzione tool_call_valid* Descrive la capacità del modello di prevedere una chiamata d'uso valida.
tool_name_match* Descrive la capacità del modello di prevedere la chiamata di uno strumento con lo strumento corretto . Viene ispezionata solo la prima chiamata dello strumento.
tool_parameter_key_match* Descrive la capacità del modello di prevedere la chiamata di uno strumento con il valore i nomi dei parametri.
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 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 il tuo modello di prompt.
  • Se non disponi di risposte basate su dati empirici reali per i tuoi prompt, ma in precedenza avevi ha utilizzato i prompt con un modello Google hai ottenuto i risultati target, puoi aggiungere il parametro source_model la configurazione invece di aggiungere risposte basate su dati empirici reali. Se il parametro source_model è impostato, Vertex AI esegue di prompt di esempio sul modello di origine per generare risposte basate su dati empirici reali per te.

Prima di iniziare

Ottimizza i prompt

Puoi ottimizzare i prompt eseguendo Blocco note dell'ottimizzatore dei prompt di Vertex AI, o l'API Vertex AI. Per ottimizzare i prompt, scegli il metodo che vuoi utilizzare per eseguire l'ottimizzazione dei prompt di Vertex AI, quindi i passaggi come descritto in dettaglio nelle seguenti sezioni:

  1. Crea un modello di prompt e le istruzioni di sistema
  2. Preparare prompt di esempio
  3. Scegliere una metrica di valutazione
  4. Creare una configurazione
  5. Esegui il job di ottimizzazione del prompt
  6. Analizzare i risultati ed eseguire l'iterazione

Crea un modello di prompt e le istruzioni di sistema

I modelli di prompt definiscono il formato di tutti i prompt tramite come la codifica one-hot delle variabili categoriche. Quando utilizzi un modello di prompt per ottimizzare i prompt, 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:

Blocco note

Se vuoi eseguire l'ottimizzatore di prompt di Vertex AI tramite il notebook, crea istruzioni di sistema e un modello di prompt come segue:

  1. In Colab Enterprise, apri il prompt di Vertex AI ottimizzatore di blocco note.

    Vai al blocco note dell'ottimizzatore dei prompt di Vertex AI

  2. Nella sezione Crea un modello di prompt e le istruzioni di sistema, procedi nel seguente modo: le seguenti:

    1. 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.
      
    2. Nel campo PROMPT_TEMPLATE, inserisci il modello di prompt. Per esempio:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. Se vuoi ottimizzare i tuoi prompt utilizzando il comando question_answering_correctness o valutazioni basate sul calcolo, deve 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 basate su dati empirici reali per i tuoi prompt, ma in precedenza ha utilizzato i prompt modello Google e hai ottenuto risultati mirati, puoi aggiungere il parametro source_model configurazione anziché aggiungere dati empirici reali diverse. 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.

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 nel seguente modo:

  1. Crea un file di testo per le istruzioni di sistema.

  2. Nel file di testo, definisci le istruzioni di sistema. Per 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.
    
  3. Crea un file di testo per il modello di prompt.

  4. Nel file di testo, definisci un modello di prompt che includa uno o più come la codifica one-hot delle variabili categoriche. Ad esempio:

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. 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 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 prompt, ma hai utilizzato in precedenza i prompt con un modello Google e hai ottenuto i risultati previsti, puoi aggiungere il parametro source_model alla configurazione anziché aggiungere le risposte di riferimento. 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.

Prepara 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 solo cinque prompt di esempio.
  • I campioni migliori includono esempi in cui il modello di destinazione ha un rendimento scadente.
di Gemini Advanced.

I prompt di esempio contengono i dati che sostituiscono le variabili nel prompt modello. Puoi utilizzare un file JSONL o CSV per archiviare i prompt di esempio.

File JSONL

  1. Creare un file JSONL.
  2. 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"}
    
  3. Carica il file JSONL in un bucket Cloud Storage.

File CSV

  1. Crea un file CSV.
  2. Nella prima riga, aggiungi le variabili dal modello di prompt.
  3. Nelle righe seguenti, aggiungi i dati di esempio che sostituiscono ogni variabile.
  4. 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 le tue una propria metrica di valutazione personalizzata. Le metriche personalizzate sono utili quando le metriche standard non sono adatti alla tua applicazione. Puoi ottimizzare i prompt utilizzando più metriche. Tuttavia, l'ottimizzatore dei prompt di Vertex AI supporta una sola metrica personalizzata alla volta. Ad esempio, potresti eseguire l'ottimizzazione dei prompt di Vertex AI utilizzando una metrica personalizzata e la metrica bleu oppure con i bleu, rouge e summarization_quality, ma non puoi eseguire il prompt di Vertex AI ottimizzatore con più metriche personalizzate contemporaneamente.

Per creare una metrica personalizzata:

  1. Crea un file di testo denominato requirements.txt.

  2. Nel file requirements.txt, definisci le librerie richieste per l'elemento di valutazione. Tutte le funzioni richiedono il functions-framework pacchetto.

    Ad esempio, il file requirements.txt per una metrica personalizzata che calcola ROUGE-L sarebbe simile al seguente:

    functions-framework==3.*
    rouge-score
    
  3. Crea un file Python denominato main.py.

  4. 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 dell'LLM, e target, 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',
       })
    
  5. Esegui il deployment della funzione di valutazione personalizzata come funzione Cloud Run eseguendo il comando gcloud functions deloy:

    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: nome della valutazione personalizzata in un file di dati.
    • PROJECT_ID: il tuo ID progetto.
    • REGION: la regione in cui vuoi eseguire il deployment personalizzata.

Creare una configurazione

La configurazione dell'ottimizzatore dei prompt di Vertex AI specifica i parametri da impostare per il job di ottimizzazione dei 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:

Blocco note

Se vuoi eseguire l'ottimizzazione dei prompt di Vertex AI tramite blocco note, crea una configurazione seguendo questa procedura:

  1. In Colab Enterprise, apri il prompt di Vertex AI ottimizzatore di blocco note.

    Vai al blocco note dell'ottimizzatore dei prompt di Vertex AI

  2. Nella sezione Configura le impostazioni del progetto, segui questi passaggi:

    1. Nel campo PROJECT_ID, inserisci l'ID progetto.
    2. Nel campo LOCATION, inserisci la posizione in cui vuoi eseguire il Vertex AI Prompt ottimizzatore.
    3. 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.
    4. Nel campo INPUT_PATH, inserisci l'URI dell'esempio nel tuo bucket Cloud Storage. Ad esempio: gs://bucket-name/sample-prompts.jsonl.
  3. Nella sezione Configura le impostazioni di ottimizzazione, procedi nel seguente modo:

    1. Nel campo TARGET_MODEL, inserisci il modello per cui vuoi ottimizzare i prompt da utilizzare.
    2. In OPTIMIZATION_MODE, entra nella modalità di ottimizzazione che desideri per gli utilizzi odierni. Deve essere instruction, demonstration o instruction_and_demo.
    3. Nel campo EVAL_METRIC, inserisci il valore metrica di valutazione che vuoi per ottimizzare i tuoi prompt.
    4. (Facoltativo) Nel campo SOURCE_MODEL, inserisci il modello Google con cui sono stati precedentemente utilizzati i prompt e le istruzioni di sistema. Quando Il parametro source_model è impostato, il prompt di Vertex AI ottimizzatore esegue i prompt di esempio sul modello di origine per generare risposte basate su dati empirici reali per te, per le metriche di valutazione che richiedono le risposte basate su dati empirici reali. 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 ulteriori informazioni, consulta Crea un prompt e le istruzioni di sistema di questo documento.
  4. (Facoltativo) Nella sezione Configura le impostazioni di ottimizzazione avanzate, puoi aggiungere qualsiasi parametro facoltativo ai tuoi configurazione.

  5. Visualizza i parametri facoltativi
    • Nel campo NUM_INST_OPTIMIZATION_STEPS inserisci il numero di iterazioni usate dal prompt ottimizzatore di Vertex AI la 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 e 20. Se lasciato non viene configurato, 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. Utilizzata con instruction e instruction_and_demo modalità di ottimizzazione. Deve essere un numero intero compreso tra 1 e 4. Se lasciato non viene configurato, 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 le modalità di ottimizzazione demonstration e instruction_and_demo. Deve essere un numero intero compreso tra 10 e 30. Se non viene configurato, 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 e 6. Se non viene configurato, il valore predefinito è 3.
    • Nel campo TARGET_MODEL_QPS, inserisci le query al secondo (QPS) che l'ottimizzatore dei prompt di Vertex AI invia al modello target. Il tempo di esecuzione diminuisce in modo lineare man mano che aumenti questo valore. Deve essere un numero in virgola mobile pari o superiore 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 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 configurato, Il valore predefinito è 3.0.
    • Nel campo EVAL_QPS, inserisci le query al secondo (QPS) che l'ottimizzatore dei prompt di Vertex AI invia alla valutazione modello gemini-1.5-pro.
      • Per le metriche basate su modello, deve essere un numero in virgola mobile pari a 3.0 o maggiore, ma inferiore alla quota a tua disposizione gemini-1.5-pro. Se non viene configurato, 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 metriche personalizzate.
    • Se vuoi utilizzare più di una metrica di valutazione, procedi nel seguente modo:
      1. Nel campo EVAL_METRIC_1, inserisci una metrica di valutazione che vuoi utilizzare.
      2. Nel campo EVAL_METRIC_1_WEIGHT, inserisci la ponderazione che che l'ottimizzatore dei prompt di Vertex AI utilizzi durante l'esecuzione l'ottimizzazione.
      3. Nel campo EVAL_METRIC_2, inserisci una metrica di valutazione che che vuoi usare.
      4. Nel campo EVAL_METRIC_2_WEIGHT, inserisci il peso che vuoi che l'ottimizzatore dei prompt di Vertex AI utilizzi quando esegue l'ottimizzazione.
      5. Facoltativamente, nel campo EVAL_METRIC_3 inserisci una metrica di valutazione che vuoi utilizzare.
      6. Se vuoi, nel campo EVAL_METRIC_3_WEIGHT inserisci
      7. Nel campo METRIC_AGGREGATION_TYPE, inserisci la ponderazione che l'ottimizzatore dei prompt di Vertex AI utilizzi durante l'esecuzione l'ottimizzazione.
    • Nel campo PLACEHOLDER_TO_VALUE, inserisci le informazioni che devono sostituire le eventuali variabili nelle istruzioni di sistema. Informazioni incluse all'interno di questo flag non è ottimizzato dal prompt di Vertex AI ottimizzatore.
    • Nel campo RESPONSE_MIME_TYPE, inserisci il Tipo di risposta MIME utilizzati dal modello di destinazione. Deve essere text/plain o application/json. Se non viene configurato, il valore predefinito è text/plain.
    • Nel campo TARGET_LANGUAGE, inserisci la lingua del sistema istruzioni. Se non viene impostato, il valore predefinito è l'inglese.

SDK

Se vuoi eseguire l'ottimizzazione dei prompt di Vertex AI tramite SDK, crea un file JSON con i parametri che vuoi utilizzare ottimizzare i prompt seguendo questi passaggi:

  1. Crea un file JSON con i parametri da 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.
    • 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 metrica di valutazione che per cui vuoi ottimizzare i tuoi prompt.

      Metrica personalizzata singola

      Se utilizzi un singolo metrica di valutazione personalizzata, utilizza la 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 che corrisponde a final_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: la ponderazione per ogni metrica. Deve essere un array.
      • METRIC_AGGREGATION_TYPE: il tipo di e l'aggregazione utilizzata per le metriche di valutazione. Deve essere uno tra weighted_sum o weighted_average. Se non viene configurato, Il valore predefinito è weighted_sum.

      Più elementi standard e metriche 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 di le metriche di valutazione standard. Deve essere un array. Ad esempio, "bleu", "summarization_quality".
      • EVAL_METRICS_WEIGHTS: la ponderazione per ogni metrica. Deve essere un array.
      • METRIC_AGGREGATION_TYPE: il tipo di e l'aggregazione utilizzata per le metriche di valutazione. Deve essere uno tra weighted_sum o weighted_average. Se non viene configurato, Il valore predefinito è weighted_sum.
      • CUSTOM_METRIC_NAME: nome della metrica, come definito dalla chiave che corrisponde a final_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 instruction, demonstration o instruction_and_demo.

    • SAMPLE_PROMPT_URI: l'URI dell'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 dei prompt di Vertex AI scriva le istruzioni di sistema ottimizzate e/o gli esempi di pochi scatti. Ad esempio, gs://bucket-name/output-path.

  2. Puoi inoltre aggiungere qualsiasi parametro facoltativo ai tuoi di configurazione del deployment.

    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 località in cui vengono utilizzati.
    • Parametri di latenza (QPS). Questi parametri controllano le QPS, 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 tra 10 e 20. Se Se non viene configurato, il valore predefinito è 10.
        • NUM_TEMPLATES_PER_STEP: il numero del sistema Istruzioni generate dall'ottimizzatore dei prompt di Vertex AI e valuta. Utilizzato con la modalità di ottimizzazione instruction e instruction_and_demo. Deve essere un numero intero compreso tra 1 e 4. Se non viene impostato, il valore predefinito è 2.
        • NUM_DEMO_OPTIMIZATION_STEPS: il numero di dimostrazioni che il motore di ottimizzazione dei prompt di Vertex AI . Utilizzata con demonstration e instruction_and_demo modalità di ottimizzazione. Deve essere un numero intero compreso tra 10 e 30. Se lasciato non viene configurato, il valore predefinito è 10.
        • NUM_DEMO_PER_PROMPT: il numero di dimostrazioni generate per prompt. Deve essere un numero intero compreso tra 3 e 6. Se non viene configurato, il valore predefinito è 3.
      • Selezione del modello e parametri di località:

        • TARGET_MODEL_LOCATION: la posizione in cui vuoi eseguire il modello di destinazione. Se non viene configurato, 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 parametro source_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 non hai già eseguito i tuoi prompt con un account o non hai raggiunto i risultati target, aggiungi dati di fatto risposte al prompt. Per ulteriori informazioni, consulta Crea un prompt e le istruzioni di sistema di questo documento.
        • SOURCE_MODEL_LOCATION: il valore località che vuoi eseguire del 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 il prompt ottimizzatore di Vertex AI invia al prompt di destinazione. Il tempo di esecuzione diminuisce in modo lineare man mano che aumenti questo valore valore. Deve essere un numero compreso tra 3.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: query al secondo (QPS) che l'ottimizzatore dei prompt di Vertex AI invia alla valutazione modello 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 per gemini-1.5-pro. Se non viene impostato, il valore predefinito è 3.0.
          • Per le metriche personalizzate, deve essere un numero in virgola mobile di almeno 3.0. Questo determina la frequenza con cui l'ottimizzatore dei prompt di Vertex AI chiama le funzioni Cloud Run per le metriche personalizzate.
        • SOURCE_MODEL_QPS: le query al secondo (QPS) che il prompt ottimizzatore di Vertex AI invia al prompt un 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 configurato, Il valore predefinito è 3.0.
      • Altri parametri:

        • RESPONSE_MIME_TYPE: il tipo di risposta MIME utilizzato dal modello di destinazione. Deve essere uno tra text/plain o application/json. Se non viene impostato, il valore predefinito è text/plain.
        • TARGET_LANGUAGE: la lingua delle istruzioni del sistema. Se il criterio non viene configurato, l'impostazione predefinita è l'inglese.
        • PLACEHOLDER_TO_CONTENT: le informazioni che sostituiscono eventuali variabili nelle istruzioni di sistema. Informazioni incluso in questo flag non è ottimizzato dalla ottimizzatore del prompt.
        • 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 tra 5 e 100. Se non viene impostato, il valore predefinito è 100.
  3. Carica il file JSON in un bucket Cloud Storage.

Esegui l'ottimizzatore dei prompt

Esegui l'ottimizzazione dei prompt di Vertex AI utilizzando una delle seguenti opzioni:

Blocco note

Esegui l'ottimizzatore dei prompt di Vertex AI tramite il notebook, procedendo nel seguente modo:

  1. In Colab Enterprise, apri il prompt di Vertex AI ottimizzatore di blocco note.

    Vai al notebook dell'ottimizzatore dei prompt di Vertex AI

  2. Nella sezione Esegui ottimizzazione 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 il prompt di Vertex AI ottimizzatore.
  • 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. 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:

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.

from google.cloud import aiplatform

# Initialize Vertex AI platform
aiplatform.init(project=PROJECT_ID, location="us-central1")

# TODO(Developer): Check and update lines below
# cloud_bucket = "gs://cloud-samples-data"
# config_path = f"{cloud_bucket}/instructions/sample_configuration.json"
# output_path = "custom_job/output/"

custom_job = aiplatform.CustomJob(
    display_name="Prompt Optimizer example",
    worker_pool_specs=[
        {
            "replica_count": 1,
            "container_spec": {
                "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
                "args": [f"--config={cloud_bucket}/{config_path}"],
            },
            "machine_spec": {
                "machine_type": "n1-standard-4",
            },
        }
    ],
    staging_bucket=cloud_bucket,
    base_output_dir=f"{cloud_bucket}/{output_path}",
)

custom_job.submit()
print(f"Job resource name: {custom_job.resource_name}")
# Example response:
#    'projects/123412341234/locations/us-central1/customJobs/12341234123412341234'

Analizza i risultati ed esegui l'iterazione

Dopo aver eseguito l'ottimizzazione dei prompt di Vertex AI, rivedi l'avanzamento del job utilizzando una delle seguenti opzioni:

Blocco note

Se vuoi visualizzare i risultati dell'ottimizzatore dei prompt di Vertex AI tramite il blocco note, procedi nel seguente modo:

  1. Apri il blocco note dell'ottimizzazione dei prompt di Vertex AI.

  2. Nella sezione Esamina i risultati:

    1. 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.

    2. Fai clic su play_circle Esegui cella.

Console

  1. Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Pipeline di addestramento.

    Vai a Pipeline di addestramento

  2. 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:

  1. Nella console Google Cloud, vai a Bucket di Cloud Storage pagina:

    Vai a Bucket

  2. Fai clic sul nome del bucket Cloud Storage.

  3. Accedi alla cartella che ha lo stesso nome della modalità di ottimizzazione che hai utilizzato per valutare i prompt, instruction o demonstration. Se hai utilizzato la modalità instruction_and_demo, vengono visualizzate entrambe le cartelle. La cartella instruction contiene i risultati del sistema ottimizzazione dell'istruzione, mentre la cartella demonstration contiene risultati dell'ottimizzazione di demonstration e del sistema ottimizzato istruzioni.

    La cartella contiene i seguenti file:

    • config.json: la configurazione completa utilizzata da Vertex AI ottimizzatore di prompt.
    • templates.json: ogni insieme di istruzioni di sistema e/o esempi con pochi colpi generati dall'ottimizzatore di prompt di Vertex AI e il relativo punteggio di valutazione.
    • eval_results.json: la risposta del modello target per ogni richiesta di esempio per ogni serie di istruzioni di sistema generate e/o alcuni esempi di foto 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.
  4. Per visualizzare le istruzioni di sistema ottimizzate, visualizza la optimized_results.json.

Passaggi successivi