Skip to main content
Documentation

Classifier Signal

Overview

Version: Latest

Classifier Signal

Overview

classifier exposes reusable label scores from a local native sequence classifier or a configured external LLM. Decisions test a declared label with a required numeric predicate.

Specialized domain, PII, jailbreak, fact-check, KB, and preference signals remain the preferred interfaces for their respective domains.

Key Advantages

  • integrates arbitrary sequence-classification heads without adding domain logic
  • constrains LLM classifiers to declared labels and deterministic JSON output
  • computes one label map that multiple decisions can gate at different scores

What Problem Does It Solve?

Some trained classifiers do not belong to the built-in signal taxonomies. The classifier signal provides a narrow label-score seam while preserving the separation between fact extraction and decision control logic.

When to Use

Use this signal for a genuine reusable classification head or a prompted LLM labeler. Prefer embedding/KB signals for reference-phrase similarity and preference signals for response-style routing.

Configuration

routing:
signals:
classifiers:
- name: phishing
type: local
model_path: models/phishing-email
labels: [BENIGN, PHISHING]
use_cpu: true

decisions:
- name: phishing-local
rules:
operator: AND
conditions:
- type: classifier
name: phishing
label: PHISHING
predicate:
gte: 0.5
on_error: no_match
modelRefs:
- model: local-small
use_reasoning: false

LLM classifiers reference a named global.model_catalog.external entry and add instructions. The runtime fixes temperature, output schema, token bounds, and exact-label validation. Classifier leaves are the only decision predicates that accept on_error; failures expose the bounded classifier_evaluation_failed code in eval/replay diagnostics.

Local classifiers use model_path; paths under models/ participate in the normal model registry/download flow. One binary local generic classifier is supported per process, and its decision predicates use gte: 0.5 or higher on the winning-label confidence. Changing its model or label order requires a router restart so an in-flight config reload cannot swap process-global native state. Management API updates that attempt this mutation return RESTART_REQUIRED rather than applying a partial runtime snapshot.