adriansanz commited on
Commit
d483407
·
verified ·
1 Parent(s): d0ed62b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -18
app.py CHANGED
@@ -146,40 +146,64 @@ def chat(user_input, chat_history, current_step, user_context):
146
  if current_step < len(preguntas):
147
  siguiente_pregunta = preguntar_al_usuario(preguntas[current_step][1])
148
  chat_history.append(("assistant", siguiente_pregunta))
 
149
  else:
150
  resultado = predict_disponibilidad(user_context)
151
  if "error" in resultado:
152
- chat_history.append(("assistant", resultado["error"] + " Reiniciando conversación..."))
153
- # Reiniciar el estado
154
- user_context = {
155
- "ubicacion": None,
156
- "month": None,
157
- "day": None,
158
- "hour": None,
159
- "target_pct": None,
160
- "temperature": None,
161
- "lluvia": None
162
- }
163
- current_step = 0
164
- chat_history.append(("assistant", preguntar_al_usuario(preguntas[0][1])))
165
- return chat_history, current_step, user_context
166
-
167
  else:
168
  clima = resultado["candidatas"][0]
 
 
 
 
 
 
 
 
 
 
169
  msg = (
170
- f"📅 Predicción meteorológica para la hora solicitada:\n"
171
  f"🌡️ Temperatura aprox.: {clima['temperature']}°C\n"
172
  f"☔ Precipitación aprox.: {clima['precip']} mm\n\n"
173
- f"🚲 Estado de las estaciones de bicing en ese momento {round(resultado['target_pct']*100)}% de bicis:\n\n"
 
174
  )
175
  for r in resultado["candidatas"]:
176
  emoji = "✅" if r["pred_pct"] >= resultado["target_pct"] else "⚠️"
177
  msg += (
178
- f"{emoji} Estación '{r['address']}' (ID {r['station_id']}): "
179
  f"{round(r['pred_pct']*100)}% disponibilidad\n"
180
  )
181
  chat_history.append(("assistant", msg.strip()))
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  return chat_history, current_step, user_context
184
 
185
  # Interfaz Gradio
 
146
  if current_step < len(preguntas):
147
  siguiente_pregunta = preguntar_al_usuario(preguntas[current_step][1])
148
  chat_history.append(("assistant", siguiente_pregunta))
149
+ else:
150
  else:
151
  resultado = predict_disponibilidad(user_context)
152
  if "error" in resultado:
153
+ chat_history.append(("assistant", resultado["error"] + " Reiniciando conversación..."))
154
+ user_context = {
155
+ "ubicacion": None,
156
+ "month": None,
157
+ "day": None,
158
+ "hour": None,
159
+ "target_pct": None,
160
+ "temperature": None,
161
+ "lluvia": None
162
+ }
163
+ current_step = 0
164
+ chat_history.append(("assistant", preguntar_al_usuario(preguntas[0][1])))
165
+ return chat_history, current_step, user_context
 
 
166
  else:
167
  clima = resultado["candidatas"][0]
168
+
169
+ # Resumen del contexto
170
+ resumen_contexto = (
171
+ f"🗓️ Día: {user_context['day']:02d}/{user_context['month']:02d}/2025\n"
172
+ f"🕒 Hora: {user_context['hour']:02d}:00h\n"
173
+ f"📍 Ubicación: {user_context['ubicacion']}\n"
174
+ f"🎯 Porcentaje mínimo deseado de bicis: {int(user_context['target_pct'] * 100)}%"
175
+ )
176
+
177
+ # Mensaje principal
178
  msg = (
179
+ f"📈 Predicción meteorológica:\n"
180
  f"🌡️ Temperatura aprox.: {clima['temperature']}°C\n"
181
  f"☔ Precipitación aprox.: {clima['precip']} mm\n\n"
182
+ f"{resumen_contexto}\n\n"
183
+ f"🚲 Estaciones ordenadas por disponibilidad:\n"
184
  )
185
  for r in resultado["candidatas"]:
186
  emoji = "✅" if r["pred_pct"] >= resultado["target_pct"] else "⚠️"
187
  msg += (
188
+ f"{emoji} '{r['address']}' (ID {r['station_id']}): "
189
  f"{round(r['pred_pct']*100)}% disponibilidad\n"
190
  )
191
  chat_history.append(("assistant", msg.strip()))
192
 
193
+ # Generar resumen final con el LLM
194
+ resumen_llm = client.chat.completions.create(
195
+ messages=[
196
+ {"role": "system", "content": "Eres un asistente experto en movilidad urbana. Resume de forma clara y amigable si el usuario podrá encontrar bicis disponibles, y en qué estaciones, según los datos que se te dan."},
197
+ {"role": "user", "content": f"Aquí tienes el resultado del sistema:\n{msg.strip()}"}
198
+ ],
199
+ model="llama-3.3-70b-versatile",
200
+ temperature=0.5,
201
+ max_completion_tokens=256
202
+ ).choices[0].message.content.strip()
203
+
204
+ chat_history.append(("assistant", resumen_llm))
205
+
206
+
207
  return chat_history, current_step, user_context
208
 
209
  # Interfaz Gradio