Después de desarrollar un agente, puedes usar el servicio de evaluación de IA generativa para evaluar la capacidad del agente para completar tareas y objetivos para un caso de uso determinado.
Define las métricas de evaluación
Comienza con una lista vacía de métricas (es decir, metrics = []
) y agrégale las métricas relevantes. Para incluir métricas adicionales, sigue estos pasos:
Respuesta final
La evaluación de la respuesta final sigue el mismo proceso que la evaluación basada en modelos. Para obtener más información, consulta Define tus métricas de evaluación.
Concordancia exacta
metrics.append("trajectory_exact_match")
Si la trayectoria prevista es idéntica a la trayectoria de referencia, con las mismas llamadas a la herramienta en el mismo orden, la métrica trajectory_exact_match
muestra una puntuación de 1
; de lo contrario, muestra 0
.
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Coincidencia en orden
metrics.append("trajectory_in_order_match")
Si la trayectoria prevista contiene todas las llamadas a la herramienta de la trayectoria de referencia en el mismo orden y también puede tener llamadas a la herramienta adicionales, la métrica trajectory_in_order_match
muestra una puntuación de 1
; de lo contrario, muestra 0
.
Parámetros de entrada:
predicted_trajectory
: Es la trayectoria prevista que usa el agente para llegar a la respuesta final.reference_trajectory
: Es la trayectoria prevista esperada para que el agente satisfaga la consulta.
Coincidencia en cualquier orden
metrics.append("trajectory_any_order_match")
Si la trayectoria prevista contiene todas las llamadas a la herramienta de la trayectoria de referencia, pero el orden no importa y puede contener llamadas a herramientas adicionales, la métrica trajectory_any_order_match
muestra una puntuación de 1
; de lo contrario, muestra 0
.
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Precisión
metrics.append("trajectory_precision")
La métrica trajectory_precision
mide cuántas de las llamadas a la herramienta en la trayectoria prevista son realmente relevantes o correctas según la trayectoria de referencia. Es un valor float
en el rango de [0, 1]
: cuanto más alta sea la puntuación, más precisa será la trayectoria prevista.
La precisión se calcula de la siguiente manera: Cuenta cuántas acciones de la trayectoria prevista también aparecen en la trayectoria de referencia. Divide ese recuento por la cantidad total de acciones en la trayectoria prevista.
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Recuperación
metrics.append("trajectory_recall")
La métrica trajectory_recall
mide cuántas de las llamadas a herramientas esenciales de la trayectoria de referencia se capturan en la trayectoria prevista. Es un valor float
en el rango de [0, 1]
: cuanto más alta sea la puntuación, mejor será la recuperación de la trayectoria prevista.
La recuperación se calcula de la siguiente manera: Cuenta cuántas acciones de la trayectoria de referencia también aparecen en la trayectoria prevista. Divide ese recuento por la cantidad total de acciones en la trayectoria de referencia.
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Uso de una sola herramienta
from vertexai.preview.evaluation import metrics
metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))
La métrica trajectory_single_tool_use
verifica si se usa una herramienta específica que se especifica en la especificación de la métrica en la trayectoria prevista. No verifica el orden de las llamadas a la herramienta ni cuántas veces se usa, solo si está presente o no. Es un valor de 0
si la herramienta no está presente, 1
de lo contrario.
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.
Personalizado
Puedes definir una métrica personalizada de la siguiente manera:
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)
)
Las siguientes dos métricas de rendimiento siempre se incluyen en los resultados. No es necesario que los especifiques en EvalTask
:
latency
(float
): Es el tiempo (en segundos) que tarda el agente en responder.failure
(bool
):0
si la invocación del agente se realizó correctamente,1
de lo contrario.
Prepara el conjunto de datos de evaluación
Para preparar tu conjunto de datos para la respuesta final o la evaluación de la trayectoria, haz lo siguiente:
Respuesta final
El esquema de datos para la evaluación de la respuesta final es similar al de la evaluación de la respuesta del modelo.
Concordancia exacta
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Coincidencia en orden
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: Es la trayectoria prevista que usa el agente para llegar a la respuesta final.reference_trajectory
: Es la trayectoria prevista esperada para que el agente satisfaga la consulta.
Coincidencia en cualquier orden
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Precisión
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Recuperación
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.reference_trajectory
: Es el uso esperado de la herramienta para que el agente satisfaga la consulta.
Uso de una sola herramienta
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: Es la lista de llamadas a herramientas que usa el agente para llegar a la respuesta final.
A modo de ejemplo, el siguiente es un ejemplo de un conjunto de datos de evaluación.
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},
},
],
],
})
Conjuntos de datos de ejemplo
Proporcionamos los siguientes conjuntos de datos de ejemplo para demostrar cómo puedes evaluar agentes:
"on-device"
: Es un conjunto de datos de evaluación para un Asistente de Google integrado en el dispositivo. El agente ayuda con consultas como "Programa el aire acondicionado de la habitación para que esté encendido entre las 11 p.m. y las 8 a.m., y apagado el resto del tiempo"."customer-support"
: Conjunto de datos de evaluación para un agente de atención al cliente. El agente ayuda con consultas como "¿Puedes cancelar los pedidos pendientes y derivar los tickets de asistencia abiertos?"."content-creation"
: Conjunto de datos de evaluación para un agente de creación de contenido de marketing. El agente ayuda con consultas como "Reprograma la campaña X para que sea una campaña única en el sitio de redes sociales Y con un presupuesto reducido en un 50%, solo el 25 de diciembre de 2024".
Para importar los conjuntos de datos de ejemplo, sigue estos pasos:
Instala y inicializa la CLI de
gcloud
.Descarga el conjunto de datos de evaluación.
En el dispositivo
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .
Asistencia al cliente
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .
Creación de contenido
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
Carga los ejemplos de conjuntos de datos
import json eval_dataset = json.loads(open('eval_dataset.json').read())
Generar resultados de la evaluación
Para generar los resultados de la evaluación, ejecuta el siguiente código:
from vertexai.preview.evaluation import EvalTask
eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)
Visualiza e interpreta los resultados
Los resultados de la evaluación se muestran de la siguiente manera:
Los resultados de la evaluación contienen la siguiente información:
Métricas de respuesta final
Métricas por fila:
response
: Es la respuesta final que genera el agente.latency_in_seconds
: Es el tiempo (en segundos) que se tardó en generar la respuesta.failure
: Indica si se generó una respuesta válida o no.score
: Es una puntuación calculada para la respuesta especificada en la especificación de la métrica.explanation
: Es la explicación de la puntuación especificada en la especificación de la métrica.
Métricas de resumen:
mean
: Es la puntuación promedio de todas las instancias.standard deviation
: Desviación estándar de todas las puntuaciones.
Métricas de trayectoria
Métricas por fila:
predicted_trajectory
: Es la secuencia de llamadas a la herramienta que sigue el agente para llegar a la respuesta final.reference_trajectory
: Es la secuencia de llamadas a herramientas esperadas.score
: Es una puntuación calculada para la trayectoria prevista y la trayectoria de referencia especificadas en la especificación de la métrica.latency_in_seconds
: Es el tiempo (en segundos) que se tardó en generar la respuesta.failure
: Indica si se generó una respuesta válida o no.
Métricas de resumen:
mean
: Es la puntuación promedio de todas las instancias.standard deviation
: Desviación estándar de todas las puntuaciones.
¿Qué sigue?
Prueba los siguientes notebooks: