| 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 |
|
|