Supervisión de la calidad del agente en el tráfico de producción
Importante
Esta característica está en versión preliminar pública.
En este artículo se describe cómo supervisar la calidad de los agentes implementados en el tráfico de producción mediante la evaluación del agente de IA de Mosaico.
La supervisión en línea es un aspecto fundamental de asegurarse de que el agente está trabajando según lo previsto con las solicitudes reales. Con el cuaderno que se proporciona a continuación, puede ejecutar la evaluación del agente continuamente en las solicitudes atendidas a través de un punto de conexión de servicio de agente. El cuaderno genera un panel que muestra métricas de calidad, así como comentarios del usuario (pulgares hacia arriba 👍 o pulgares hacia abajo 👎) para las salidas del agente en las solicitudes de producción. Estos comentarios pueden llegar a través de la aplicación de revisión de las partes interesadas o la API de comentarios sobre los puntos de conexión de producción que le permiten capturar reacciones del usuario final. El panel le permite segmentar las métricas por diferentes dimensiones, incluidos por tiempo, comentarios del usuario, estado de paso o error y tema de la solicitud de entrada (por ejemplo, para comprender si los temas específicos están correlacionados con salidas de menor calidad). Además, puede profundizar más en las solicitudes individuales con respuestas de baja calidad para depurarlos aún más. Todos los artefactos, como el panel, son totalmente personalizables.
Requisitos
- Las funciones de asistente de IA con tecnología de IA de Azure deben estar habilitadas para el área de trabajo.
- Las tablas de inferencia deben estar habilitadas en el punto de conexión en el que atienda el agente.
Procesar continuamente el tráfico de producción a través de la evaluación del agente
En el cuaderno de ejemplo siguiente se muestra cómo ejecutar la evaluación del agente en los registros de solicitudes desde un punto de conexión de servicio del agente. Para ejecutar el cuaderno, siga estos pasos:
- Importe el cuaderno en el área de trabajo (instrucciones). Puede hacer clic en el botón "Copiar vínculo para importar" debajo para obtener una dirección URL para la importación.
- Rellene los parámetros necesarios en la parte superior del cuaderno importado.
- Nombre del punto de conexión de servicio del agente implementado.
- Frecuencia de muestreo entre 0,0 y 1,0 a solicitudes de ejemplo. Use una tasa más baja para los puntos de conexión con grandes cantidades de tráfico.
- (Opcional) Una carpeta del área de trabajo para almacenar artefactos generados (como paneles). El valor predeterminado es la carpeta principal.
- (Opcional) Lista de temas para clasificar las solicitudes de entrada. El valor predeterminado es una lista que consta de un único tema de captura.
- Haga clic en Ejecutar todo en el cuaderno importado. Esto realizará un procesamiento inicial de los registros de producción en un período de 30 días e inicializará el panel que resume las métricas de calidad.
- Haga clic en Programar para crear un trabajo para ejecutar el cuaderno periódicamente. El trabajo procesará incrementalmente los registros de producción y mantendrá el panel actualizado.
El cuaderno requiere un proceso sin servidor o un clúster que ejecute Databricks Runtime 15.2 o superior. Al supervisar continuamente el tráfico de producción en puntos de conexión con un gran número de solicitudes, se recomienda establecer una programación más frecuente. Por ejemplo, una programación por hora funcionaría bien para un punto de conexión con más de 10 000 solicitudes por hora y una frecuencia de muestreo del 10 %.
Ejecución de la evaluación del agente en el cuaderno de tráfico de producción
Creación de alertas sobre métricas de evaluación
Después de programar que el cuaderno se ejecute periódicamente, puede agregar alertas para recibir notificaciones cuando las métricas de calidad bajen de lo esperado. Estas alertas se crean y usan de la misma manera que otras alertas de SQL de Databricks. En primer lugar, cree una consulta SQL de Databricks en la tabla de registro de solicitudes de evaluación generada por el cuaderno de ejemplo. El código siguiente muestra una consulta de ejemplo sobre la tabla de solicitudes de evaluación, filtrando las solicitudes de la última hora:
SELECT
`date`,
AVG(pass_indicator) as avg_pass_rate
FROM (
SELECT
*,
CASE
WHEN `response/overall_assessment/rating` = 'yes' THEN 1
WHEN `response/overall_assessment/rating` = 'no' THEN 0
ELSE NULL
END AS pass_indicator
-- The eval requests log table is generated by the example notebook
FROM {eval_requests_log_table_name}
WHERE `date` >= CURRENT_TIMESTAMP() - INTERVAL 1 DAY
)
GROUP BY ALL
A continuación, cree una alerta de SQL de Databricks para evaluar la consulta con una frecuencia deseada y envíe una notificación si se desencadena la alerta. En la imagen siguiente se muestra una configuración de ejemplo para enviar una alerta cuando la tasa de paso general cae por debajo del 80 %.
De forma predeterminada, se envía una notificación por correo electrónico. También puede configurar un webhook o enviar notificaciones a otras aplicaciones, como Slack o PagerDuty.
Adición de registros de producción seleccionados a la aplicación de revisión para revisión humana
A medida que los usuarios proporcionan comentarios sobre sus solicitudes, es posible que desee solicitar expertos en la materia que revisen las solicitudes con comentarios negativos (solicitudes con pulgares hacia abajo en la respuesta o las recuperaciones). Para ello, agregue registros específicos a la aplicación de revisión para solicitar una revisión de expertos.
En el código siguiente se muestra una consulta de ejemplo sobre la tabla de registro de evaluación para recuperar la evaluación humana más reciente por identificador de solicitud e identificador de origen:
with ranked_logs as (
select
`timestamp`,
request_id,
source.id as source_id,
text_assessment.ratings["answer_correct"]["value"] as text_rating,
retrieval_assessment.ratings["answer_correct"]["value"] as retrieval_rating,
retrieval_assessment.position as retrieval_position,
row_number() over (
partition by request_id, source.id, retrieval_assessment.position order by `timestamp` desc
) as rank
from {assessment_log_table_name}
)
select
request_id,
source_id,
text_rating,
retrieval_rating
from ranked_logs
where rank = 1
order by `timestamp` desc
En el código siguiente, reemplace ...
en la línea human_ratings_query = "..."
por una consulta similar a la anterior. A continuación, el código siguiente extrae las solicitudes con comentarios negativos y las agrega a la aplicación de revisión:
from databricks import agents
human_ratings_query = "..."
human_ratings_df = spark.sql(human_ratings_query).toPandas()
# Filter out the positive ratings, leaving only negative and "IDK" ratings
negative_ratings_df = human_ratings_df[
(human_ratings_df["text_rating"] != "positive") | (human_ratings_df["retrieval_rating"] != "positive")
]
negative_ratings_request_ids = negative_ratings_df["request_id"].drop_duplicates().to_list()
agents.enable_trace_reviews(
model_name=YOUR_MODEL_NAME,
request_ids=negative_ratings_request_ids,
)
Para obtener más información sobre la aplicación de revisión, consulte Obtener comentarios sobre la calidad de una aplicación agente.