@@ -248,6 +248,18 @@ def _enhance_dict_assessment(
248248 Returns:
249249 Enhanced assessment dictionary
250250 """
251+ # Safety check: ensure assessment_dict is actually a dictionary
252+ if not isinstance (assessment_dict , dict ):
253+ logger .warning (
254+ f"Expected dictionary for assessment enhancement, got { type (assessment_dict )} . "
255+ f"Creating default assessment structure."
256+ )
257+ return {
258+ "confidence" : 0.5 ,
259+ "confidence_reason" : f"LLM returned unexpected type { type (assessment_dict )} instead of dictionary. Using default confidence." ,
260+ "confidence_threshold" : threshold ,
261+ }
262+
251263 # Check if this dictionary itself is a confidence assessment
252264 if "confidence" in assessment_dict :
253265 # This is a direct confidence assessment - add threshold
@@ -289,6 +301,14 @@ def _check_confidence_alerts(
289301 threshold: Confidence threshold to check against
290302 alerts_list: List to append alerts to (modified in place)
291303 """
304+ # Safety check: ensure assessment_data is actually a dictionary
305+ if not isinstance (assessment_data , dict ):
306+ logger .warning (
307+ f"Expected dictionary for confidence alert checking, got { type (assessment_data )} for attribute '{ attr_name } '. "
308+ f"Skipping confidence alert check."
309+ )
310+ return
311+
292312 for sub_attr_name , sub_assessment in assessment_data .items ():
293313 if isinstance (sub_assessment , dict ) and "confidence" in sub_assessment :
294314 confidence = _safe_float_conversion (
0 commit comments