Spaces:
Paused
Paused
let conversationHistory = []; | |
function sendMessage() { | |
const userInput = document.getElementById('user-input'); | |
const submitButton = document.getElementById('submit-button'); | |
const userMessage = userInput.value.trim(); | |
if (userMessage) { | |
addMessage('user', userMessage, 'user'); | |
userInput.value = ''; | |
// Добавляем сообщение пользователя в историю | |
// conversationHistory.push({"role": "user", "content": userMessage, "display": userMessage}); | |
// Ограничиваем историю до 20 сообщений | |
if (conversationHistory.length > 20) { | |
conversationHistory.shift(); | |
} | |
submitButton.innerText = 'Отвечаем...' | |
submitButton.disabled = true | |
// Отправляем сообщение и историю на сервер | |
fetch('/send_message', { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ history: conversationHistory, message: userMessage }) | |
}) | |
.then(response => response.json()) | |
.then(data => { | |
addMessage('assistant', data.response, 'Ассистент'); | |
conversationHistory = data.history; // Обновляем историю сообщений | |
saveConversationHistory(); | |
}) | |
.catch(error => { | |
console.error('Error:', error); | |
addMessage('assistant', 'Sorry, something went wrong.', 'Ассистент'); | |
}) | |
.finally(e => { | |
submitButton.innerText = 'Отправить' | |
submitButton.disabled = false | |
}) | |
} | |
} | |
function addMessage(sender, message, role) { | |
if(role == 'system') return | |
const chatMessages = document.getElementById('chat-messages'); | |
const messageElement = document.createElement('div'); | |
messageElement.classList.add('message', sender); | |
const label = role === 'user' ? 'Вы' : 'Ассистент' | |
messageElement.innerHTML = `<strong>${label}:</strong> ${message}`; | |
chatMessages.appendChild(messageElement); | |
chatMessages.scrollTop = chatMessages.scrollHeight; | |
} | |
function saveConversationHistory() { | |
localStorage.setItem('conversationHistory', JSON.stringify(conversationHistory)); | |
} | |
function loadConversationHistory() { | |
const savedHistory = localStorage.getItem('conversationHistory'); | |
if (savedHistory) { | |
conversationHistory = JSON.parse(savedHistory); | |
conversationHistory.forEach(msg => addMessage(msg.role, msg.display, msg.role)); | |
} | |
} | |
document.addEventListener('DOMContentLoaded', () => { | |
loadConversationHistory(); | |
document.getElementById('clear-history').addEventListener('click', () => { | |
clearConversationHistory(); | |
}); | |
}); | |
function clearConversationHistory() { | |
conversationHistory = []; | |
const chatMessages = document.getElementById('chat-messages'); | |
chatMessages.innerHTML = ''; | |
localStorage.removeItem('conversationHistory'); | |
} |