Unnatrathi commited on
Commit
eb499ce
·
verified ·
1 Parent(s): dc4f530

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -9
app.py CHANGED
@@ -209,29 +209,22 @@ def _run_inference(image: Image.Image, max_new_tokens: int) -> str:
209
 
210
 
211
  def _parse_response(raw: str) -> dict:
212
- """
213
- Parse the CaLoRAify reasoning loop output:
214
- "Ingredients detected: X. Portion Analysis: Y. JSON Summary: {...}"
215
- """
216
  result = {"ingredients": "", "portion_notes": "", "raw_text": raw}
217
 
218
- # Extract ingredients
219
  if "Ingredients detected:" in raw:
220
  ing_start = raw.index("Ingredients detected:") + len("Ingredients detected:")
221
  ing_end = raw.index(".", ing_start) if "." in raw[ing_start:] else len(raw)
222
  result["ingredients"] = raw[ing_start:ing_end].strip()
223
 
224
- # Extract portion notes
225
  if "Portion Analysis:" in raw:
226
  pa_start = raw.index("Portion Analysis:") + len("Portion Analysis:")
227
  pa_end = raw.index(".", pa_start) if "." in raw[pa_start:] else len(raw)
228
  result["portion_notes"] = raw[pa_start:pa_end].strip()
229
 
230
- # Extract JSON
231
  if "JSON Summary:" in raw:
232
  json_start = raw.index("JSON Summary:") + len("JSON Summary:")
233
  json_str = raw[json_start:].strip()
234
- # Find the JSON object boundaries
235
  brace_start = json_str.find("{")
236
  brace_end = json_str.rfind("}") + 1
237
  if brace_start != -1 and brace_end > brace_start:
@@ -245,7 +238,11 @@ def _parse_response(raw: str) -> dict:
245
  "fibre_g": nutrition.get("fibre_g"),
246
  })
247
  except json.JSONDecodeError:
248
- pass # raw_text still available for debugging
 
 
 
 
249
 
250
  return result
251
 
@@ -273,3 +270,9 @@ def analyze(req: AnalyzeRequest, _=Depends(verify_api_key)):
273
 
274
  parsed = _parse_response(raw)
275
  return NutritionResponse(**parsed, latency_ms=ms)
 
 
 
 
 
 
 
209
 
210
 
211
  def _parse_response(raw: str) -> dict:
 
 
 
 
212
  result = {"ingredients": "", "portion_notes": "", "raw_text": raw}
213
 
214
+ # Try the CaLoRAify reasoning loop format first
215
  if "Ingredients detected:" in raw:
216
  ing_start = raw.index("Ingredients detected:") + len("Ingredients detected:")
217
  ing_end = raw.index(".", ing_start) if "." in raw[ing_start:] else len(raw)
218
  result["ingredients"] = raw[ing_start:ing_end].strip()
219
 
 
220
  if "Portion Analysis:" in raw:
221
  pa_start = raw.index("Portion Analysis:") + len("Portion Analysis:")
222
  pa_end = raw.index(".", pa_start) if "." in raw[pa_start:] else len(raw)
223
  result["portion_notes"] = raw[pa_start:pa_end].strip()
224
 
 
225
  if "JSON Summary:" in raw:
226
  json_start = raw.index("JSON Summary:") + len("JSON Summary:")
227
  json_str = raw[json_start:].strip()
 
228
  brace_start = json_str.find("{")
229
  brace_end = json_str.rfind("}") + 1
230
  if brace_start != -1 and brace_end > brace_start:
 
238
  "fibre_g": nutrition.get("fibre_g"),
239
  })
240
  except json.JSONDecodeError:
241
+ pass
242
+
243
+ # ── FALLBACK: if model didn't follow format, use raw text as ingredients
244
+ if not result["ingredients"] and raw.strip():
245
+ result["ingredients"] = raw.strip()[:300] # show raw output so you can see what model said
246
 
247
  return result
248
 
 
270
 
271
  parsed = _parse_response(raw)
272
  return NutritionResponse(**parsed, latency_ms=ms)
273
+
274
+ @app.post("/debug")
275
+ def debug(req: AnalyzeRequest, _=Depends(verify_api_key)):
276
+ image = _decode_image(req.image_b64)
277
+ raw = _run_inference(image, req.max_new_tokens)
278
+ return {"raw_text": raw}