From 7c4bb8713bb38a69c483fdd2dcc84bea50986e3e Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 13 Aug 2026 09:43:18 -0500 Subject: [PATCH] fix: loguea la respuesta cruda del AI cuando no trae texto usable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cuando el AI respondía sin error pero con un content que no era string (o vacío), ProcessWidgetMessage caía en silencio al mensaje genérico de "dame más detalle" sin dejar ningún rastro en el log — no había forma de saber qué pasó. Ahora loguea el JSON crudo (agentMessage.Raw) en ese caso, y también cuando se agotan las 3 rondas de tool-calling sin llegar a una respuesta final. Co-Authored-By: Claude Sonnet 5 --- pkg/services/umind_agent_service.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/services/umind_agent_service.go b/pkg/services/umind_agent_service.go index bbefc80..b154629 100644 --- a/pkg/services/umind_agent_service.go +++ b/pkg/services/umind_agent_service.go @@ -278,6 +278,13 @@ func ProcessWidgetMessage(agente *models.UmindAgente, sessionID, userText string if s, ok := aiMsg.Content.(string); ok { content = s } + if strings.TrimSpace(content) == "" { + // El AI respondió sin error pero sin texto usable — antes esto se + // perdía en silencio y el visitante recibía el mensaje genérico de + // "dame más detalle" sin ninguna pista de qué pasó. Con .Raw (ver + // agentMessage.UnmarshalJSON) queda el JSON crudo para diagnosticar. + log.Printf("[UMIND] Respuesta del AI sin texto usable (agente %d) round %d: %s", agente.ID, round, string(aiMsg.Raw)) + } finalResponse = content _ = models.SaveUmindMensaje(agente.ID, sessionID, "assistant", content) break @@ -298,6 +305,7 @@ func ProcessWidgetMessage(agente *models.UmindAgente, sessionID, userText string } if finalResponse == "" { + log.Printf("[UMIND] Agente %d: se agotaron las rondas de tool-calling sin una respuesta final", agente.ID) finalResponse = "Un momento, por favor — dame un poco más de detalle sobre lo que necesitas." } return finalResponse, nil