Avalie um agente

Depois de desenvolver um agente, pode usar o serviço de avaliação de IA gen para avaliar a capacidade do agente de concluir tarefas e alcançar objetivos para um determinado exemplo de utilização.

Defina as métricas de avaliação

Comece com uma lista de métricas vazia (ou seja, metrics = []) e adicione-lhe as métricas relevantes. Para incluir métricas adicionais:

Resposta final

A avaliação da resposta final segue o mesmo processo que a avaliação baseada em modelos. Para ver detalhes, consulte o artigo Defina 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 ferramentas na mesma ordem, a métrica trajectory_exact_match devolve uma pontuação de 1. Caso contrário, devolve 0.

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Correspondência na ordem

metrics.append("trajectory_in_order_match")

Se a trajetória prevista contiver todas as chamadas de ferramentas da trajetória de referência pela mesma ordem e também puder ter chamadas de ferramentas adicionais, a métrica trajectory_in_order_match devolve uma pontuação de 1; caso contrário, 0.

Parâmetros de entrada:

  • predicted_trajectory: a trajetória prevista usada pelo agente para alcançar a resposta final.
  • reference_trajectory: A trajetória prevista esperada para o agente satisfazer a consulta.

Correspondência em qualquer ordem

metrics.append("trajectory_any_order_match")

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

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a 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 mais alta for a classificação, mais precisa é a trajetória prevista.

A precisão é calculada da seguinte forma: 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 alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Recordar

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 captadas na trajetória prevista. É um valor float no intervalo de [0, 1]: quanto mais elevada for a pontuação, melhor é a capacidade de memorização da trajetória prevista.

A taxa de recordação é calculada da seguinte forma: 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 alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Utilização 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 que é especificada na especificação da métrica é usada na trajetória prevista. Não verifica a ordem das chamadas de ferramentas nem quantas vezes a ferramenta é usada, apenas se está presente ou não. É um valor de 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 alcançar a resposta final.

Personalizado

Pode definir uma métrica personalizada da seguinte forma:

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 seguintes estão sempre incluídas nos resultados. Não tem de especificá-los em EvalTask:

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

Prepare o conjunto de dados de avaliação

Para preparar o conjunto de dados para a resposta final ou a avaliação 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 tem de fornecer as seguintes entradas:

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Correspondência na ordem

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

Parâmetros de entrada:

  • predicted_trajectory: a trajetória prevista usada pelo agente para alcançar a resposta final.
  • reference_trajectory: A trajetória prevista esperada para o agente satisfazer a consulta.

Correspondência em qualquer ordem

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

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Precisão

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

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Recordar

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

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.
  • reference_trajectory: a utilização esperada da ferramenta para satisfazer a consulta.

Utilização de uma única ferramenta

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

Parâmetros de entrada:

  • predicted_trajectory: a lista de chamadas de ferramentas usadas pelo agente para alcançar a resposta final.

Para fins ilustrativos, segue-se um exemplo de um 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

Disponibilizámos os seguintes conjuntos de dados de exemplo para demonstrar como pode avaliar agentes:

  • "on-device": conjunto de dados de avaliação para um assistente doméstico no dispositivo. O agente ajuda com consultas como "Programa o ar condicionado no quarto para que esteja ligado entre as 23:00 e as 08:00 e desligado no resto do tempo".

  • "customer-support": conjunto de dados de avaliação para um agente do apoio técnico ao cliente. O agente ajuda com consultas como "Podes cancelar todas as encomendas pendentes e encaminhar todos os pedidos de apoio técnico 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 "Reprograma a campanha X para ser uma campanha única no site de redes sociais Y com um orçamento 50% inferior, apenas a 25 de dezembro de 2024".

Para importar os conjuntos de dados de exemplo:

  1. Instale e inicialize a CLI gcloud.

  2. Transfira o conjunto de dados de avaliação.

    No dispositivo

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

    Apoio 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. Carregue os exemplos do conjunto de dados

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

Gere resultados da avaliação

Para gerar resultados da 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)

Veja e interprete os resultados

Os resultados da avaliação são apresentados da seguinte forma:

Tabelas para métricas de avaliação de agentes

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 necessário (em segundos) para gerar a resposta.
  • failure: indica se foi gerada ou não uma resposta válida.
  • score: uma pontuação calculada para a resposta especificada na especificação da métrica.
  • explanation: a explicação da 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 para todas as classificações.

Métricas de trajetória

Métricas por linha:

  • predicted_trajectory: sequência de chamadas de ferramentas seguidas pelo agente para alcançar a 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 especificadas na especificação da métrica.
  • latency_in_seconds: tempo necessário (em segundos) para gerar a resposta.
  • failure: indica se foi gerada ou não uma resposta válida.

Métricas de resumo:

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

O que se segue?

Experimente os seguintes blocos de notas: