From b53a15b4e3732c0601dda99483c8bd13c8827ee9 Mon Sep 17 00:00:00 2001 From: skypank Date: Thu, 15 Oct 2026 02:32:10 +0530 Subject: [PATCH 1/2] fix(module-b): bump retired noise-filter model default to gemini-2.5-flash gemini/gemini-2.5-flash-lite is retired by Google for new users, so every Module-B classification batch 404s on a fresh setup. Bump both places that pin the default (.env.example and config_loader.DEFAULT_LLM_MODEL) plus the docstring and runbook references to the live gemini/gemini-2.5-flash id already used elsewhere in the repo. final_metrics.md is left unchanged as a historical record of the model those metrics were measured on. --- .env.example | 2 +- application/utils/noise_filter/config_loader.py | 2 +- application/utils/noise_filter/llm_classifier.py | 2 +- docs/gsoc_2026_module_b/module_b_runbook.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 17ad95d27..5834b858d 100644 --- a/.env.example +++ b/.env.example @@ -61,7 +61,7 @@ VERTEX_EMBED_CONTENT_MODEL=gemini-embedding-001 # Noise / Relevance Filter (Module B) -CRE_NOISE_FILTER_LLM_MODEL=gemini/gemini-2.5-flash-lite +CRE_NOISE_FILTER_LLM_MODEL=gemini/gemini-2.5-flash CRE_NOISE_FILTER_BATCH_SIZE=10 CRE_NOISE_FILTER_MAX_CHARS=1500 CRE_NOISE_FILTER_CONFIDENCE_THRESHOLD=0.8 diff --git a/application/utils/noise_filter/config_loader.py b/application/utils/noise_filter/config_loader.py index 7462b3bc8..d1de0aeab 100644 --- a/application/utils/noise_filter/config_loader.py +++ b/application/utils/noise_filter/config_loader.py @@ -24,7 +24,7 @@ # Cheap, dedicated classification model. Decoupled from CRE_LLM_CHAT_MODEL by # design: Module B is the cheap gate and must not pull in the chatbot's # heavier model. -DEFAULT_LLM_MODEL = "gemini/gemini-2.5-flash-lite" +DEFAULT_LLM_MODEL = "gemini/gemini-2.5-flash" DEFAULT_BATCH_SIZE = 10 DEFAULT_MAX_CHARS = 1500 DEFAULT_CONFIDENCE_THRESHOLD = 0.8 diff --git a/application/utils/noise_filter/llm_classifier.py b/application/utils/noise_filter/llm_classifier.py index 21796b19e..fbf39241f 100644 --- a/application/utils/noise_filter/llm_classifier.py +++ b/application/utils/noise_filter/llm_classifier.py @@ -4,7 +4,7 @@ construct PromptHandler (DB-coupled). Completions go through ``application.prompt_client.litellm_router`` so retry policy and parsing match chat/embeddings. The classifier uses a dedicated cheap model -(config.llm_model, default gemini/gemini-2.5-flash-lite) and never falls back +(config.llm_model, default gemini/gemini-2.5-flash) and never falls back to CRE_LLM_CHAT_MODEL: Module B is the cheap gate and must stay decoupled from the chatbot's model. """ diff --git a/docs/gsoc_2026_module_b/module_b_runbook.md b/docs/gsoc_2026_module_b/module_b_runbook.md index 43c2a9e94..8eff76a05 100644 --- a/docs/gsoc_2026_module_b/module_b_runbook.md +++ b/docs/gsoc_2026_module_b/module_b_runbook.md @@ -36,7 +36,7 @@ vector;`). | Var | Purpose | Default | |---|---|---| | `GEMINI_API_KEY` | LLM credential (Gemini) | — (required) | -| `CRE_NOISE_FILTER_LLM_MODEL` | classification model | `gemini/gemini-2.5-flash-lite` | +| `CRE_NOISE_FILTER_LLM_MODEL` | classification model | `gemini/gemini-2.5-flash` | | `CRE_NOISE_FILTER_BATCH_SIZE` | chunks per LLM request | `10` | | `CRE_NOISE_FILTER_MAX_CHARS` | per-chunk truncation | `1500` | | `CRE_NOISE_FILTER_CONFIDENCE_THRESHOLD` | KNOWLEDGE-below → UNCERTAIN | `0.8` | From 262ad5417179067d4c1afc4b1c5a5e4950a812ba Mon Sep 17 00:00:00 2001 From: skypank Date: Thu, 15 Oct 2026 02:58:18 +0530 Subject: [PATCH 2/2] fix(module-b): replace retired noise-filter model default with gemini-3.5-flash-lite gemini/gemini-2.5-flash-lite is retired by Google for new users, so every Module-B classification batch 404s on a fresh setup. Replace it with gemini/gemini-3.5-flash-lite -- the lite-tier successor Google's own 404 message recommends, which keeps Module B on the cheap gate (not the chatbot's heavier model) per the config's design note. Verified working against the Gemini API (2.5-flash-lite 404s; 3.5-flash-lite succeeds and produced a full ASVS classify run). Updates both pins (.env.example, config_loader.DEFAULT_LLM_MODEL) plus the docstring and runbook references. final_metrics.md is left unchanged as a historical record of the model those metrics were measured on. --- .env.example | 2 +- application/utils/noise_filter/config_loader.py | 2 +- application/utils/noise_filter/llm_classifier.py | 2 +- docs/gsoc_2026_module_b/module_b_runbook.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 5834b858d..02b1147b8 100644 --- a/.env.example +++ b/.env.example @@ -61,7 +61,7 @@ VERTEX_EMBED_CONTENT_MODEL=gemini-embedding-001 # Noise / Relevance Filter (Module B) -CRE_NOISE_FILTER_LLM_MODEL=gemini/gemini-2.5-flash +CRE_NOISE_FILTER_LLM_MODEL=gemini/gemini-3.5-flash-lite CRE_NOISE_FILTER_BATCH_SIZE=10 CRE_NOISE_FILTER_MAX_CHARS=1500 CRE_NOISE_FILTER_CONFIDENCE_THRESHOLD=0.8 diff --git a/application/utils/noise_filter/config_loader.py b/application/utils/noise_filter/config_loader.py index d1de0aeab..d4a47037b 100644 --- a/application/utils/noise_filter/config_loader.py +++ b/application/utils/noise_filter/config_loader.py @@ -24,7 +24,7 @@ # Cheap, dedicated classification model. Decoupled from CRE_LLM_CHAT_MODEL by # design: Module B is the cheap gate and must not pull in the chatbot's # heavier model. -DEFAULT_LLM_MODEL = "gemini/gemini-2.5-flash" +DEFAULT_LLM_MODEL = "gemini/gemini-3.5-flash-lite" DEFAULT_BATCH_SIZE = 10 DEFAULT_MAX_CHARS = 1500 DEFAULT_CONFIDENCE_THRESHOLD = 0.8 diff --git a/application/utils/noise_filter/llm_classifier.py b/application/utils/noise_filter/llm_classifier.py index fbf39241f..61464fb6e 100644 --- a/application/utils/noise_filter/llm_classifier.py +++ b/application/utils/noise_filter/llm_classifier.py @@ -4,7 +4,7 @@ construct PromptHandler (DB-coupled). Completions go through ``application.prompt_client.litellm_router`` so retry policy and parsing match chat/embeddings. The classifier uses a dedicated cheap model -(config.llm_model, default gemini/gemini-2.5-flash) and never falls back +(config.llm_model, default gemini/gemini-3.5-flash-lite) and never falls back to CRE_LLM_CHAT_MODEL: Module B is the cheap gate and must stay decoupled from the chatbot's model. """ diff --git a/docs/gsoc_2026_module_b/module_b_runbook.md b/docs/gsoc_2026_module_b/module_b_runbook.md index 8eff76a05..f1d71a44d 100644 --- a/docs/gsoc_2026_module_b/module_b_runbook.md +++ b/docs/gsoc_2026_module_b/module_b_runbook.md @@ -36,7 +36,7 @@ vector;`). | Var | Purpose | Default | |---|---|---| | `GEMINI_API_KEY` | LLM credential (Gemini) | — (required) | -| `CRE_NOISE_FILTER_LLM_MODEL` | classification model | `gemini/gemini-2.5-flash` | +| `CRE_NOISE_FILTER_LLM_MODEL` | classification model | `gemini/gemini-3.5-flash-lite` | | `CRE_NOISE_FILTER_BATCH_SIZE` | chunks per LLM request | `10` | | `CRE_NOISE_FILTER_MAX_CHARS` | per-chunk truncation | `1500` | | `CRE_NOISE_FILTER_CONFIDENCE_THRESHOLD` | KNOWLEDGE-below → UNCERTAIN | `0.8` |