Skip to content

Fila de triagem baseada em sinais

Priorize a fila de anotação por um sinal de qualidade por item para que os revisores vejam primeiro os traces piores ou mais suspeitos, em vez de anotar por ordem de chegada. Encaminhe por erros do agente, votos negativos em produção, pontuações baixas ou qualquer campo personalizado.

A fila de triagem prioriza a anotação por um sinal de qualidade por item, para que os revisores vejam primeiro os itens piores ou mais suspeitos em vez de trabalhar por ordem de chegada (FIFO). O sinal pode ser um erro do agente, um voto negativo em produção, uma pontuação automática baixa ou qualquer campo personalizado. Ele é lido tanto para dados carregados estaticamente quanto para traces ingeridos em tempo de execução, e aparece em dois lugares: um banner durante a anotação e a página de classificação /admin/triage-queue.

Quando o tempo de revisão humana é escasso, a ordem em que os itens chegam aos anotadores importa. Encaminhar primeiro os itens mais informativos é a metade de triagem de um ciclo de avaliação ativa, e combina naturalmente com o alinhamento do juiz para enviar discordâncias e erros primeiro às pessoas.

Selo de triagem durante a anotaçãoUm selo de prioridade que explica por que um item foi sinalizado para revisão

Configuração

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 você omitir rules (e signal_field), o Potato usa um conjunto padrão pronto para uso: status de erro (100), feedback negativo (80) e pontuação abaixo de 0.5 (60).

Operadores de condição

OperadorSignificado
equalscorrespondência exata (as cadeias não diferenciam maiúsculas)
ino valor é um de uma lista
containso campo de lista contém, ou correspondência de subcadeia
lt / lte / gt / gtecomparação numérica
existso campo está presente ou ausente (true/false)

Ler um sinal numérico diretamente

Em vez das regras, ou além delas, você pode ler um número diretamente de um campo:

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

Como a prioridade orienta a atribuição

Defina assignment_strategy: priority. Quando um usuário precisa de itens, a fila é ordenada pelo triage_priority armazenado de cada item (decrescente por padrão; order: asc inverte), com os empates resolvidos pela ordem de carregamento original para garantir determinismo, e os itens do topo são atribuídos. O sinal é calculado uma única vez no momento do carregamento ou da ingestão e armazenado no item, então a atribuição continua barata.

O selo (show_badge: true) é independente da estratégia. Ele explica por que um item foi sinalizado mesmo que você mantenha uma estratégia de atribuição diferente.

A página de fila do administrador

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

Envie o cabeçalho X-API-Key. A página mostra cada item restante (incompleto) classificado por prioridade, com a regra que o sinalizou, a contagem atual de anotações e se ele já está atribuído.

Ingestão em tempo de execução

Como o pontuador é executado à medida que os itens são adicionados, os traces ingeridos em tempo de execução por meio da ingestão de traces (o endpoint de webhook ou um poller do Langfuse) são pontuados conforme chegam e se encaixam automaticamente na fila de prioridade. Um trace com pontuação baixa ou com erro inserido no meio da sessão passa à frente dos limpos que ainda aguardam.

Notas e limitações

  • A prioridade é calculada no momento da inserção. Editar triage.rules e reiniciar repontua tudo no próximo carregamento.
  • Uma regra malformada registra um aviso e é ignorada; ela nunca bloqueia o carregamento dos dados.
  • A triagem ordena quais itens são servidos. Ela não altera os limites de anotação por item.

Relacionados

Para detalhes de implementação, consulte a documentação de origem.