Después de desarrollar un agente, puedes usar el servicio de evaluación de IA generativa para evaluar la capacidad del agente de completar tareas y objetivos en un caso práctico concreto.
Definir métricas de evaluación
Empieza con una lista de métricas vacía (por ejemplo, metrics = []
) y añade 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 Definir las 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 herramientas en el mismo orden, la métrica trajectory_exact_match
devuelve una puntuación de 1
; de lo contrario, devuelve 0
.
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a la consulta.
Coincidencia en orden
metrics.append("trajectory_in_order_match")
Si la trayectoria prevista contiene todas las llamadas a herramientas de la trayectoria de referencia en el mismo orden y puede tener llamadas a herramientas adicionales, la métrica trajectory_in_order_match
devuelve una puntuación de 1
; de lo contrario, devuelve 0
.
Parámetros de entrada:
predicted_trajectory
: la trayectoria prevista que usa el agente para llegar a la respuesta final.reference_trajectory
: la trayectoria prevista del agente para responder a la consulta.
Coincidencia en cualquier orden
metrics.append("trajectory_any_order_match")
Si la trayectoria prevista contiene todas las llamadas a herramientas de la trayectoria de referencia, pero el orden no importa y puede contener llamadas a herramientas adicionales, la métrica trajectory_any_order_match
devuelve una puntuación de 1
; de lo contrario, devuelve 0
.
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a la consulta.
Precisión
metrics.append("trajectory_precision")
La métrica trajectory_precision
mide cuántas de las llamadas a herramientas de la trayectoria prevista son relevantes o correctas según la trayectoria de referencia. Es un valor de float
en el intervalo de [0, 1]
: cuanto mayor 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 predicha también aparecen en la trayectoria de referencia. Divide ese recuento entre el número total de acciones de la trayectoria prevista.
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a 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 realmente en la trayectoria prevista. Es un valor float
en el intervalo de [0, 1]
: cuanto mayor sea la puntuación, mejor será el recuerdo de la trayectoria prevista.
El recall se calcula de la siguiente manera: cuenta cuántas acciones de la trayectoria de referencia también aparecen en la trayectoria predicha. Divide ese recuento entre el número total de acciones de la trayectoria de referencia.
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a 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
comprueba si se usa una herramienta específica que se indica en la especificación de la métrica en la trayectoria prevista. No comprueba el orden de las llamadas a herramientas ni cuántas veces se usa la herramienta, solo si está presente o no. Es un valor de 0
si la herramienta no está presente y 1
en caso contrario.
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.
Personalizado
Puede 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 dos métricas de rendimiento siguientes siempre se incluyen en los resultados. No es necesario que los especifiques en EvalTask
:
latency
(float
): tiempo que tarda el agente en responder (en segundos).failure
(bool
):0
si la invocación del agente se ha realizado correctamente; de lo contrario,1
.
Preparar el conjunto de datos de evaluación
Para preparar tu conjunto de datos para la respuesta final o la evaluación de la trayectoria, sigue estos pasos:
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
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a la consulta.
Coincidencia en orden
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: la trayectoria prevista que usa el agente para llegar a la respuesta final.reference_trajectory
: la trayectoria prevista del agente para responder a la consulta.
Coincidencia en cualquier orden
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a la consulta.
Precisión
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a la consulta.
Recuperación
El conjunto de datos de evaluación debe proporcionar las siguientes entradas:
Parámetros de entrada:
predicted_trajectory
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.reference_trajectory
: el uso esperado de la herramienta por parte del agente para responder a 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
: lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final.
A modo de ejemplo, a continuación se muestra 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
Hemos proporcionado los siguientes conjuntos de datos de ejemplo para mostrar cómo puedes evaluar agentes:
"on-device"
: conjunto de datos de evaluación de un asistente para el hogar en el dispositivo. El agente ayuda con consultas como "Programa el aire acondicionado del dormitorio para que esté encendido entre las 23:00 y las 8:00, y apagado el resto del tiempo"."customer-support"
: conjunto de datos de evaluación de un agente de asistencia. El agente ayuda con consultas como "¿Puedes cancelar los pedidos pendientes y derivar las incidencias de asistencia abiertas?"."content-creation"
: conjunto de datos de evaluación de 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 del 2024".
Para importar los conjuntos de datos de ejemplo, siga estos pasos:
Instala e 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 .
Servicio de asistencia
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 .
Cargar los ejemplos de conjuntos de datos
import json eval_dataset = json.loads(open('eval_dataset.json').read())
Generar resultados de 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)
Ver e interpretar 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 filas:
response
: respuesta final generada por el agente.latency_in_seconds
: tiempo empleado (en segundos) para generar la respuesta.failure
: indica si se ha generado una respuesta válida o no.score
: una puntuación calculada para la respuesta especificada en la especificación de la métrica.explanation
: la explicación de la puntuación especificada en la especificación de la métrica.
Métricas de resumen:
mean
: puntuación media de todas las instancias.standard deviation
: desviación estándar de todas las puntuaciones.
Métricas de trayectoria
Métricas por filas:
predicted_trajectory
: secuencia de llamadas a herramientas seguida por el agente para llegar a la respuesta final.reference_trajectory
: secuencia de llamadas a herramientas esperadas.score
: puntuación calculada para la trayectoria predicha y la trayectoria de referencia especificadas en la especificación de la métrica.latency_in_seconds
: tiempo empleado (en segundos) para generar la respuesta.failure
: indica si se ha generado una respuesta válida o no.
Métricas de resumen:
mean
: puntuación media de todas las instancias.standard deviation
: desviación estándar de todas las puntuaciones.
Siguientes pasos
Prueba los siguientes cuadernos: