Avaliar um agente

Depois de desenvolver um agente, você pode usar o serviço de avaliação de IA generativa para avaliar a capacidade do agente de concluir tarefas e metas para um determinado caso de uso.

Definir métricas de avaliação

Comece com uma lista vazia de métricas (metrics = []) e adicione as métricas relevantes. Para incluir outras métricas:

Resposta final

A avaliação da resposta final segue o mesmo processo da avaliação baseada em modelo. Para mais detalhes, consulte Definir as métricas de avaliação.

Correspondência exata

metrics.append("trajectory_exact_match")

Se a trajetória prevista for idêntica à trajetória de referência, com as mesmas chamadas de ferramenta na mesma ordem, a métrica trajectory_exact_match vai retornar uma pontuação de 1. Caso contrário, será 0.

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Correspondência na ordem

metrics.append("trajectory_in_order_match")

Se a trajetória prevista contiver todas as chamadas de ferramenta da trajetória de referência na mesma ordem e também tiver chamadas de ferramenta extras, a métrica trajectory_in_order_match vai retornar uma pontuação de 1. Caso contrário, será 0.

Parâmetros de entrada:

  • predicted_trajectory: a trajetória prevista usada pelo agente para chegar à resposta final.
  • reference_trajectory: a trajetória prevista esperada para que o agente atenda à consulta.

Correspondência de qualquer ordem

metrics.append("trajectory_any_order_match")

Se a trajetória prevista contiver todas as chamadas de ferramenta da trajetória de referência, mas a ordem não for importante e puder conter chamadas de ferramenta extras, a métrica trajectory_any_order_match vai retornar uma pontuação de 1. Caso contrário, ela vai retornar 0.

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Precisão

metrics.append("trajectory_precision")

A métrica trajectory_precision mede quantas das chamadas de ferramentas na trajetória prevista são realmente relevantes ou corretas de acordo com a trajetória de referência. É um valor float no intervalo de [0, 1]: quanto maior a pontuação, mais precisa a trajetória prevista.

A precisão é calculada da seguinte maneira: conte quantas ações na trajetória prevista também aparecem na trajetória de referência. Divida essa contagem pelo número total de ações na trajetória prevista.

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Recall

metrics.append("trajectory_recall")

A métrica trajectory_recall mede quantas das chamadas de ferramentas essenciais da trajetória de referência são realmente capturadas na trajetória previsivelmente. É um valor float na faixa de [0, 1]: quanto maior a pontuação, melhor a recuperação da trajetória prevista.

O recall é calculado da seguinte maneira: conte quantas ações na trajetória de referência também aparecem na trajetória prevista. Divida essa contagem pelo número total de ações na trajetória de referência.

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Uso de uma única ferramenta

from vertexai.preview.evaluation import metrics

metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))

A métrica trajectory_single_tool_use verifica se uma ferramenta específica especificada na especificação da métrica é usada na trajetória prevista. Ele não verifica a ordem das chamadas de ferramentas nem quantas vezes a ferramenta é usada, apenas se ela está presente ou não. O valor é 0 se a ferramenta estiver ausente e 1 caso contrário.

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.

Personalizado

É possível definir uma métrica personalizada da seguinte maneira:

from vertexai.preview.evaluation import metrics

def word_count(instance):
  response = instance["response"]
  score = len(response.split(" "))
  return {"word_count": score}

metrics.append(
  metrics.CustomMetric(name="word_count", metric_function=word_count)
)

As duas métricas de desempenho a seguir são sempre incluídas nos resultados. Não é necessário especificar esses valores em EvalTask:

  • latency (float): tempo (em segundos) que o agente levou para responder.
  • failure (bool): 0 se a invocação do agente tiver sido bem-sucedida, 1 caso contrário.

Preparar conjunto de dados de avaliação

Para preparar o conjunto de dados para a avaliação final da resposta ou da trajetória:

Resposta final

O esquema de dados para a avaliação da resposta final é semelhante ao da avaliação da resposta do modelo.

Correspondência exata

O conjunto de dados de avaliação precisa fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Correspondência na ordem

O conjunto de dados de avaliação precisa fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a trajetória prevista usada pelo agente para chegar à resposta final.
  • reference_trajectory: a trajetória prevista esperada para que o agente atenda à consulta.

