Skip to content

Signalbasierte Triage-Warteschlange

Priorisiere die Annotations-Warteschlange anhand eines Qualitätssignals pro Element, damit Prüfer die schlechtesten oder verdächtigsten Traces zuerst sehen, statt in Eingangsreihenfolge zu annotieren. Leite anhand von Agentenfehlern, Daumen-runter in der Produktion, niedrigen Bewertungen oder beliebigen benutzerdefinierten Feldern.

Die Triage-Warteschlange priorisiert die Annotation anhand eines Qualitätssignals pro Element, damit Prüfer die schlechtesten oder verdächtigsten Elemente zuerst sehen, statt in Eingangsreihenfolge (FIFO) zu arbeiten. Das Signal kann ein Agentenfehler, ein Daumen-runter in der Produktion, eine niedrige automatische Bewertung oder ein beliebiges benutzerdefiniertes Feld sein. Es wird sowohl für statisch geladene Daten als auch für zur Laufzeit aufgenommene Traces gelesen und erscheint an zwei Stellen: einem Banner während der Annotation und der Ranking-Seite /admin/triage-queue.

Wenn die menschliche Prüfzeit knapp ist, kommt es auf die Reihenfolge an, in der Elemente die Annotatoren erreichen. Die aussagekräftigsten Elemente zuerst zu leiten, ist die Triage-Hälfte einer aktiven Evaluierungsschleife, und sie ergänzt sich natürlich mit der Judge-Ausrichtung, um Meinungsverschiedenheiten und Fehler zuerst an Menschen zu schicken.

Triage-Abzeichen während der AnnotationEin Prioritätsabzeichen, das erklärt, warum ein Element zur Prüfung markiert wurde

Konfiguration

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

Wenn du rules (und signal_field) weglässt, verwendet Potato einen schlüsselfertigen Standardsatz: Fehlerstatus (100), negatives Feedback (80) und Bewertung unter 0.5 (60).

Bedingungsoperatoren

OperatorBedeutung
equalsexakte Übereinstimmung (Zeichenketten ohne Groß-/Kleinschreibung)
inWert ist einer aus einer Liste
containsListenfeld enthält, oder Teilstring-Übereinstimmung
lt / lte / gt / gtenumerischer Vergleich
existsFeld ist vorhanden oder fehlt (true/false)

Ein numerisches Signal direkt lesen

Statt der Regeln oder zusätzlich dazu kannst du eine Zahl direkt aus einem Feld lesen:

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

Wie die Priorität die Zuweisung steuert

Setze assignment_strategy: priority. Wenn ein Benutzer Elemente benötigt, wird die Warteschlange nach dem gespeicherten triage_priority jedes Elements sortiert (standardmäßig absteigend; order: asc kehrt es um), wobei Gleichstände der Bestimmtheit halber über die ursprüngliche Ladereihenfolge aufgelöst werden, und die obersten Elemente werden zugewiesen. Das Signal wird einmalig zur Lade- oder Aufnahmezeit berechnet und am Element gespeichert, sodass die Zuweisung kostengünstig bleibt.

Das Abzeichen (show_badge: true) ist unabhängig von der Strategie. Es erklärt, warum ein Element markiert wurde, selbst wenn du eine andere Zuweisungsstrategie beibehältst.

Die Admin-Warteschlangenseite

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

Sende den Header X-API-Key. Die Seite zeigt jedes verbleibende (unvollständige) Element nach Priorität geordnet, mit der Regel, die es markiert hat, der aktuellen Annotationsanzahl und ob es bereits zugewiesen ist.

Aufnahme zur Laufzeit

Da der Scorer beim Hinzufügen der Elemente läuft, werden zur Laufzeit über die Trace-Aufnahme (den Webhook-Endpunkt oder einen Langfuse-Poller) aufgenommene Traces bei ihrer Ankunft bewertet und automatisch in die Prioritätswarteschlange eingeordnet. Ein mitten in der Sitzung eingeschobener Trace mit niedriger Bewertung oder Fehler springt vor die sauberen, die noch warten.

Hinweise und Einschränkungen

  • Die Priorität wird zum Einfügezeitpunkt berechnet. Das Bearbeiten von triage.rules und ein Neustart bewerten beim nächsten Laden alles neu.
  • Eine fehlerhafte Regel protokolliert eine Warnung und wird übersprungen; sie blockiert nie das Laden der Daten.
  • Die Triage ordnet, welche Elemente bereitgestellt werden. Sie ändert nicht die Annotationsobergrenzen pro Element.

Verwandt

Für Implementierungsdetails siehe die Quelldokumentation.