Classe EvalTask (1.50.0)

EvalTask(
    *,
    dataset: typing.Union[pd.DataFrame, str, typing.Dict[str, typing.Any]],
    metrics: typing.List[
        typing.Union[
            typing.Literal[
                "exact_match",
                "bleu",
                "rouge_1",
                "rouge_2",
                "rouge_l",
                "rouge_l_sum",
                "coherence",
                "fluency",
                "safety",
                "groundedness",
                "fulfillment",
                "summarization_quality",
                "summarization_helpfulness",
                "summarization_verbosity",
                "question_answering_quality",
                "question_answering_relevance",
                "question_answering_helpfulness",
                "question_answering_correctness",
                "text_generation_similarity",
                "text_generation_quality",
                "text_generation_instruction_following",
                "text_generation_safety",
                "text_generation_factuality",
                "summarization_pointwise_reference_free",
                "qa_pointwise_reference_free",
                "qa_pointwise_reference_based",
                "tool_call_quality",
            ],
            vertexai.preview.evaluation.metrics._base.CustomMetric,
        ]
    ],
    experiment: typing.Optional[str] = None,
    content_column_name: str = "content",
    reference_column_name: str = "reference",
    response_column_name: str = "response"
)

Una classe che rappresenta un EvalTask.

Un'attività di valutazione viene definita per misurare la capacità del modello di eseguire una determinata attività in risposta a prompt o input specifici. Le attività di valutazione devono contenere un set di dati di valutazione e un elenco di metriche da valutare. Le attività di valutazione aiutano gli sviluppatori a confrontare i modelli suggeriti, a monitorare gli esperimenti, a confrontare i modelli e le relative impostazioni e a valutare la qualità del testo generato del modello.

Dettagli del set di dati: Nomi predefiniti delle colonne del set di dati:

  • content_column_name: "contenuti"
  • nome_colonna_riferimento: "riferimento"
  • response_column_name: "risposta" Requisito per diversi casi d'uso:
    • Integra la tua previsione: è necessaria una colonna response. Il nome della colonna di risposta può essere personalizzato fornendo il parametro response_column_name.
    • Senza modello di prompt: è necessaria una colonna che rappresenta il prompt di input al modello. Se content_column_name non è specificato, il set di dati di valutazione richiede la colonna content per impostazione predefinita. La colonna della risposta non viene utilizzata se presente e le nuove risposte del modello vengono generate con la colonna dei contenuti e utilizzate per la valutazione.
    • Con il modello di prompt: il set di dati deve contenere nomi di colonna corrispondenti ai nomi dei segnaposto nel modello di prompt. Ad esempio, se il modello di prompt è "Instruction: {instruction}, context: {context}", il set di dati deve contenere le colonne instruction e context.

Dettagli sulle metriche: le metriche supportate, le descrizioni dei gruppi di metriche, le griglie di valutazione e i campi di immissione obbligatori sono disponibili nella documentazione pubblica di Vertex AI.

Utilizzo:

  1. Per eseguire la valutazione delle previsioni personalizzate, fornisci le risposte del modello nella colonna della risposta del set di dati. Per impostazione predefinita, il nome della colonna della risposta è "risposta". In alternativa, specifica il parametro response_column_name da personalizzare.

    eval_dataset = pd.DataFrame({
           "reference": [...],
           "response" : [...],
    })
    eval_task = EvalTask(
     dataset=eval_dataset,
     metrics=["bleu", "rouge_l_sum", "coherence", "fluency"],
     experiment="my-experiment",
    )
    eval_result = eval_task.evaluate(
         experiment_run_name="eval-experiment-run"
    )
    
  2. Per eseguire la valutazione con l'inferenza del modello Gemini integrata, specifica il parametro model con un'istanza GenerativeModel. Il nome predefinito della colonna di query per il modello è content.

    eval_dataset = pd.DataFrame({
         "reference": [...],
         "content"  : [...],
    })
    result = EvalTask(
       dataset=eval_dataset,
       metrics=["exact_match", "bleu", "rouge_1", "rouge_2",
       "rouge_l_sum"],
       experiment="my-experiment",
    ).evaluate(
       model=GenerativeModel("gemini-pro"),
       experiment_run_name="gemini-pro-eval-run"
    )
    
  3. Se prompt_template è specificato, la colonna content non è obbligatoria. I prompt possono essere assemblati dal set di dati di valutazione e tutti i nomi dei segnaposto devono essere presenti nelle colonne del set di dati.

    eval_dataset = pd.DataFrame({
       "context"    : [...],
       "instruction": [...],
       "reference"  : [...],
    })
    result = EvalTask(
       dataset=eval_dataset,
       metrics=["summarization_quality"],
    ).evaluate(
       model=model,
       prompt_template="{instruction}. Article: {context}. Summary:",
    )
    
  4. Per eseguire la valutazione con l'inferenza del modello personalizzato, specifica il parametro model con una funzione di previsione personalizzata. La colonna content nel set di dati viene utilizzata per generare previsioni con la funzione del modello personalizzato per la valutazione.

    def custom_model_fn(input: str) -> str:
     response = client.chat.completions.create(
       model="gpt-3.5-turbo",
       messages=[
         {"role": "user", "content": input}
       ]
     )
     return response.choices[0].message.content
    
    eval_dataset = pd.DataFrame({
         "content"  : [...],
         "reference": [...],
    })
    result = EvalTask(
       dataset=eval_dataset,
       metrics=["text_generation_similarity","text_generation_quality"],
       experiment="my-experiment",
    ).evaluate(
       model=custom_model_fn,
       experiment_run_name="gpt-eval-run"
    )
    

Metodi

EvalTask

EvalTask(
    *,
    dataset: typing.Union[pd.DataFrame, str, typing.Dict[str, typing.Any]],
    metrics: typing.List[
        typing.Union[
            typing.Literal[
                "exact_match",
                "bleu",
                "rouge_1",
                "rouge_2",
                "rouge_l",
                "rouge_l_sum",
                "coherence",
                "fluency",
                "safety",
                "groundedness",
                "fulfillment",
                "summarization_quality",
                "summarization_helpfulness",
                "summarization_verbosity",
                "question_answering_quality",
                "question_answering_relevance",
                "question_answering_helpfulness",
                "question_answering_correctness",
                "text_generation_similarity",
                "text_generation_quality",
                "text_generation_instruction_following",
                "text_generation_safety",
                "text_generation_factuality",
                "summarization_pointwise_reference_free",
                "qa_pointwise_reference_free",
                "qa_pointwise_reference_based",
                "tool_call_quality",
            ],
            vertexai.preview.evaluation.metrics._base.CustomMetric,
        ]
    ],
    experiment: typing.Optional[str] = None,
    content_column_name: str = "content",
    reference_column_name: str = "reference",
    response_column_name: str = "response"
)

Inizializza un EvalTask.

display_runs

display_runs()

Mostra le esecuzioni dell'esperimento associate a questo EvalTask.

evaluate

evaluate(
    *,
    model: typing.Optional[
        typing.Union[
            vertexai.generative_models.GenerativeModel, typing.Callable[[str], str]
        ]
    ] = None,
    prompt_template: typing.Optional[str] = None,
    experiment_run_name: typing.Optional[str] = None,
    response_column_name: str = "response"
) -> vertexai.preview.evaluation._base.EvalResult

Esegue una valutazione per EvalTask.