Correspondência de qualquer ordem

O conjunto de dados de avaliação precisa fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Precisão

O conjunto de dados de avaliação precisa fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Recall

O conjunto de dados de avaliação precisa fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.
  • reference_trajectory: o uso esperado da ferramenta para que o agente atenda à consulta.

Uso de uma única ferramenta

O conjunto de dados de avaliação precisa fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.

Confira a seguir um exemplo de conjunto de dados de avaliação.

  import pandas as pd

  eval_dataset = pd.DataFrame({
    "predicted_trajectory": [
      [ # example 1
        {
          "tool_name": "set_device_info",
          "tool_input": {"device_id": "device_3", "updates": {"status": "OFF"}}
        },
      ],
      [ # example 2
        {
          "tool_name": "get_user_preferences",
          "tool_input": {"user_id": "user_z"},
        }, {
          "tool_name": "set_temperature",
          "tool_input": {"location": "Living Room", "temperature": 23},
        },
      ]
    ],
    "reference_trajectory": [
      [ # example 1
        {
          "tool_name": "set_device_info",
          "tool_input": {"device_id": "device_2", "updates": {"status": "OFF"}},
        },
      ],
      [ # example 2
        {
          "tool_name": "get_user_preferences",
          "tool_input": {"user_id": "user_y"},
        }, {
          "tool_name": "set_temperature",
          "tool_input": {"location": "Living Room", "temperature": 23},
        },
      ],
    ],
  })

Exemplos de conjuntos de dados

Fornecemos os seguintes conjuntos de dados de exemplo para demonstrar como avaliar agentes:

  • "on-device": conjunto de dados de avaliação para um Google Assistente no dispositivo. O agente ajuda com consultas como "Programe o ar-condicionado no quarto para que ele fique ligado entre 23h e 8h e desligado o resto do tempo".

  • "customer-support": conjunto de dados de avaliação de um agente de suporte ao cliente. O agente ajuda com consultas como "Você pode cancelar pedidos pendentes e encaminhar os tíquetes de suporte abertos?"

  • "content-creation": conjunto de dados de avaliação para um agente de criação de conteúdo de marketing. O agente ajuda com consultas como "Reprogramar a campanha X para ser uma campanha única no site de mídia social Y com um orçamento reduzido em 50%, apenas em 25 de dezembro de 2024".

Para importar os conjuntos de dados de exemplo:

  1. Instale e inicialize a CLI gcloud.

  2. Faça o download do conjunto de dados de avaliação.

    No dispositivo

    gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .

    Suporte ao cliente

    gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .

    Criação de conteúdo

    gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
  3. Carregar os exemplos do conjunto de dados

    import json
    
    eval_dataset = json.loads(open('eval_dataset.json').read())
    

Gerar resultados da avaliação

Para gerar resultados de avaliação, execute o seguinte código:

from vertexai.preview.evaluation import EvalTask

eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)

Conferir e interpretar os resultados

Os resultados da avaliação são mostrados da seguinte maneira:

Tabelas para métricas de avaliação do agente

Os resultados da avaliação contêm as seguintes informações:

Métricas de resposta final

Métricas por linha:

  • response: resposta final gerada pelo agente.
  • latency_in_seconds: tempo (em segundos) para gerar a resposta.
  • failure: indica se uma resposta válida foi gerada ou não.
  • score: uma pontuação calculada para a resposta especificada na especificação da métrica.
  • explanation: a explicação para a pontuação especificada na especificação da métrica.

Métricas de resumo:

  • mean: pontuação média de todas as instâncias.
  • standard deviation: desvio padrão de todas as pontuações.

Métricas de trajetória

Métricas por linha:

  • predicted_trajectory: sequência de chamadas de ferramentas seguidas pelo agente para chegar à resposta final.
  • reference_trajectory: sequência de chamadas de ferramentas esperadas.
  • score: uma pontuação calculada para a trajetória prevista e a trajetória de referência especificada na especificação da métrica.
  • latency_in_seconds: tempo (em segundos) para gerar a resposta.
  • failure: indica se uma resposta válida foi gerada ou não.

Métricas de resumo:

  • mean: pontuação média de todas as instâncias.
  • standard deviation: desvio padrão de todas as pontuações.

A seguir

Teste os seguintes notebooks: