Hola @StephaneB, lo siento por el retraso.
En cuanto al fondo, no voy a partir de una lista de frases preescritas seleccionadas al azar. La dirección de Gladys es la IA: una respuesta generada y contextual, no un diccionario fijo. Por lo tanto, el tema a resolver aquí no es « cómo evitar la IA », sino « por qué la IA tarda 15 segundos en tu caso ».
Y 15-20 segundos no es normal. Para ser transparente sobre la arquitectura: la acción « Preguntar a la IA » no hace una sola llamada. Primero hay una llamada rápida de clasificación de intención, luego la llamada principal, y luego uno o varios intercambios adicionales si el modelo decide llamar a una herramienta (por ejemplo, ir a leer una temperatura). Pero incluso con 3 intercambios deberíamos estar alrededor de 1,5-2 segundos, no 15. Por lo tanto, algo más específico está sucediendo en tu instalación.
No tengo tiempo para investigar yo mismo, pero la buena noticia es que tienes todo lo que necesitas para hacerlo sin esperar por mí — sin línea de comandos, y Gladys ya registra todo lo necesario. Aquí están las claves.
1. Ver exactamente lo que hizo la IA, llamada de herramienta por llamada de herramienta
Este es el corazón del diagnóstico. Activa tu escena, espera la respuesta vocal, luego ve a Integraciones → Inteligencia Artificial, sección « Depuración de IA » → « Descargar el contexto JSON para depuración ».
Abre el archivo obtenido (un editor de texto es suficiente) y mira la sección _debug → conversationHistory. Contiene dos cosas:
toolCalls: la lista exacta de todas las herramientas que la IA ha llamado, con el nombre de cada una (tool_name), su resultado (tool_status: success o error), los argumentos que se le pasaron y la hora exacta (created_at).
messages: la conversación completa en orden cronológico — tu mensaje, cada llamada de herramienta, la respuesta final — cada entrada con hora.
Restando los created_at, ves exactamente cuántas herramientas se llamaron durante tu ejecución de escena, cuáles y cuál consumió el tiempo. Dos señales a vigilar:
- varias llamadas de herramientas para una simple frase de confirmación → cada llamada es un intercambio completo con el modelo, probablemente ahí es donde se van tus segundos;
- un
tool_status: "error" → una herramienta que falla hace que el modelo vuelva a empezar para otra ronda, lo que puede duplicar o triplicar el tiempo total. Es el tipo de cosa que no se sospecha y que salta a la vista en este archivo.
Las llamadas desencadenadas por una escena se registran bien aquí: el historial es el del usuario elegido en la acción « Preguntar a la IA ». Por lo tanto, piensa en activar la escena antes de descargar el archivo.
Accidentalmente, la sección tools del mismo archivo lista todas las herramientas enviadas al modelo en cada llamada. Si es muy voluminosa (muchos dispositivos), también pesa cada solicitud.
2. Complementar con los registros si es necesario
Si el archivo de arriba no es suficiente para decidir, Configuración → Sistema → Descargar registros, luego busca [AI_CHAT] en el archivo. Obtienes la traza del lado del servidor, horaria línea por línea:
[AI_CHAT] Nueva solicitud userId=... mensaje=...
[AI_CHAT] Forzando tool_choice=required para categorías=device_query
[AI_CHAT] Turno del asistente iteración=1 tool_calls=1 tool_choice=required herramientas=[...]
[AI_CHAT] Ejecutando herramienta=...
[AI_CHAT] Herramienta finalizada herramienta=... estado=success longitudResultado=...
[AI_CHAT] Turno del asistente iteración=2 tool_calls=0 ...
[AI_CHAT] Respuesta completada longitudRespuesta=...
La lectura:
| Dónde se va el tiempo |
Qué significa |
Entre Nueva solicitud y el primer Turno del asistente |
Preparación local (Gladys reconstruye la lista de herramientas desde tu base) + llamada de clasificación |
Muchas líneas Turno del asistente iteración= |
El número de intercambios con el modelo explota |
Entre Ejecutando herramienta= y Herramienta finalizada herramienta= |
La ejecución de la herramienta en tu instancia que se ralentiza |
Un solo Turno del asistente, pero 10 s para alcanzarlo |
El modelo o tu conexión de red |
3. Una prueba comparativa inmediata
En el chat con Gladys, haz sucesivamente tu prompt completo, luego una versión corta sin ninguna referencia a un sensor: « Dame una frase corta para confirmar que te ocupas de la solicitud ». Cronometra los dos con un reloj.
Si el corto responde en 2 segundos y el largo en 15 segundos, está confirmado: es tu prompt el que desencadena llamadas de herramientas. Mencionar la temperatura del agua hace que el modelo entienda que debe ir a leer un sensor antes de responder. En este caso, tienes un beneficio inmediato reescribiendo tu prompt para que no necesite ningún dato — y el archivo del paso 1 te lo mostrará en blanco y negro.
Déjate ayudar por una IA para analizar todo esto
Este es típicamente el tipo de tarea en la que Claude (o tu asistente favorito) es muy efectivo, y te evita esperar por mí. Dale el contenido de _debug.conversationHistory con una instrucción como:
« Aquí tienes el historial horario de una llamada de IA en Gladys Assistant, en formato JSON. Lista las herramientas llamadas en orden, calcula la duración entre cada etapa y dime dónde se va la mayoría del tiempo total. Señala cualquier herramienta con error. »
Gladys es de código abierto, por lo que también puedes darle el archivo que maneja todo este flujo para que razone sobre el código real: server/lib/gateway/gateway.forwardMessageToAiChat.js en el repositorio GitHub del proyecto.
Pequeña precaución: este archivo contiene tus mensajes, los nombres de tus habitaciones y dispositivos. Elimina lo que no quieres compartir antes de pegarlo en cualquier lugar, aquí como en cualquier otro lugar.