Skip to content

基于信号的分流队列

按每条数据的质量信号对标注队列排序,让评审员优先看到最糟糕或最可疑的轨迹,而不是按到达顺序标注。可根据智能体错误、生产环境的踩、低分或任意自定义字段进行路由。

分流队列按每条数据的质量信号对标注排序,让评审员优先看到最糟糕或最可疑的条目,而不是按到达(FIFO)顺序处理。该信号可以是智能体错误、生产环境的踩、自动评估的低分,或任意自定义字段。无论是静态加载的数据还是运行时摄取的轨迹,都会读取该信号,并在两处呈现:标注过程中的横幅,以及 /admin/triage-queue 排名页面。

当人工评审时间紧缺时,条目到达标注员的顺序就很重要。优先路由信息量最大的条目,是主动评估循环中的分流环节,它能与评判对齐自然配合,将分歧和错误优先交给人处理。

标注过程中的分流徽章解释某条目为何被标记待审的优先级徽章

配置

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

如果省略 rules(以及 signal_field),Potato 会使用一套开箱即用的默认规则:错误状态(100)、负面反馈(80)以及分数低于 0.5(60)。

条件运算符

运算符含义
equals精确匹配(字符串不区分大小写)
in值是列表中的某一项
contains列表字段包含,或子串匹配
lt / lte / gt / gte数值比较
exists字段存在或不存在(true/false

直接读取数值信号

除了规则之外,或与规则结合,你还可以直接从某个字段读取一个数字:

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

优先级如何驱动分配

设置 assignment_strategy: priority。当某个用户需要条目时,队列会按每个条目存储的 triage_priority 排序(默认降序;order: asc 会反转),并以原始加载顺序作为平局判定以保证确定性,然后分配排在最前面的条目。该信号在加载或摄取时计算一次并存储在条目上,因此分配开销很低。

徽章(show_badge: true)独立于分配策略。即使你保留其他分配策略,它也会解释某条目为何被标记。

管理员队列页面

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

发送 X-API-Key 头。该页面显示所有剩余(未完成)条目,按优先级排名,并列出标记它的规则、当前标注次数,以及它是否已被分配。

运行时摄取

由于评分器会在条目加入时运行,通过轨迹摄取(webhook 端点或 Langfuse 轮询器)在运行时摄取的轨迹会在到达时被评分,并自动进入优先级队列。会话进行中推入的低分或出错轨迹,会插队到仍在等待的干净轨迹之前。

注意事项与限制

  • 优先级在插入时计算。编辑 triage.rules 并重启后,下次加载时会重新评分所有条目。
  • 格式错误的规则会记录一条警告并被跳过;它绝不会阻塞数据加载。
  • 分流决定条目的服务顺序,但不会改变每条目的标注上限。

相关内容

有关实现细节,请参阅源文档