Fix AI processor error handling for empty AI service responses

This commit is contained in:
Jarian Cottingham 2026-02-02 10:52:34 -06:00
parent e29e5dbc76
commit 876cfddce7

View File

@ -72,6 +72,7 @@ class FactExtractor:
""" """
# Call the AI service with gpt-oss model for fact extraction # Call the AI service with gpt-oss model for fact extraction
try:
response = requests.post( response = requests.post(
extraction_url, extraction_url,
json={ json={
@ -86,19 +87,32 @@ class FactExtractor:
headers=self._get_headers(), headers=self._get_headers(),
timeout=60 timeout=60
) )
response.raise_for_status() response.raise_for_status()
except requests.exceptions.RequestException as e:
logger.error(f"Request failed for article '{title}': {e}")
# Return basic structure if request fails
return self._create_basic_fact_structure(article_content, title)
# Parse the response # Parse the response
try:
result = response.json() result = response.json()
extracted_text = result['choices'][0]['message']['content'].strip() extracted_text = result['choices'][0]['message']['content'].strip()
except json.JSONDecodeError as e:
logger.error(f"Failed to parse JSON response from AI service for article '{title}': {e}")
# Return basic structure if response parsing fails
return self._create_basic_fact_structure(article_content, title)
# Check if the response is empty or invalid
if not extracted_text or extracted_text.strip() == "":
logger.warning(f"Empty response from AI service for article '{title}'. Creating basic structure.")
facts = self._create_basic_fact_structure(article_content, title)
else:
# Try to parse the JSON from the response # Try to parse the JSON from the response
try: try:
facts = json.loads(extracted_text) facts = json.loads(extracted_text)
except json.JSONDecodeError: except json.JSONDecodeError as e:
# If JSON parsing fails, create a basic structure # If JSON parsing fails, create a basic structure
logger.warning(f"Failed to parse JSON from AI response for article '{title}'. Creating basic structure.") logger.warning(f"Failed to parse JSON from AI response for article '{title}': {e}. Creating basic structure.")
facts = self._create_basic_fact_structure(article_content, title) facts = self._create_basic_fact_structure(article_content, title)
# Ensure all required fields are present # Ensure all required fields are present