Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -75,21 +75,49 @@ def interpretar_instruccion(mensaje, datos):
|
|
75 |
"""Interpreta la consulta del usuario y ejecuta el análisis solicitado."""
|
76 |
mensaje = mensaje.lower()
|
77 |
|
78 |
-
#
|
79 |
variable_map = {
|
80 |
"temperatura": "temperaturaInterior",
|
|
|
|
|
81 |
"humedad": "humedadInterior",
|
|
|
82 |
"co2": "co2",
|
83 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
|
|
|
86 |
for key, var in variable_map.items():
|
87 |
if key in mensaje:
|
88 |
respuesta, valores, timestamps = analizar_tendencia(datos, var)
|
89 |
grafico = generar_grafico(valores, timestamps, var)
|
90 |
return respuesta, grafico
|
91 |
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
def conversar_con_colmena(mensaje):
|
95 |
"""Genera una respuesta combinando el modelo de lenguaje con análisis de datos."""
|
|
|
75 |
"""Interpreta la consulta del usuario y ejecuta el análisis solicitado."""
|
76 |
mensaje = mensaje.lower()
|
77 |
|
78 |
+
# Ampliamos el mapeo con más sinónimos
|
79 |
variable_map = {
|
80 |
"temperatura": "temperaturaInterior",
|
81 |
+
"calor": "temperaturaInterior",
|
82 |
+
"frío": "temperaturaInterior",
|
83 |
"humedad": "humedadInterior",
|
84 |
+
"seco": "humedadInterior",
|
85 |
"co2": "co2",
|
86 |
+
"carbono": "co2",
|
87 |
+
"peso": "peso",
|
88 |
+
"colmena": "peso",
|
89 |
+
"ventilación": "ver_ventilador",
|
90 |
+
"ventilador": "ver_ventilador",
|
91 |
+
"calefactor": "ver_calefactor",
|
92 |
+
"vco": "vco",
|
93 |
+
"frecuencia": "frecuencia"
|
94 |
}
|
95 |
|
96 |
+
# Buscar la variable en el mensaje del usuario
|
97 |
for key, var in variable_map.items():
|
98 |
if key in mensaje:
|
99 |
respuesta, valores, timestamps = analizar_tendencia(datos, var)
|
100 |
grafico = generar_grafico(valores, timestamps, var)
|
101 |
return respuesta, grafico
|
102 |
|
103 |
+
# Si no encuentra una coincidencia, usa el modelo de lenguaje para interpretar la consulta
|
104 |
+
print("🤖 No se detectó una variable directamente. Usando IA para interpretar...")
|
105 |
+
|
106 |
+
contexto = f"Usuario: {mensaje}\nColmena:"
|
107 |
+
inputs = tokenizer(contexto, return_tensors="pt").to(device)
|
108 |
+
|
109 |
+
with torch.no_grad():
|
110 |
+
output = model.generate(
|
111 |
+
**inputs,
|
112 |
+
max_length=150,
|
113 |
+
do_sample=True,
|
114 |
+
top_k=50,
|
115 |
+
temperature=0.7,
|
116 |
+
pad_token_id=tokenizer.eos_token_id
|
117 |
+
)
|
118 |
+
|
119 |
+
respuesta_ia = tokenizer.decode(output[0], skip_special_tokens=True).strip()
|
120 |
+
return respuesta_ia, None # Si la IA responde, no genera imagen
|
121 |
|
122 |
def conversar_con_colmena(mensaje):
|
123 |
"""Genera una respuesta combinando el modelo de lenguaje con análisis de datos."""
|