From b4fd252c203953ab3f2724fe5e49c86bc221db94 Mon Sep 17 00:00:00 2001 From: ibstellar <151468788+aregmii@users.noreply.github.com> Date: Sat, 16 May 2026 23:23:54 -0400 Subject: [PATCH] perf (prompt_injection): cache classifier behind Lazy<> (was Box-alloc per call) (#1962) --- src/openhuman/prompt_injection/detector.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/openhuman/prompt_injection/detector.rs b/src/openhuman/prompt_injection/detector.rs index 71460fb10..e27a3f2ae 100644 --- a/src/openhuman/prompt_injection/detector.rs +++ b/src/openhuman/prompt_injection/detector.rs @@ -174,14 +174,24 @@ static DETECTION_RULES: Lazy> = Lazy::new(|| { ] }); -fn optional_classifier() -> Option> { +static OPTIONAL_CLASSIFIER: Lazy>> = Lazy::new(|| { let choice = env::var("OPENHUMAN_PROMPT_INJECTION_CLASSIFIER") .unwrap_or_else(|_| "off".to_string()) .to_ascii_lowercase(); - match choice.as_str() { + let classifier: Option> = match choice.as_str() { "heuristic" => Some(Box::new(HeuristicClassifier)), _ => None, - } + }; + tracing::debug!( + "[prompt_injection] optional classifier resolved choice={:?} active={}", + choice, + classifier.is_some() + ); + classifier +}); + +fn optional_classifier() -> Option<&'static dyn OptionalClassifier> { + OPTIONAL_CLASSIFIER.as_deref() } fn normalize_prompt(input: &str) -> NormalizedPrompt {