geethareddy commited on
Commit
01f403f
·
verified ·
1 Parent(s): 3c03c77

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -18
app.py CHANGED
@@ -227,33 +227,48 @@ def analyze_symptoms(text):
227
  prediction = "No health condition detected"
228
  score = 0.0
229
 
 
230
  if result is None:
231
  logger.warning("Model output is None")
232
  elif isinstance(result, (str, int, float, bool)):
233
  logger.warning(f"Invalid model output type: {type(result)}, value: {result}")
234
- elif isinstance(result, tuple):
235
- logger.debug(f"Converting tuple to list: {result}")
236
- result = list(result)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  elif isinstance(result, dict):
238
  logger.debug("Model returned single dictionary; wrapping in list")
239
  result = [result]
240
-
241
- if isinstance(result, list):
242
- if len(result) == 0:
243
- logger.warning("Model output is empty list")
244
- elif not all(isinstance(item, dict) for item in result):
245
- logger.warning(f"Non-dictionary items in result: {result}")
246
- elif not all("label" in item and "score" in item for item in result):
247
- logger.warning(f"Missing label or score in result: {result}")
248
- else:
249
  prediction = result[0]["label"]
250
  score = result[0]["score"]
251
- if not isinstance(prediction, str):
252
- logger.warning(f"Invalid label type: {type(prediction)}, value: {prediction}")
253
- prediction = "No health condition detected"
254
- if not isinstance(score, (int, float)) or score < 0 or score > 1:
255
- logger.warning(f"Invalid score: {score}")
256
- score = 0.0
 
 
 
 
257
 
258
  if is_fallback_model:
259
  logger.warning("Using fallback DistilBERT model")
 
227
  prediction = "No health condition detected"
228
  score = 0.0
229
 
230
+ # Handle all possible output types
231
  if result is None:
232
  logger.warning("Model output is None")
233
  elif isinstance(result, (str, int, float, bool)):
234
  logger.warning(f"Invalid model output type: {type(result)}, value: {result}")
235
+ elif isinstance(result, (tuple, list)):
236
+ # Flatten nested tuples/lists
237
+ flattened = []
238
+ def flatten(item):
239
+ if isinstance(item, (tuple, list)):
240
+ for subitem in item:
241
+ flatten(subitem)
242
+ else:
243
+ flattened.append(item)
244
+ flatten(result)
245
+ result = flattened
246
+ if not result:
247
+ logger.warning("Flattened model output is empty")
248
+ elif isinstance(result, list):
249
+ if not all(isinstance(item, dict) for item in result):
250
+ logger.warning(f"Non-dictionary items in result: {result}")
251
+ elif not all("label" in item and "score" in item for item in result):
252
+ logger.warning(f"Missing label or score in result: {result}")
253
+ else:
254
+ prediction = result[0]["label"]
255
+ score = result[0]["score"]
256
  elif isinstance(result, dict):
257
  logger.debug("Model returned single dictionary; wrapping in list")
258
  result = [result]
259
+ if "label" in result[0] and "score" in result[0]:
 
 
 
 
 
 
 
 
260
  prediction = result[0]["label"]
261
  score = result[0]["score"]
262
+ else:
263
+ logger.warning(f"Missing label or score in dictionary: {result}")
264
+
265
+ # Validate prediction and score
266
+ if not isinstance(prediction, str):
267
+ logger.warning(f"Invalid label type: {type(prediction)}, value: {prediction}")
268
+ prediction = "No health condition detected"
269
+ if not isinstance(score, (int, float)) or score < 0 or score > 1:
270
+ logger.warning(f"Invalid score: {score}")
271
+ score = 0.0
272
 
273
  if is_fallback_model:
274
  logger.warning("Using fallback DistilBERT model")