From d21b5e3dd7539c811c229bd40aae228135a31b13 Mon Sep 17 00:00:00 2001 From: suhaniiz Date: Mon, 22 Jun 2026 17:41:31 +0530 Subject: [PATCH] Fix #477: Add defensive error handling for malformed LLM choices --- backend/app/rag/summarizer.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/app/rag/summarizer.py b/backend/app/rag/summarizer.py index 4310cf9c..a623dcf2 100644 --- a/backend/app/rag/summarizer.py +++ b/backend/app/rag/summarizer.py @@ -50,7 +50,15 @@ def generate_document_summary(filePath: str, max_sentences: int = 3) -> str | No max_tokens=settings.SUMMARY_MAX_TOKENS, temperature=settings.LLM_TEMPERATURE, ) - summary = response.choices[0].message.content.strip() if response.choices else None + + # Defensive check for malformed or empty response structures + summary = None + if response and getattr(response, "choices", None): + first_choice = response.choices[0] + message = getattr(first_choice, "message", None) + content = getattr(message, "content", None) + if content: + summary = content.strip() return summary if summary else None