Avaliar agentes de IA generativa

Depois de criar e avaliar seu modelo de IA generativa, você pode usá-lo para criar um agente, como um chatbot. O serviço de avaliação de IA generativa permite medir a capacidade do agente de concluir tarefas e metas para seu caso de uso.

Visão geral

Você tem as seguintes opções para avaliar o agente:

  • Avaliação da resposta final: avalie a saída final de um agente (se ele alcançou ou não a meta).

  • Avaliação da trajetória: avalie o caminho (sequência de chamadas de ferramentas) que o agente percorreu para chegar à resposta final.

Com o serviço de avaliação de IA generativa, é possível acionar uma execução de agente e receber métricas para a avaliação da trajetória e a avaliação da resposta final em uma consulta do SDK da Vertex AI.

Agentes com suporte

O Serviço de avaliação de IA generativa oferece suporte às seguintes categorias de agentes:

Agentes com suporte Descrição
Agente criado com o modelo do Reasoning Engine O Reasoning Engine (LangChain na Vertex AI) é uma Google Cloud plataforma em que é possível implantar e gerenciar agentes.
Agentes do LangChain criados usando o modelo personalizável do Reasoning Engine O LangChain é uma plataforma de código aberto.
Função de agente personalizada A função de agente personalizada é flexível, recebe um comando para o agente e retorna uma resposta e uma trajetória em um dicionário.

Como definir métricas para a avaliação do agente

Defina as métricas para a avaliação da resposta final ou da trajetória:

Avaliação da resposta final

A avaliação da resposta final segue o mesmo processo da avaliação da resposta do modelo. Para mais informações, consulte Definir métricas de avaliação.

Avaliação da trajetória

As métricas a seguir ajudam você a avaliar a capacidade do modelo de seguir a trajetória esperada:

Correspondência exata

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, ela vai retornar 0.

Parâmetros de entrada da métrica

Parâmetro de entrada Descrição
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.

Pontuações de saída

Valor Descrição
0 A trajetória prevista não corresponde à referência.
1 A trajetória prevista corresponde à referência.

Correspondência na ordem

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, ela vai retornar 0.

Parâmetros de entrada da métrica

Parâmetro de entrada Descrição
predicted_trajectory A trajetória prevista usada pelo agente para chegar à resposta final.
reference_trajectory A trajetória prevista para o agente atender à consulta.

Pontuações de saída

Valor Descrição
0 As chamadas de ferramenta na trajetória prevista não correspondem à ordem na trajetória de referência.
1 A trajetória prevista corresponde à referência.

Correspondência de qualquer ordem

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 da métrica

Parâmetro de entrada Descrição
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.

Pontuações de saída

Valor Descrição
0 A trajetória prevista não contém todas as chamadas de ferramenta na trajetória de referência.
1 A trajetória prevista corresponde à referência.

Precisão

A métrica trajectory_precision mede quantas das chamadas de ferramenta na trajetória prevista são realmente relevantes ou corretas de acordo com a trajetória de referência.

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 da métrica

Parâmetro de entrada Descrição
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.

Pontuações de saída

Valor Descrição
Um ponto flutuante no intervalo de [0,1] Quanto maior a pontuação, mais precisa é a trajetória prevista.

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 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 da métrica

Parâmetro de entrada Descrição
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.

Pontuações de saída

Valor Descrição
Um ponto flutuante no intervalo de [0,1] Quanto maior a pontuação, maior a lembrança da trajetória prevista.

Uso de uma única ferramenta

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.

Parâmetros de entrada da métrica

Parâmetro de entrada Descrição
predicted_trajectory A lista de chamadas de ferramentas usadas pelo agente para chegar à resposta final.

Pontuações de saída

Valor Descrição
0 A ferramenta não está presente
1 A ferramenta está presente.

Além disso, as duas métricas de desempenho do agente a seguir são adicionadas aos resultados da avaliação por padrão. Não é necessário especificar esses valores em EvalTask.

latency

Tempo que o agente leva para retornar uma resposta.

Valor Descrição
Um ponto flutuante Calculado em segundos.

failure

