Después de crear y evaluar tu modelo de IA generativa, puedes usarlo para crear un agente, como un chatbot. El servicio de evaluación de IA generativa te permite medir la capacidad de tu agente para completar tareas y objetivos en tu caso práctico.
Información general
Tienes las siguientes opciones para evaluar tu agente:
Evaluación de la respuesta final: evalúa el resultado final de un agente (si ha conseguido su objetivo o no).
Evaluación de la trayectoria: evalúa la ruta (secuencia de llamadas a herramientas) que ha seguido el agente para llegar a la respuesta final.
Con el servicio de evaluación de IA generativa, puedes activar la ejecución de un agente y obtener métricas tanto de la evaluación de la trayectoria como de la evaluación de la respuesta final en una consulta del SDK de Vertex AI.
Agentes admitidos
El servicio de evaluación de la IA generativa admite las siguientes categorías de agentes:
Agentes admitidos | Descripción |
---|---|
Agente creado con la plantilla de Agent Engine | Agent Engine (LangChain en Vertex AI) es una Google Cloud plataforma en la que puedes desplegar y gestionar agentes. |
Agentes de LangChain creados con la plantilla personalizable de Agent Engine | LangChain es una plataforma de código abierto. |
Función de agente personalizada | Una función de agente personalizada es una función flexible que recibe una petición para el agente y devuelve una respuesta y una trayectoria en un diccionario. |
Definir métricas para la evaluación de agentes
Defina las métricas para la respuesta final o la evaluación de la trayectoria:
Evaluación final de la respuesta
La evaluación de la respuesta final sigue el mismo proceso que la evaluación de la respuesta del modelo. Para obtener más información, consulta Definir las métricas de evaluación.
Evaluación de la trayectoria
Las siguientes métricas le ayudan a evaluar la capacidad del modelo para seguir la trayectoria esperada:
Concordancia exacta
Si la trayectoria prevista es idéntica a la 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 de métricas
Parámetro de entrada | Descripción |
---|---|
predicted_trajectory |
Lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final. |
reference_trajectory |
El uso de la herramienta previsto para que el agente responda a la consulta. |
Puntuaciones de salida
Valor | Descripción |
---|---|
0 | La trayectoria prevista no coincide con la de referencia. |
1 | La trayectoria prevista coincide con la de referencia. |
Coincidencia en orden
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 de métricas
Parámetro de entrada | Descripción |
---|---|
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. |
Puntuaciones de salida
Valor | Descripción |
---|---|
0 | Las llamadas a herramientas de la trayectoria prevista no coinciden con el orden de la trayectoria de referencia. |
1 | La trayectoria prevista coincide con la de referencia. |
Coincidencia en cualquier orden
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 de métricas
Parámetro de entrada | Descripción |
---|---|
predicted_trajectory |
Lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final. |
reference_trajectory |
El uso de la herramienta previsto para que el agente responda a la consulta. |
Puntuaciones de salida
Valor | Descripción |
---|---|
0 | La trayectoria prevista no contiene todas las llamadas a herramientas de la trayectoria de referencia. |
1 | La trayectoria prevista coincide con la de referencia. |
Precisión
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.
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 de métricas
Parámetro de entrada | Descripción |
---|---|
predicted_trajectory |
Lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final. |
reference_trajectory |
El uso de la herramienta previsto para que el agente responda a la consulta. |
Puntuaciones de salida
Valor | Descripción |
---|---|
Un número flotante en el intervalo [0,1] | Cuanto mayor sea la puntuación, más precisa será la trayectoria prevista. |
Recuperación
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.
La precisión 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 de métricas
Parámetro de entrada | Descripción |
---|---|
predicted_trajectory |
Lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final. |
reference_trajectory |
El uso de la herramienta previsto para que el agente responda a la consulta. |
Puntuaciones de salida
Valor | Descripción |
---|---|
Un número flotante en el intervalo [0,1] | Cuanto mayor sea la puntuación, mejor será la recuperación de la trayectoria prevista. |
Uso de una sola herramienta
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.
Parámetros de entrada de métricas
Parámetro de entrada | Descripción |
---|---|
predicted_trajectory |
Lista de llamadas a herramientas que ha usado el agente para llegar a la respuesta final. |
Puntuaciones de salida
Valor | Descripción |
---|---|
0 | La herramienta no está disponible |
1 | La herramienta está presente. |
Además, las dos métricas de rendimiento de agentes siguientes se añaden a los resultados de la evaluación de forma predeterminada. No es necesario que los especifiques en EvalTask
.
latency
Tiempo que tarda el agente en devolver una respuesta.
Valor | Descripción |
---|---|
Un flotante | Se calcula en segundos. |
failure
Valor booleano que indica si la invocación del agente ha dado lugar a un error o se ha completado correctamente.
Puntuaciones de salida
Valor | Descripción |
---|---|
1 | Error |
0 | Se ha devuelto una respuesta válida |
Preparar un conjunto de datos para evaluar un agente
Prepara tu conjunto de datos para la respuesta final o la evaluación de la trayectoria.
El esquema de datos para la evaluación de la respuesta final es similar al de la evaluación de la respuesta del modelo.
Para evaluar la trayectoria basada en cálculos, su conjunto de datos debe proporcionar la siguiente información:
Tipo de entrada | Contenido del campo de entrada |
---|---|
predicted_trajectory |
Lista de llamadas a herramientas que han usado los agentes para llegar a la respuesta final. |
reference_trajectory (no es necesario para trajectory_single_tool_use metric ) |
El uso de la herramienta previsto para que el agente responda a la consulta. |
Ejemplos de conjuntos de datos de evaluación
En los siguientes ejemplos se muestran conjuntos de datos para la evaluación de trayectorias. Ten en cuenta que reference_trajectory
es obligatorio para todas las métricas, excepto para trajectory_single_tool_use
.
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
}
},
]
]
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
}
},
]
]
eval_dataset = pd.DataFrame({
"predicted_trajectory": predicted_trajectory,
"reference_trajectory": reference_trajectory,
})
Importar el conjunto de datos de evaluación
Puede importar su conjunto de datos en los siguientes formatos:
Archivo JSONL o CSV almacenado en Cloud Storage
Tabla de BigQuery
Pandas DataFrame
El servicio de evaluación de la IA generativa proporciona conjuntos de datos públicos de ejemplo para mostrar cómo puedes evaluar tus agentes. En el siguiente código se muestra cómo importar los conjuntos de datos públicos de un segmento de Cloud Storage:
# dataset name to be imported
dataset = "on-device" # Alternatives: "customer-support", "content-creation"
# copy the tools and dataset file
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/tools.py .
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/eval_dataset.json .
# load the dataset examples
import json
eval_dataset = json.loads(open('eval_dataset.json').read())
# run the tools file
%run -i tools.py
donde dataset
es uno de los siguientes conjuntos de datos públicos:
"on-device"
para un Asistente de casa en el dispositivo, que controla los dispositivos domésticos. El agente te 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"
para hablar con un agente del servicio de atención al cliente. El agente puede ayudarte con consultas como "¿Puedes cancelar los pedidos pendientes y derivar los tickets de asistencia abiertos?"."content-creation"
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 del 2024".
Hacer una evaluación de agentes
Realiza una evaluación de la trayectoria o de la respuesta final:
Para evaluar a los agentes, puedes combinar métricas de evaluación de respuestas y métricas de evaluación de trayectorias, como en el siguiente código:
single_tool_use_metric = TrajectorySingleToolUse(tool_name='tool_name')
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[
"rouge_l_sum",
"bleu",
custom_trajectory_eval_metric, # custom computation-based metric
"trajectory_exact_match",
"trajectory_precision",
single_tool_use_metric,
response_follows_trajectory_metric # llm-based metric
],
)
eval_result = eval_task.evaluate(
runnable=RUNNABLE,
)
Personalización de métricas
Puedes personalizar una métrica basada en un modelo de lenguaje extenso para evaluar la trayectoria mediante una interfaz con plantillas o desde cero. Para obtener más información, consulta la sección sobre métricas basadas en modelos. Aquí tienes un ejemplo de plantilla:
response_follows_trajectory_prompt_template = PointwiseMetricPromptTemplate(
criteria={
"Follows trajectory": (
"Evaluate whether the agent's response logically follows from the "
"sequence of actions it took. Consider these sub-points:\n"
" - Does the response reflect the information gathered during the trajectory?\n"
" - Is the response consistent with the goals and constraints of the task?\n"
" - Are there any unexpected or illogical jumps in reasoning?\n"
"Provide specific examples from the trajectory and response to support your evaluation."
)
},
rating_rubric={
"1": "Follows trajectory",
"0": "Does not follow trajectory",
},
input_variables=["prompt", "predicted_trajectory"],
)
response_follows_trajectory_metric = PointwiseMetric(
metric="response_follows_trajectory",
metric_prompt_template=response_follows_trajectory_prompt_template,
)
También puedes definir una métrica personalizada basada en cálculos para evaluar la trayectoria o la respuesta de la siguiente manera:
def essential_tools_present(instance, required_tools = ["tool1", "tool2"]):
trajectory = instance["predicted_trajectory"]
tools_present = [tool_used['tool_name'] for tool_used in trajectory]
if len(required_tools) == 0:
return {"essential_tools_present": 1}
score = 0
for tool in required_tools:
if tool in tools_present:
score += 1
return {
"essential_tools_present": score/len(required_tools),
}
custom_trajectory_eval_metric = CustomMetric(name="essential_tools_present", metric_function=essential_tools_present)
Ver e interpretar los resultados
En el caso de la evaluación de la trayectoria o de la respuesta final, 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
Resultados a nivel de instancia
Columna | Descripción |
---|---|
response | Respuesta final generada por el agente. |
latency_in_seconds | Tiempo que se ha tardado en generar la respuesta. |
error | Indica si se ha generado una respuesta válida o no. |
puntuación | Puntuación calculada para la respuesta especificada en la especificación de la métrica. |
explicación | Explicación de la puntuación especificada en la especificación de la métrica. |
Resultados agregados
Columna | Descripción |
---|---|
media | Puntuación media de todas las instancias. |
desviación estándar | Desviación estándar de todas las puntuaciones. |
Métricas de trayectoria
Resultados a nivel de instancia
Columna | Descripción |
---|---|
predicted_trajectory | Secuencia de llamadas a herramientas seguida del agente para llegar a la respuesta final. |
reference_trajectory | Secuencia de llamadas a herramientas esperadas. |
puntuación | 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 que se ha tardado en generar la respuesta. |
error | Indica si se ha generado una respuesta válida o no. |
Resultados agregados
Columna | Descripción |
---|---|
media | Puntuación media de todas las instancias. |
desviación estándar | Desviación estándar de todas las puntuaciones. |
Protocolo Agent2Agent (A2A)
Si vas a crear un sistema multiagente, te recomendamos que consultes el protocolo A2A. El protocolo A2A es un estándar abierto que permite la comunicación y la colaboración fluidas entre agentes de IA, independientemente de sus frameworks subyacentes. Linux Foundation recibió una donación de Google Cloud en junio del 2025. Para usar los SDKs de A2A o probar las muestras, consulta el repositorio de GitHub.
Siguientes pasos
Prueba los siguientes cuadernos de evaluación de agentes: