Spaces:
Running
Running
import requests from "./request.js"; | |
class Initialize{ | |
constructor(uiManager){ | |
this.convId; | |
this.convTitle; | |
this.uiManager = uiManager; | |
this.systemPrompt = `your response syntax should be: ###for heading### \n ** for sub heading ** \n *** for text highlight/bold text ***`; | |
this.model = null; | |
} | |
async initialize(model=null){ | |
this.convTitle=null; | |
this.convId=null; | |
this.uiManager.messagesDiv.innerHTML = ''; | |
this.uiManager.prevChatsCont.innerHTML = ''; | |
await this.fetchConvs(); | |
document.querySelectorAll('.prevChat').forEach((elem)=>{ | |
elem.addEventListener('click', ()=>{ | |
this.reInitialize(elem.id) | |
}) | |
}) | |
if(model!=null){ | |
this.model = model; | |
} else{ | |
await this.fetchModels() | |
} | |
} | |
async reInitialize(id){ | |
this.convTitle=null; | |
this.convId=id; | |
this.uiManager.messagesDiv.innerHTML = ''; | |
await this.fetchConv(id); | |
} | |
async fetchConv(id){ | |
try { | |
const response = await requests.request('POST','/fetch',{"Content-Type": "application/json"},JSON.stringify({"convId": id}),false); | |
if(!response.ok){ | |
alert('error while fetching conversations') | |
return | |
} | |
const data = await response.json(); | |
this.convTitle = data['title']; | |
const arr = data['messages']; | |
for(let i=0;i<arr.length;i++){ | |
const dict = arr[i]; | |
if(dict['role']=='user'){ | |
this.uiManager.appendUserMsg(dict['content']) | |
} | |
else if(dict['role']=='assistant'){ | |
this.uiManager.appendAiMsg(dict['content']); | |
this.uiManager.renderSymbols.renderAll(this.uiManager.aiP); | |
} | |
} | |
} catch (error) { | |
alert(`an error occured ${error}`) | |
console.log(error) | |
} | |
} | |
async fetchConvs(){ | |
try { | |
const response = await requests.request('GET','/convs',{"Content-Type": "application/json"},null,false); | |
if(!response.ok){ | |
alert('error while fetching conversations') | |
return | |
} | |
const data = await response.json(); | |
for(let i=0;i<data.length;i++){ | |
const prevChat = document.createElement('div'); | |
const dict = data[i]; | |
prevChat.id = dict['convId']; | |
prevChat.className = 'prevChat'; | |
prevChat.innerText = dict['title']; | |
this.uiManager.prevChatsCont.appendChild(prevChat) | |
} | |
} catch (error) { | |
alert(`an error ocuured ${error}`) | |
} | |
} | |
async createConv(){ | |
const response = await requests.request('POST', '/create', {"Content-Type": "application/json"},JSON.stringify({"system_prompt": this.systemPrompt}),false) | |
if(!response.ok){ | |
alert('error while creating new Conversation') | |
return | |
} | |
const data = await response.json() | |
this.convId = data['convId'] | |
} | |
async fetchModels(){ | |
const response = await requests.request('GET', '/models', {"Content-Type": "application/json"},null,false) | |
if(!response.ok){ | |
alert('error while fetching models') | |
return | |
} | |
const data = await response.json(); | |
this.model = data[0]; | |
this.uiManager.models.innerHTML = ''; | |
for(let i=0; i<data.length;i++){ | |
const opt = document.createElement('option') | |
opt.innerText = data[i]; | |
this.uiManager.models.appendChild(opt) | |
} | |
this.uiManager.models.addEventListener('change', (e)=>{ | |
const selected = e.target.value; | |
this.initialize(selected) | |
}) | |
} | |
} | |
export default Initialize | |