Um booleano para descrever se a invocação do agente resultou em um erro ou foi bem-sucedida.

Pontuações de saída

Valor Descrição
1 Erro
0 Resposta válida retornada

Preparar o conjunto de dados para a avaliação do agente

Prepare o conjunto de dados para a avaliação final da resposta ou da trajetória.

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

Para a avaliação de trajetória baseada em computação, o conjunto de dados precisa fornecer as seguintes informações:

Tipo de entrada Conteúdo do campo de entrada
predicted_trajectory A lista de chamadas de ferramentas usadas pelos agentes para chegar à resposta final.
reference_trajectory (não obrigatório para trajectory_single_tool_use metric) O uso esperado da ferramenta para que o agente atenda à consulta.

Exemplos de conjuntos de dados de avaliação

Os exemplos a seguir mostram conjuntos de dados para avaliação de trajetória. reference_trajectory é obrigatório para todas as métricas, exceto trajectory_single_tool_use.

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
      }
    },
  ]
]

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
      }
    },
  ]
]

eval_dataset = pd.DataFrame({
    "predicted_trajectory": predicted_trajectory,
    "reference_trajectory": reference_trajectory,
})

Importar o conjunto de dados de avaliação

É possível importar o conjunto de dados nos seguintes formatos:

  • Arquivo JSONL ou CSV armazenado no Cloud Storage

  • Tabela do BigQuery

  • DataFrames da Pandas

O Serviço de avaliação de IA generativa fornece exemplos de conjuntos de dados públicos para demonstrar como avaliar seus agentes. O código a seguir mostra como importar os conjuntos de dados públicos de um bucket do Cloud Storage:


# dataset name to be imported
dataset = "on-device" # Alternatives: "customer-support", "content-creation"

# copy the tools and dataset file
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/tools.py .
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/eval_dataset.json .

# load the dataset examples
import json

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

# run the tools file
%run -i tools.py

em que dataset é um dos seguintes conjuntos de dados públicos:

  • "on-device" para um Google Assistente no dispositivo, que controla os dispositivos da casa. 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" para falar com um representante de suporte ao cliente. O agente ajuda com perguntas como "Você pode cancelar pedidos pendentes e encaminhar os tíquetes de suporte abertos?"

  • "content-creation" 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 rede social Y com um orçamento reduzido em 50%, apenas em 25 de dezembro de 2024".

Executar avaliação do agente

Execute uma avaliação de trajetória ou de resposta final:

Para a avaliação do agente, é possível misturar as métricas de avaliação de resposta e de trajetória, como no código a seguir:

single_tool_use_metric = TrajectorySingleToolUse(tool_name='tool_name')

eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[
        "rouge_l_sum",
        "bleu",
        custom_response_eval_metric,
        "trajectory_exact_match",
        "trajectory_precision",
        single_tool_use_metric
        pointwise_trajectory_eval_metric # llm-based metric
    ],
)
eval_result = eval_task.evaluate(
    runnable=RUNNABLE,
)

Personalização de métricas

É possível personalizar uma métrica baseada em modelo de linguagem grande para avaliação de trajetória usando uma interface de modelo ou do zero. Também é possível definir uma métrica personalizada com base em cálculos para a avaliação da trajetória.

Conferir e interpretar os resultados

Para a avaliação da trajetória ou da resposta final, os resultados 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

Resultados no nível da instância

Coluna Descrição
resposta Resposta final gerada pelo agente.
latency_in_seconds Tempo que levou para gerar a resposta.
falha 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.
explicação A explicação para a pontuação especificada na especificação da métrica.

Resultados agregados

Coluna Descrição
média Pontuação média de todas as instâncias.
desvio padrão O desvio padrão para todas as pontuações.

Métricas de trajetória

Resultados no nível da instância

Coluna Descrição
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 que levou para gerar a resposta.
falha Indica se uma resposta válida foi gerada ou não.

Resultados agregados

Coluna Descrição
média Pontuação média de todas as instâncias.
desvio padrão O desvio padrão para todas as pontuações.

A seguir

Teste os seguintes notebooks de avaliação de agentes: