From cb8ef8542b0d08b5d7d8a313de93f33d7ebbca59 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Wed, 25 Feb 2026 21:38:02 -0500 Subject: [PATCH] fix: guard against malformed LLM findings in conversation validation Filter out non-dict entries from user_findings and handle non-dict result to prevent 'str' object has no attribute 'setdefault' errors. Co-Authored-By: Claude Opus 4.6 --- utils/llm_client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/llm_client.py b/utils/llm_client.py index f6b2b2a..2bac7a9 100644 --- a/utils/llm_client.py +++ b/utils/llm_client.py @@ -514,7 +514,9 @@ class LLMClient: @staticmethod def _validate_conversation_result(result: dict) -> dict: """Validate and normalize conversation analysis result.""" - findings = result.get("user_findings", []) + if not isinstance(result, dict): + return {"user_findings": [], "conversation_summary": ""} + findings = [f for f in result.get("user_findings", []) if isinstance(f, dict)] for finding in findings: finding.setdefault("username", "unknown") score = float(finding.get("toxicity_score", 0.0))