Spaces:
Paused
Paused
File size: 3,091 Bytes
7c28e1f 1615297 7c28e1f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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');
} |