Adanbalf commited on
Commit
ec6c728
·
verified ·
1 Parent(s): ce0c277

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -4
app.py CHANGED
@@ -64,6 +64,7 @@ def build_macro_card(macros):
64
  """
65
 
66
  # ---------- Lógica principal ----------
 
67
  def analyze_food(image, text_prompt=""):
68
  if image is None:
69
  return "<div class='card'>Subí una imagen del plato 🍽️</div>"
@@ -79,17 +80,46 @@ def analyze_food(image, text_prompt=""):
79
  buffered = BytesIO()
80
  image.save(buffered, format="JPEG")
81
  img_b64 = base64.b64encode(buffered.getvalue()).decode("utf-8")
82
- headers = {"Authorization": f"Bearer {HF_API_KEY}"}
83
- data = {"inputs": {"text": text_prompt, "image": f"data:image/jpeg;base64,{img_b64}"}}
 
 
 
 
 
 
 
 
 
 
84
  r = requests.post(HF_API_URL, headers=headers, json=data)
85
- answer = str(r.json())
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
  macros = extract_macros(answer)
88
  card = build_macro_card(macros)
89
  return f"<div class='desc'>{answer}</div>{card}"
90
 
91
  except Exception as e:
92
- return f"<div class='card error'>⚠️ Error: {e}</div>"
 
93
 
94
  # ---------- Interfaz ----------
95
  def build_interface():
 
64
  """
65
 
66
  # ---------- Lógica principal ----------
67
+
68
  def analyze_food(image, text_prompt=""):
69
  if image is None:
70
  return "<div class='card'>Subí una imagen del plato 🍽️</div>"
 
80
  buffered = BytesIO()
81
  image.save(buffered, format="JPEG")
82
  img_b64 = base64.b64encode(buffered.getvalue()).decode("utf-8")
83
+ headers = {
84
+ "Authorization": f"Bearer {HF_API_KEY}",
85
+ "Content-Type": "application/json"
86
+ }
87
+ data = {
88
+ "inputs": {
89
+ "text": text_prompt,
90
+ "image": f"data:image/jpeg;base64,{img_b64}"
91
+ }
92
+ }
93
+
94
+ print("📡 Enviando request a:", HF_API_URL)
95
  r = requests.post(HF_API_URL, headers=headers, json=data)
96
+
97
+ print("📩 Status code:", r.status_code)
98
+ print("🧾 Respuesta cruda:", r.text[:500])
99
+
100
+ # si la respuesta viene vacía
101
+ if not r.text.strip():
102
+ return "<div class='card error'>⚠️ El modelo no devolvió respuesta. Espera unos segundos y reintenta.</div>"
103
+
104
+ # si no es JSON válido
105
+ try:
106
+ resp = r.json()
107
+ except Exception as e:
108
+ return f"<div class='card error'>⚠️ Error al decodificar respuesta: {e}<br><pre>{r.text[:300]}</pre></div>"
109
+
110
+ # Hugging Face a veces devuelve dict con 'error' o 'generated_text'
111
+ if isinstance(resp, dict) and "error" in resp:
112
+ return f"<div class='card error'>⚠️ Error del modelo: {resp['error']}</div>"
113
+
114
+ answer = str(resp)
115
 
116
  macros = extract_macros(answer)
117
  card = build_macro_card(macros)
118
  return f"<div class='desc'>{answer}</div>{card}"
119
 
120
  except Exception as e:
121
+ return f"<div class='card error'>⚠️ Error general: {e}</div>"
122
+
123
 
124
  # ---------- Interfaz ----------
125
  def build_interface():