Skip to content

Cola de triaje basada en señales

Prioriza la cola de anotación según una señal de calidad por elemento para que los revisores vean primero las trazas peores o más sospechosas, en lugar de anotar por orden de llegada. Enruta por errores del agente, votos negativos en producción, puntuaciones bajas o cualquier campo personalizado.

La cola de triaje prioriza la anotación según una señal de calidad por elemento, de modo que los revisores vean primero los elementos peores o más sospechosos en lugar de trabajar por orden de llegada (FIFO). La señal puede ser un error del agente, un voto negativo en producción, una puntuación automática baja o cualquier campo personalizado. Se lee tanto para los datos cargados de forma estática como para las trazas ingeridas en tiempo de ejecución, y aparece en dos lugares: un banner durante la anotación y la página de clasificación /admin/triage-queue.

Cuando el tiempo de revisión humana es escaso, importa el orden en que los elementos llegan a los anotadores. Enrutar primero los elementos más informativos es la mitad de triaje de un bucle de evaluación activa, y se combina de forma natural con la alineación del juez para enviar primero los desacuerdos y errores a las personas.

Insignia de triaje durante la anotaciónUna insignia de prioridad que explica por qué un elemento se marcó para revisión

Configuración

yaml
triage:
  enabled: true
  order: desc            # high priority first (default); 'asc' = low first
  default_priority: 0    # items matching no rule
  show_badge: true       # banner during annotation explaining the priority
  rules:                 # evaluated in order; highest matching priority wins
    - name: "Agent errored"
      badge: "Agent errored"     # banner text (defaults to name)
      priority: 100
      when:
        field: status            # dotted paths allowed, e.g. metadata.tags
        equals: error
    - name: "Negative feedback"
      priority: 80
      when:
        field: feedback
        in: [thumbs_down, negative]
    - name: "Low quality score"
      priority: 60
      when:
        field: score
        lt: 0.5
 
# Serve the highest-priority items first. If you enable triage without setting
# assignment_strategy, Potato defaults to `priority` automatically.
assignment_strategy: priority

Si omites rules (y signal_field), Potato usa un conjunto predeterminado listo para usar: estado de error (100), retroalimentación negativa (80) y puntuación inferior a 0.5 (60).

Operadores de condición

OperadorSignificado
equalscoincidencia exacta (las cadenas no distinguen mayúsculas)
inel valor es uno de una lista
containsel campo de lista contiene, o coincidencia de subcadena
lt / lte / gt / gtecomparación numérica
existsel campo está presente o ausente (true/false)

Leer una señal numérica directamente

En lugar de las reglas, o además de ellas, puedes leer un número directamente de un campo:

yaml
triage:
  enabled: true
  signal_field: quality_score   # used as the priority when no rule matches
  invert_signal: true           # lower score => higher priority

Cómo la prioridad impulsa la asignación

Configura assignment_strategy: priority. Cuando un usuario necesita elementos, la cola se ordena por el triage_priority almacenado de cada elemento (descendente por defecto; order: asc lo invierte), con los empates resueltos por el orden de carga original para garantizar el determinismo, y se asignan los elementos superiores. La señal se calcula una sola vez en el momento de la carga o la ingesta y se almacena en el elemento, de modo que la asignación sigue siendo barata.

La insignia (show_badge: true) es independiente de la estrategia. Explica por qué se marcó un elemento aunque mantengas una estrategia de asignación distinta.

La página de cola de administración

text
GET /admin/triage-queue              # JSON
GET /admin/triage-queue?format=html  # rendered page

Envía el encabezado X-API-Key. La página muestra todos los elementos restantes (incompletos) clasificados por prioridad, con la regla que los marcó, el recuento de anotaciones actual y si ya están asignados.

Ingesta en tiempo de ejecución

Como el puntuador se ejecuta a medida que se añaden los elementos, las trazas ingeridas en tiempo de ejecución mediante la ingesta de trazas (el endpoint del webhook o un sondeador de Langfuse) se puntúan a medida que llegan y se insertan automáticamente en la cola de prioridad. Una traza con puntuación baja o con error introducida a mitad de sesión se adelanta a las limpias que aún esperan.

Notas y limitaciones

  • La prioridad se calcula en el momento de la inserción. Editar triage.rules y reiniciar vuelve a puntuar todo en la siguiente carga.
  • Una regla mal formada registra una advertencia y se omite; nunca bloquea la carga de datos.
  • El triaje ordena qué elementos se sirven. No cambia los límites de anotación por elemento.

Relacionado

Para detalles de implementación, consulta la documentación de origen.