From 25425d41b5fa62f6eed1454aeeddfd6442160ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20C=C3=B3rdova?= <107780279+Damkohler@users.noreply.github.com> Date: Sat, 19 Sep 2026 09:23:36 -0400 Subject: [PATCH] Fix Ollama forbidden matching and audit cleanup settings --- .../jlc_captionforge_ollama_caption_node.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/nodes/caption_nodes/jlc_captionforge_ollama_caption_node.py b/nodes/caption_nodes/jlc_captionforge_ollama_caption_node.py index e792d4f..4f5a57e 100644 --- a/nodes/caption_nodes/jlc_captionforge_ollama_caption_node.py +++ b/nodes/caption_nodes/jlc_captionforge_ollama_caption_node.py @@ -202,6 +202,7 @@ import folder_paths from ...engines.captionforge_pipeline_planner_engine import expand_captionforge_runs from ...engines.captionforge_source_identity import file_source_identity, optional_image_identity from ...engines.captionforge_dataset_export import is_dataset_export +from ...engines.captionforge_cleanup import contains_forbidden_phrase from ...engines.captionforge_caption_prompt_kit import ( CAPTION_LENGTH_CHOICES, CAPTION_TYPE_CHOICES, @@ -1035,8 +1036,7 @@ def _clean_caption( if forbidden_phrases: kept: list[str] = [] for line in text.splitlines() or [text]: - lowered = line.lower() - if any(phrase.lower() in lowered for phrase in forbidden_phrases if phrase): + if contains_forbidden_phrase(line, forbidden_phrases): continue kept.append(line) text = "\n".join(line.strip() for line in kept if line.strip()).strip() @@ -1072,6 +1072,8 @@ def _build_run_config( top_k: int, repetition_penalty: float, max_size: int, + forbidden_phrases: list[str], + replacement_rules: list[tuple[str, str]], ) -> dict[str, Any]: return { "backend": "ollama", @@ -1087,6 +1089,12 @@ def _build_run_config( "repetition_penalty": float(repetition_penalty), "max_size": int(max_size), }, + "cleanup": { + "forbidden_phrases": list(forbidden_phrases), + "replacement_rules": [list(rule) for rule in replacement_rules], + "forbidden_match_mode": "whole_word_or_phrase_boundary", + "forbidden_action": "drop_matching_line", + }, "timestamp": datetime.now().isoformat(timespec="seconds"), } @@ -1575,6 +1583,8 @@ class JLC_CaptionForgeOllamaCaption: top_k=int(first_run.top_k), repetition_penalty=float(repetition_penalty), max_size=int(first_run.max_size), + forbidden_phrases=_parse_forbidden_lines(forbidden_phrases), + replacement_rules=_parse_replace_pairs(replace_pairs), ), )