Questa pagina descrive come preparare il set di dati per il servizio di valutazione dell'IA generativa.
Panoramica
Gen AI evaluation service rileva e gestisce automaticamente diversi formati di dati comuni. Ciò significa che spesso puoi utilizzare i dati così come sono senza dover eseguire conversioni manuali.
I campi che devi fornire nel set di dati dipendono dal tuo obiettivo:
Obiettivo | Dati richiesti | Flusso di lavoro dell'SDK |
---|---|---|
Genera nuove risposte e poi valutale | prompt |
run_inference() → evaluate() |
Valutare le risposte esistenti | prompt e response |
evaluate() |
Quando esegui client.evals.evaluate()
, il servizio di valutazione dell'AI generativa cerca automaticamente i seguenti campi comuni nel tuo set di dati:
prompt
: (obbligatorio) l'input del modello che vuoi valutare. Per ottenere risultati ottimali, devi fornire prompt di esempio che rappresentino i tipi di input elaborati dai tuoi modelli in produzione.response
: (obbligatorio) l'output generato dal modello o dall'applicazione in fase di valutazione.reference
: (facoltativo) La risposta basata su dati di fatto o "golden" che puoi confrontare con la risposta del modello. Questo campo è spesso obbligatorio per le metriche basate sul calcolo, comebleu
erouge
.conversation_history
: (facoltativo) un elenco di turni precedenti in una conversazione multi-turno. Gen AI evaluation service estrae automaticamente questo campo dai formati supportati. Per saperne di più, vedi Gestione delle conversazioni multi-turno.
Formati di dati supportati
Gen AI evaluation service supporta i seguenti formati:
DataFrame Pandas
Per valutazioni semplici, puoi utilizzare un pandas.DataFrame
. Il servizio di valutazione dell'AI generativa cerca nomi di colonne comuni come prompt
, response
e reference
. Questo formato è completamente compatibile con le versioni precedenti.
import pandas as pd
# Example DataFrame with prompts and ground truth references
prompts_df = pd.DataFrame({
"prompt": [
"What is the capital of France?",
"Who wrote 'Hamlet'?",
],
"reference": [
"Paris",
"William Shakespeare",
]
})
# You can use this DataFrame directly with run_inference or evaluate
eval_dataset = client.evals.run_inference(model="gemini-2.5-flash", src=prompts_df)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
Formato di previsione batch di Gemini
Puoi utilizzare direttamente l'output di un job di previsione batch di Vertex AI, che in genere sono file JSONL archiviati in Cloud Storage, in cui ogni riga contiene un oggetto richiesta e risposta. Gen AI evaluation service analizza automaticamente questa struttura per fornire l'integrazione con altri servizi Vertex AI.
Di seguito è riportato un esempio di una singola riga in un file JSONL:
{"request": {"contents": [{"role": "user", "parts": [{"text": "Why is the sky blue?"}]}]}, "response": {"candidates": [{"content": {"role": "model", "parts": [{"text": "The sky appears blue to the human eye as a result of a phenomenon known as Rayleigh scattering."}]}}]}}
Puoi quindi valutare direttamente le risposte pregenerate da un job batch:
# Cloud Storage path to your batch prediction output file
batch_job_output_uri = "gs://path/to/your/batch_output.jsonl"
# Evaluate the pre-generated responses directly
eval_result = client.evals.evaluate(
dataset=batch_job_output_uri,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
Formato di completamento della chat di OpenAI
Per la valutazione o il confronto con modelli di terze parti come OpenAI e Anthropic, Gen AI evaluation service supporta il formato OpenAI Chat Completion. Puoi fornire un set di dati in cui ogni riga è un oggetto JSON strutturato come una richiesta API OpenAI. Gen AI evaluation service rileva automaticamente questo formato.
Di seguito è riportato un esempio di una singola riga in questo formato:
{"request": {"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the capital of France?"}], "model": "gpt-4o"}}
Puoi utilizzare questi dati per generare risposte da un modello di terze parti e valutarle:
# Ensure your third-party API key is set
# e.g., os.environ['OPENAI_API_KEY'] = 'Your API Key'
openai_request_uri = "gs://path/to/your/openai_requests.jsonl"
# Generate responses using a LiteLLM-supported model string
openai_responses = client.evals.run_inference(
model="gpt-4o", # LiteLLM compatible model string
src=openai_request_uri,
)
# The resulting openai_responses object can then be evaluated
eval_result = client.evals.evaluate(
dataset=openai_responses,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
Gestire conversazioni a più turni
Il servizio di valutazione dell'AI generativa analizza automaticamente i dati delle conversazioni multigiro dai formati supportati. Quando i dati di input includono una cronologia degli scambi (ad esempio all'interno del campo request.contents
nel formato Gemini o request.messages
nel formato OpenAI), il servizio di valutazione dell'AI generativa identifica i turni precedenti e li elabora come conversation_history
.
Ciò significa che non devi separare manualmente il prompt attuale dalla conversazione precedente, poiché le metriche di valutazione possono utilizzare la cronologia della conversazione per comprendere il contesto della risposta del modello.
Considera il seguente esempio di conversazione in più turni nel formato Gemini:
{
"request": {
"contents": [
{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]},
{"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]},
{"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
]
},
"response": {
"candidates": [
{"content": {"role": "model", "parts": [{"text": "For spring in Paris, you should definitely visit the Eiffel Tower, the Louvre Museum, and wander through Montmartre."}]}}
]
}
}
La conversazione a turni multipli viene analizzata automaticamente nel seguente modo:
prompt
: l'ultimo messaggio dell'utente è identificato come prompt corrente ({"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
).conversation_history
: i messaggi precedenti vengono estratti automaticamente e resi disponibili come cronologia della conversazione ([{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]}, {"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]}]
).response
: La risposta del modello viene presa dal camporesponse
({"role": "model", "parts": [{"text": "For spring in Paris..."}]}
).