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 (ou seja, metrics = []
) e adicione as métricas relevantes a ela. Para incluir mais 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 métricas de avaliação.
Correspondência exata
metrics.append("trajectory_exact_match")
Se a trajetória prevista for idêntica à de referência, com as mesmas chamadas de função na mesma ordem, a métrica trajectory_exact_match
vai retornar uma pontuação de 1
. Caso contrário, 0
.
Parâmetros de entrada:
predicted_trajectory
: a lista de chamadas de função 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 função da trajetória de referência na mesma ordem e também puder ter chamadas de função extras, a métrica trajectory_in_order_match
vai retornar uma pontuação de 1
. Caso contrário, 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 o agente atender à consulta.
Correspondência em 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 importar e puder conter chamadas de ferramenta extras, a métrica trajectory_any_order_match
vai retornar uma pontuação de 1
. Caso contrário, 0
.
Parâmetros de entrada:
predicted_trajectory
: a lista de chamadas de função 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 função na trajetória prevista são 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 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 função 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 capturadas na trajetória
prevista. É um valor float
no intervalo de [0, 1]
: quanto maior a pontuação, melhor o recall 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 função 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 função 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 função 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 estão sempre incluídas nos resultados. Não é necessário especificá-los em EvalTask
:
latency
(float
): tempo (em segundos) que o agente leva para responder.failure
(bool
):0
se a invocação do agente for bem-sucedida,1
caso contrário.
Preparar conjunto de dados de avaliação
Para preparar o conjunto de dados para a resposta final ou avaliação de trajetória:
Resposta final
O esquema de dados para 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 função 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 o agente atender à consulta.
Correspondência em 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 função 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 função 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 função 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 função usadas pelo agente para chegar à resposta final.
Para fins de ilustração, 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 você pode avaliar agentes:
"on-device"
: conjunto de dados de avaliação para um Home Assistant no dispositivo. O agente ajuda com consultas como "Programe o ar-condicionado do quarto para que ele fique ligado entre 23h e 8h e desligado no restante do tempo"."customer-support"
: conjunto de dados de avaliação para um agente de suporte ao cliente. O agente ajuda com consultas como "Você pode cancelar todos os pedidos pendentes e encaminhar todos 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 "Remarque a campanha X para ser uma campanha única no site de mídia social Y com um orçamento 50% menor, apenas em 25 de dezembro de 2024".
Para importar os conjuntos de dados de exemplo:
Instale e inicialize a CLI
gcloud
.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 .
Carregar os exemplos de conjuntos de dados
import json eval_dataset = json.loads(open('eval_dataset.json').read())
Gerar resultados da avaliação
Para gerar os 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)
Conferir e interpretar os resultados
Os resultados da avaliação são mostrados da seguinte maneira:
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 gasto (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 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 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 função 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 gasto (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 para todas as pontuações.
A seguir
Teste os seguintes notebooks: