跳到主要内容
版本:最新版(main)

拒答信号

概述​

refusal 询问决策模型,模型的答案是否拒绝了请求。它在响应阶段提出 refusal 预设问题:“Did the assistant refuse?”,选项为 compliance 和 refusal。它读取答案,所以拒答规则只在模型回答之后才存在:由响应插件读取,决策的规则永远不读取它。

主要优势​

  • 无需单独的分类器就能识别拒答。
  • 与其他响应阶段信号使用同一个决策模型和同一次调用。
  • 默认值不合适时,用 predicate 设置工作点。

解决什么问题?​

即使请求路由正确,拒绝一个正常请求的答案也是失败的答案。refusal 给这种结果命名,让响应插件可以据此行动。escalate 提出同一个问题,以便在候选拒答时转向下一个(accept.refusal: false)。

何时使用​

在以下情况使用 refusal:

  • response_guard 应对拒绝请求的答案加注说明或拦截;
  • 你要统计某条路由的模型拒答的频率。

配置​

recipes:
- name: default
signals:
refusal:
- name: declined
description: The answer declines the request or refuses to help.
predicate:
gte: 0.5
decisions:
- name: assistant
priority: 100
rules:
operator: AND
conditions: []
modelRefs:
- model: answer-model
plugins:
- type: response_guard
configuration:
rules:
- when: {type: refusal, name: declined}
action: annotate
字段含义
name规则名称,供防护规则以 {type: refusal, name: ...} 使用
description规则检测的内容
predicaterefusal 的最低概率;默认为回答模型的校准阈值,否则为 0.5
deployment回答规则的部署;否则为 refusal 绑定,再否则为决策模型
timeout_ms答案的截止时间

这个问题会把请求和答案发给部署。vela3-fast 和 Vela 3.0 的 d3 规格有它的训练形式;其他模型零样本回答。完整示例见 config/fragments/signal/refusal/refusal.yaml。