Skip to content

Commit 186f350

Browse files
author
Bob Strahan
committed
fix: add safety checks for non-dictionary assessment data in AssessmentService
1 parent 693c243 commit 186f350

File tree

1 file changed

+20
-0
lines changed
  • lib/idp_common_pkg/idp_common/assessment

1 file changed

+20
-0
lines changed

lib/idp_common_pkg/idp_common/assessment/service.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)