pub struct ClassifiersConfig {
pub enabled: bool,
pub timeout_ms: u64,
pub injection_model: String,
pub injection_threshold: f32,
pub injection_model_sha256: Option<String>,
pub pii_enabled: bool,
pub pii_model: String,
pub pii_threshold: f32,
pub pii_model_sha256: Option<String>,
}Expand description
Configuration for the ML-backed classifier subsystem.
Placed under [classifiers] in config.toml. All fields are optional with safe defaults
so existing configs continue to work when this section is absent.
When enabled = false (the default), all classifier code is bypassed and the existing
regex-based detection runs unchanged.
Fields§
§enabled: boolMaster switch. When false, classifiers are never loaded or invoked.
timeout_ms: u64Per-inference timeout in milliseconds.
On timeout the call site falls back to regex. Separate from model download time.
injection_model: StringHuggingFace repo ID for the injection detection model.
injection_threshold: f32Minimum classifier score to treat a result as an injection.
Range: (0.0, 1.0]. Conservative default of 0.8 minimises false positives.
injection_model_sha256: Option<String>Optional SHA-256 hex digest of the injection model safetensors file.
When set, the file is verified before loading. Mismatch aborts startup with an error. Useful for security-sensitive deployments to detect corruption or tampering.
pii_enabled: boolEnable PII detection via the NER model (pii_model).
When true, CandlePiiClassifier runs on user messages in addition to the
regex-based PiiFilter. Both results are merged (union with deduplication).
pii_model: StringHuggingFace repo ID for the PII NER model.
pii_threshold: f32Minimum per-token confidence to accept a PII label.
Tokens below this threshold are treated as O (no entity).
Default 0.75 balances recall on rarer entity types (DRIVERLICENSE, PASSPORT, IBAN)
with precision. Raise to 0.85 to prefer precision over recall.
pii_model_sha256: Option<String>Optional SHA-256 hex digest of the PII model safetensors file.
Trait Implementations§
Source§impl Clone for ClassifiersConfig
impl Clone for ClassifiersConfig
Source§fn clone(&self) -> ClassifiersConfig
fn clone(&self) -> ClassifiersConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ClassifiersConfig
impl Debug for ClassifiersConfig
Source§impl Default for ClassifiersConfig
impl Default for ClassifiersConfig
Source§fn default() -> ClassifiersConfig
fn default() -> ClassifiersConfig
Source§impl<'de> Deserialize<'de> for ClassifiersConfig
impl<'de> Deserialize<'de> for ClassifiersConfig
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClassifiersConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClassifiersConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ClassifiersConfig
impl PartialEq for ClassifiersConfig
Source§impl Serialize for ClassifiersConfig
impl Serialize for ClassifiersConfig
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for ClassifiersConfig
Auto Trait Implementations§
impl Freeze for ClassifiersConfig
impl RefUnwindSafe for ClassifiersConfig
impl Send for ClassifiersConfig
impl Sync for ClassifiersConfig
impl Unpin for ClassifiersConfig
impl UnsafeUnpin for ClassifiersConfig
impl UnwindSafe for ClassifiersConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request