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)