Spaces:
Running
Running
File size: 2,845 Bytes
39dcb26 2c97677 93c0ec9 39dcb26 88df89c f03dace 39dcb26 8c8ff71 39dcb26 a66bba3 39dcb26 88df89c 39dcb26 88df89c 39dcb26 88df89c |
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 82 83 84 85 86 87 |
const messageList = document.getElementById('message-list');
const messageInput = document.getElementById('message-input');
const sendButton = document.getElementById('send-button');
// Send message function
sendButton.addEventListener('click', sendMessage);
messageInput.addEventListener('keydown', (event) => {
if (event.key === 'Enter') {
sendMessage();
}
});
function sendMessage() {
const message = messageInput.value.trim();
if (message === '') {
return;
}
appendMessage(message, 'user-message');
messageInput.value = '';
appendMessage('', 'bot-message'); // Create an empty message element for the bot's response
fetch('/chat_api', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'qwen3:1.7b', // You can change the model here
prompt: message
})
})
.then(response => {
const reader = response.body.getReader();
const decoder = new TextDecoder();
let partialResponse = '';
function read() {
reader.read().then(({ done, value }) => {
if (done) {
return;
}
partialResponse += decoder.decode(value, { stream: true });
try {
const jsonObjects = partialResponse.split('\n');
partialResponse = jsonObjects.pop(); // Keep the last partial object
for (const jsonObjStr of jsonObjects) {
if (jsonObjStr) {
const jsonObj = JSON.parse(jsonObjStr);
if (jsonObj.response) {
appendToLastMessage(jsonObj.response);
}
}
}
} catch (e) {
// JSON parsing error, wait for more chunks
}
read();
});
}
read();
})
.catch(error => {
console.error('Error:', error);
const lastMessage = messageList.lastChild;
if (lastMessage && lastMessage.classList.contains('bot-message')) {
lastMessage.textContent = 'Sorry, something went wrong.';
}
});
}
function appendMessage(message, className) {
const li = document.createElement('li');
li.textContent = message;
li.classList.add(className);
messageList.appendChild(li);
messageList.scrollTop = messageList.scrollHeight;
}
function appendToLastMessage(text) {
const lastMessage = messageList.lastChild;
if (lastMessage && lastMessage.classList.contains('bot-message')) {
lastMessage.textContent += text;
messageList.scrollTop = messageList.scrollHeight;
}
} |