Ottimizzatore dei prompt few-shot

L'ottimizzatore di prompt few-shot ti aiuta a perfezionare le istruzioni di sistema analizzando esempi in cui la risposta di un modello non ha soddisfatto le aspettative. Fornisci esempi specifici di prompt, risposte del modello e feedback su queste risposte e l'ottimizzatore migliora le istruzioni di sistema. Puoi fornire feedback in due modi: griglie e valutazione basata su griglie o risposte target.

L'ottimizzazione few-shot richiede di fornire esempi in un DataFrame Pandas ed è disponibile tramite l'SDK Vertex AI.

Ottimizzare utilizzando la valutazione basata su rubriche

Questo metodo è adatto agli scenari in cui hai rubriche (note anche come criteri di valutazione) per ogni esempio e un record che indica se il modello ha soddisfatto questi criteri. Il DataFrame deve contenere le seguenti quattro colonne:

  • prompt: il prompt utente originale.
  • model_response: l'output effettivo generato dal modello.
  • rubrics: un elenco di criteri specifici per l'esempio, come rappresentazione di stringa di un elenco di stringhe.
  • rubrics_evaluations: un elenco di valori booleani che indicano se ogni rubrica è stata soddisfatta, come rappresentazione di stringa di un elenco di valori booleani.

I criteri possono essere coerenti in tutte le righe o personalizzati per ogni esempio.

import pandas as pd
import vertexai
from vertexai import types

PROJECT_NAME = "YOUR_PROJECT_NAME"
LOCATION = "YOUR_LOCATION" # e.g. "us-central1"
client = vertexai.Client(project=PROJECT_NAME, location=LOCATION)

system_instructions = "You are an AI assistant skilled in analyzing articles. Your task is to extract key arguments, evaluate evidence quality, identify potential biases, and summarize core findings into a concise, actionable, and objective report. Make sure the response is less than 50 words"
df = pd.DataFrame(
    [
        {
            "prompt": "prompt1",
            "model_response": "response1",
            "rubrics": "['Response is in English', 'Under 50 words']",
            "rubrics_evaluations": "[True, True]",
        },
        {
            "prompt": "prompt2",
            "model_response": "response2",
            "rubrics": "['Response is in English', 'Under 50 words']",
            "rubrics_evaluations": "[True, False]",
        },
    ]
)

config = vertexai.types.OptimizeConfig(
    optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_FEW_SHOT_RUBRICS,
    examples_dataframe=df,
)

response = client.prompts.optimize(prompt=system_instructions, config=config)

print(response.parsed_response.suggested_prompt)

Ottimizzare utilizzando le risposte target

Se non hai rubriche specifiche, ma hai una risposta ideale o "gold standard " per ogni prompt, puoi utilizzare l'ottimizzazione basata sulla risposta target. L'ottimizzatore confronta l'output del modello con l'output ideale e modifica le istruzioni per colmare il divario.

Il DataFrame deve includere queste tre colonne:

  • prompt: le istruzioni originali per l'utente.
  • model_response: l'output del modello attuale che deve essere migliorato.
  • target_response: la risposta ideale che vuoi che il modello generi.
import pandas as pd
import vertexai
from vertexai import types

PROJECT_NAME = "PROJECT"
LOCATION = "YOUR_LOCATION" # e.g. "us-central1"
client = vertexai.Client(project=YOUR_PROJECT_NAME, location=LOCATION)

system_instructions = "You are an AI assistant skilled in analyzing articles. Your task is to extract key arguments, evaluate evidence quality, identify potential biases, and summarize core findings into a concise, actionable, and objective report. Make sure the response is less than 50 words"
df = pd.DataFrame(
    {
        "prompt": ["prompt1", "prompt2"],
        "model_response": ["response1", "response2"],
        "target_response": ["target1", "target2"],
    }
)
config = vertexai.types.OptimizeConfig(
    optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_FEW_SHOT_TARGET_RESPONSE,
    examples_dataframe=df,
)
response = client.prompts.optimize(
    prompt=system_instructions,
    config=config,
)

print(response.parsed_response.suggested_prompt)