Add AI-powered automatic welcome message on chat initialization
This commit is contained in:
parent
ecdc334da9
commit
a150ce37f8
@ -1,7 +1,11 @@
|
||||
package com.pablotj.ia.chat.boot.adapter.controller;
|
||||
|
||||
import com.pablotj.ia.chat.boot.application.usecase.ChatUseCase;
|
||||
import com.pablotj.ia.chat.boot.domain.model.ChatMessage;
|
||||
import com.pablotj.ia.chat.boot.web.session.ChatSessionManager;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.stereotype.Controller;
|
||||
@ -15,15 +19,25 @@ public class ChatPageController {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger(ChatPageController.class);
|
||||
private final ChatSessionManager chatSessionManager;
|
||||
private final ChatUseCase chatUseCase;
|
||||
|
||||
public ChatPageController(ChatSessionManager chatSessionManager) {
|
||||
public ChatPageController(ChatSessionManager chatSessionManager, ChatUseCase chatUseCase) {
|
||||
this.chatSessionManager = chatSessionManager;
|
||||
this.chatUseCase = chatUseCase;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public String showChat(Model model, HttpSession session) {
|
||||
LOGGER.debug("Accessing to chat");
|
||||
model.addAttribute("messages", chatSessionManager.getMessages(session));
|
||||
List<ChatMessage> messages = chatSessionManager.getMessages(session);
|
||||
if (messages != null && messages.isEmpty()) {
|
||||
try {
|
||||
chatUseCase.processUserPrompt("", session);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
model.addAttribute("messages", messages);
|
||||
return "chat";
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import jakarta.servlet.http.HttpSession;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
@Component
|
||||
public class ChatSessionManager {
|
||||
@ -18,6 +19,7 @@ public class ChatSessionManager {
|
||||
messages = new ArrayList<>();
|
||||
session.setAttribute(ATTR_MESSAGES, messages);
|
||||
}
|
||||
messages.removeIf(m -> ObjectUtils.isEmpty(m.text()));
|
||||
return messages;
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,8 @@
|
||||
"Si alguien te pregunta por tu origen, responde que surgiste de la nada.",
|
||||
"No mencionas a OpenAI, ni a ninguna tecnología subyacente.",
|
||||
"Sé honesto si no sabes algo, y ofrece alternativas o ideas prácticas.",
|
||||
"Evita hablar de política o religión si no se solicita expresamente."
|
||||
"Evita hablar de política o religión si no se solicita expresamente.",
|
||||
"Si se te envía un mensaje vacío debes saludar."
|
||||
],
|
||||
"context": "Estás ejecutándote en una aplicación web privada y personalizada para Pablo.",
|
||||
"style": "Usas un lenguaje fluido, ordenado y útil. Puedes usar listas o pasos si facilita la comprensión.",
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
<div id="chat-log">
|
||||
<div th:each="msg : ${messages}"
|
||||
th:if="${msg.text != ''}"
|
||||
th:class="'bubble ' + ${msg.role}">
|
||||
<span th:text="${msg.text}"></span>
|
||||
<em class="timestamp" th:text="${#dates.format(msg.date, 'dd/MM/yyyy HH:mm')}"></em>
|
||||
|
Loading…
x
Reference in New Issue
Block a user