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:
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 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:
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: