Tutorial: realizar uma avaliação usando o SDK do Python

Nesta página, mostramos como realizar uma avaliação baseada em modelo com o Serviço de avaliação de IA generativa usando o SDK do Agent Platform para Python.

Antes de começar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

  2. Instale o SDK da Agent Platform para Python com a dependência do serviço de avaliação de IA generativa:

    !pip install google-cloud-aiplatform[evaluation]
    
  3. Configure suas credenciais. Se você estiver executando este guia de início rápido no Colaboratory, faça o seguinte:

    from google.colab import auth
    auth.authenticate_user()
    

    Para outros ambientes, consulte Autenticar na plataforma Agente.

Importar bibliotecas

Importe as bibliotecas e configure o projeto e o local.

import pandas as pd

import vertexai
from vertexai.evaluation import EvalTask, PointwiseMetric, PointwiseMetricPromptTemplate
from google.cloud import aiplatform

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
EXPERIMENT_NAME = "EXPERIMENT_NAME"

vertexai.init(
    project=PROJECT_ID,
    location=LOCATION,
)

O EXPERIMENT_NAME só pode conter caracteres alfanuméricos minúsculos e hifens, até um máximo de 127 caracteres.

Configurar métricas de avaliação com base nos seus critérios

A definição de métrica a seguir avalia a qualidade do texto gerado a partir de um modelo de linguagem grande com base em dois critérios: Fluency e Entertaining. O código define uma métrica chamada custom_text_quality usando esses dois critérios:

custom_text_quality = PointwiseMetric(
    metric="custom_text_quality",
    metric_prompt_template=PointwiseMetricPromptTemplate(
        criteria={
            "fluency": (
                "Sentences flow smoothly and are easy to read, avoiding awkward"
                " phrasing or run-on sentences. Ideas and sentences connect"
                " logically, using transitions effectively where needed."
            ),
            "entertaining": (
                "Short, amusing text that incorporates emojis, exclamations and"
                " questions to convey quick and spontaneous communication and"
                " diversion."
            ),
        },
        rating_rubric={
            "1": "The response performs well on both criteria.",
            "0": "The response is somewhat aligned with both criteria",
            "-1": "The response falls short on both criteria",
        },
    ),
)

Preparar o conjunto de dados

Adicione o seguinte código para preparar o conjunto de dados:

responses = [
    # An example of good custom_text_quality
    "Life is a rollercoaster, full of ups and downs, but it's the thrill that keeps us coming back for more!",
    # An example of medium custom_text_quality
    "The weather is nice today, not too hot, not too cold.",
    # An example of poor custom_text_quality
    "The weather is, you know, whatever.",
]

eval_dataset = pd.DataFrame({
    "response" : responses,
})

Executar avaliação com seu conjunto de dados

Execute a avaliação:

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[custom_text_quality],
    experiment=EXPERIMENT_NAME
)

pointwise_result = eval_task.evaluate()

Confira os resultados da avaliação de cada resposta no DataFrame do Pandas metrics_table:

pointwise_result.metrics_table

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

Exclua o ExperimentRun criado pela avaliação:

aiplatform.ExperimentRun(
    run_name=pointwise_result.metadata["experiment_run"],
    experiment=pointwise_result.metadata["experiment"],
).delete()

A seguir