分类器信号
概览
classifier 暴露本地原生序列分类器、远程序列分类器或已配置外部 LLM 的可复用标签分数。决策通过数值谓词或显式绑定的工作点测试已声明标签。
专用的 domain、PII、jailbreak、fact-check、KB 与 preference 信号仍是各自领域的首选接口。
主要优势
- 接入任意序列分类头,而不添加领域逻辑
- 将 LLM 分类器约束到已声明标签与确定性 JSON 输出
- 计算一份标签映射,多条决策可按不同分数门控
解决什么问题?
有些已训练分类器不属于内置信号分类体系。classifier 信号把这些标签与分数暴露给决策,而不把分类与路由结果混在一起。
何时使用
对真正可复用的分类头或提示式 LLM 标注器使用该信号。参考短语相似度请优先用 embedding/KB 信号,响应风格路由请用 preference 信号。
配置
routing:
signals:
classifiers:
- name: phishing
type: local
model_path: models/phishing-email
labels: [BENIGN, PHISHING]
use_cpu: true
decisions:
- name: phishing-local
description: Keep suspected phishing requests on the local model.
priority: 200
rules:
operator: AND
on_unknown: no_match
conditions:
- type: classifier
name: phishing
label: PHISHING
predicate:
gte: 0.5
modelRefs:
- model: local-small
use_reasoning: false
LLM 分类器引用命名的 global.model_catalog.external 条目,并添加 instructions。运行时固定温度、输出 schema、精确标签校验,以及默认 1 MiB 的响应上限。在外部模型条目上设置 max_response_bytes 可覆盖该上限。因为运行时拥有输出 schema,该条目上的 parser_type 必须是 json 或未设置;其他值会在配置加载时被拒绝。模型必须为每个已声明标签报告分数;每个分数必须在 0 与 1 之间,完整分布 必须大约合计为 1.0。这些是模型报告的置信度分数,不是校准过的分类器概率。Classifier 叶是唯一接受 on_error 的决策谓词;失败会在 eval/回放诊断中暴露有界的 classifier_evaluation_failed 代码。
LLM 分类器也可以在外部模型上声明 reasoning 请求偏好:
global:
model_catalog:
external:
- name: risk-judge
llm_provider: vllm
model_role: classification
llm_endpoint:
address: vllm-classifier.example.com
port: 8000
protocol: http
llm_model_name: qwen/qwen3.8-27b
reasoning:
family: qwen3.8
use_reasoning: true
reasoning_effort: low
family 引用已有的 reasoning family;外部模型不能内联定义新 family。只要出现该配置块,family 与 use_reasoning 都是必填项。启用 reasoning 时,reasoning_effort 可省略;若填写,则必须属于该 family 声明的档位。配置若尝试关闭 always-on family,或在 reasoning 已关闭时仍设置 effort,会在加载阶段被拒绝。
Reasoning 控制目前只支持使用 llm_provider: vllm 的外部分类器。mode 与普通 effort 控制会投影到 chat_template_kwargs;声明为 top_level_reasoning_effort 的 family 则使用类型化的顶层 reasoning_effort 字段。该控制只作用于 type: llm 的分类器请求,不影响 sequence_classifier