Skip to content

Coda di triage basata sui segnali

Dai priorità alla coda di annotazione in base a un segnale di qualità per singolo elemento, così i revisori vedono per primi i trace peggiori o più sospetti anziché annotare in ordine di arrivo. Instrada in base a errori dell'agente, voti negativi in produzione, punteggi bassi o qualsiasi campo personalizzato.

La coda di triage dà priorità all'annotazione in base a un segnale di qualità per singolo elemento, così i revisori vedono per primi gli elementi peggiori o più sospetti invece di lavorare in ordine di arrivo (FIFO). Il segnale può essere un errore dell'agente, un voto negativo in produzione, un punteggio automatico basso o qualsiasi campo personalizzato. Viene letto sia per i dati caricati staticamente sia per i trace acquisiti in fase di esecuzione, e compare in due punti: un banner durante l'annotazione e la pagina di classifica /admin/triage-queue.

Quando il tempo di revisione umana è scarso, conta l'ordine in cui gli elementi arrivano agli annotatori. Instradare per primi gli elementi più informativi è la metà di triage di un ciclo di valutazione attiva, e si abbina naturalmente all'allineamento del giudice per inviare prima ai revisori i disaccordi e gli errori.

Badge di triage durante l'annotazioneUn badge di priorità che spiega perché un elemento è stato contrassegnato per la revisione

Configurazione

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

Se ometti rules (e signal_field), Potato usa un set predefinito pronto all'uso: stato di errore (100), feedback negativo (80) e punteggio inferiore a 0.5 (60).

Operatori di condizione

OperatoreSignificato
equalscorrispondenza esatta (le stringhe non distinguono maiuscole/minuscole)
inil valore è uno di una lista
containsil campo lista contiene, oppure corrispondenza di sottostringa
lt / lte / gt / gteconfronto numerico
existsil campo è presente o assente (true/false)

Leggere direttamente un segnale numerico

Al posto delle regole, o in aggiunta ad esse, puoi leggere un numero direttamente da 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

Come la priorità guida l'assegnazione

Imposta assignment_strategy: priority. Quando un utente ha bisogno di elementi, la coda viene ordinata in base al triage_priority memorizzato di ciascun elemento (decrescente per impostazione predefinita; order: asc lo inverte), con i pareggi risolti in base all'ordine di caricamento originale per garantire il determinismo, e vengono assegnati gli elementi in cima. Il segnale viene calcolato una sola volta al momento del caricamento o dell'acquisizione e memorizzato sull'elemento, così l'assegnazione resta economica.

Il badge (show_badge: true) è indipendente dalla strategia. Spiega perché un elemento è stato contrassegnato anche se mantieni una strategia di assegnazione diversa.

La pagina della coda di amministrazione

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

Invia l'intestazione X-API-Key. La pagina mostra ogni elemento rimanente (incompleto) classificato per priorità, con la regola che l'ha contrassegnato, il conteggio attuale delle annotazioni e se è già assegnato.

Acquisizione in fase di esecuzione

Poiché lo scorer viene eseguito man mano che gli elementi vengono aggiunti, i trace acquisiti in fase di esecuzione tramite l'acquisizione dei trace (l'endpoint webhook o un poller Langfuse) vengono valutati al loro arrivo e si inseriscono automaticamente nella coda di priorità. Un trace con punteggio basso o in errore inserito a metà sessione scavalca quelli puliti ancora in attesa.

Note e limitazioni

  • La priorità viene calcolata al momento dell'inserimento. Modificare triage.rules e riavviare ricalcola tutto al caricamento successivo.
  • Una regola malformata registra un avviso e viene saltata; non blocca mai il caricamento dei dati.
  • Il triage ordina quali elementi vengono serviti. Non modifica i limiti di annotazione per elemento.

Correlati

Per i dettagli di implementazione, consulta la documentazione di origine.