Prepara il set di dati di valutazione

Questa pagina descrive come preparare il set di dati per Gen AI evaluation service.

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 obbligatori Workflow SDK
Genera nuove risposte e poi valutale prompt run_inference()evaluate()
Valuta le risposte esistenti prompt e response evaluate()
Genera nuovi risultati di esecuzione dell'agente e poi valutali prompt run_inference()evaluate()
Valuta le risposte dell'agente esistenti e gli eventi intermedi prompt, response e intermediate_events evaluate()

Quando esegui client.evals.evaluate() o client.evals.create_evaluation_run(), Gen AI evaluation service cerca automaticamente i seguenti campi comuni nel 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 "dorata" con cui puoi confrontare la risposta del modello. Questo campo è spesso obbligatorio per le metriche basate sul calcolo come bleu e rouge.

  • conversation_history: (facoltativo) un elenco di turni precedenti in una conversazione a turni multipli. Gen AI evaluation service estrae automaticamente questo campo dai formati supportati. Per saperne di più, consulta Gestire le conversazioni a turni multipli.

  • session_inputs: (facoltativo) input per inizializzare una sessione per eseguire un agente. Questo è facoltativo solo per il workflow run_inference()evaluate().

  • intermediate_events: (facoltativo) Tracce dell'agente di un singolo turno in un'esecuzione dell'agente, incluse chiamate di funzione, risposte di funzione e risposte del modello intermedie. Questo campo non è obbligatorio per il workflow run_inference()evaluate().

Formati di dati supportati

Gen AI evaluation service supporta i seguenti formati:

DataFrame Pandas

Per valutazioni semplici, puoi utilizzare un pandas.DataFrame. Gen AI evaluation service 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 previsioni in batch di Gemini

Puoi utilizzare direttamente l'output di un job di previsioni in batch di Gemini Enterprise Agent Platform, che in genere sono file JSONL archiviati in Cloud Storage, in cui ogni riga contiene un oggetto di richiesta e risposta. Gen AI evaluation service analizza automaticamente questa struttura per fornire l'integrazione con altri servizi di Gemini Enterprise Agent Platform.

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 di completamento della chat di OpenAI. 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 valutare le risposte:

# 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 le conversazioni a turni multipli

Gen AI evaluation service analizza automaticamente i dati delle conversazioni a turni multipli 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), Gen AI evaluation service identifica i turni precedenti ed elabora come conversation_history.

Ciò significa che non devi separare manualmente il prompt corrente dalla conversazione precedente, poiché le metriche di valutazione possono utilizzare la cronologia delle conversazioni per comprendere il contesto della risposta del modello.

Considera il seguente esempio di conversazione a turni multipli in 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 come segue:

  • prompt: l'ultimo messaggio dell'utente viene identificato come il 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 delle conversazioni ([{"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 campo response ({"role": "model", "parts": [{"text": "For spring in Paris..."}]}).

Passaggi successivi