This commit is contained in:
Saifeddine ALOUI 2023-12-17 21:19:46 +01:00
parent bd56719618
commit b910d254e7
14 changed files with 80 additions and 33 deletions

View File

@ -2012,16 +2012,23 @@ class LoLLMsAPI(LollmsApplication):
self.prepare_reception(client_id) self.prepare_reception(client_id)
self.generating = True self.generating = True
self.connections[client_id]["processing"]=True self.connections[client_id]["processing"]=True
self.generate( try:
self.discussion_messages, self.generate(
self.current_message, self.discussion_messages,
n_predict = self.config.ctx_size-len(tokens)-1, self.current_message,
client_id=client_id, n_predict = self.config.ctx_size-len(tokens)-1,
callback=partial(self.process_chunk,client_id = client_id) client_id=client_id,
) callback=partial(self.process_chunk,client_id = client_id)
print() )
print("## Done Generation ##") print()
print() ASCIIColors.success("## Done Generation ##")
print()
except Exception as ex:
trace_exception(ex)
print()
ASCIIColors.error("## Generation Error ##")
print()
self.cancel_gen = False self.cancel_gen = False
# Send final message # Send final message

6
app.py
View File

@ -1011,7 +1011,8 @@ try:
try: try:
self.model = None self.model = None
for per in self.mounted_personalities: for per in self.mounted_personalities:
per.model = None if per is not None:
per.model = None
self.model = self.binding.build_model() self.model = self.binding.build_model()
if self.model is not None: if self.model is not None:
ASCIIColors.yellow("New model OK") ASCIIColors.yellow("New model OK")
@ -1638,7 +1639,6 @@ try:
self.config.binding_name = data['name'] self.config.binding_name = data['name']
self.binding = BindingBuilder().build_binding(self.config, self.lollms_paths, InstallOption.FORCE_INSTALL, lollmsCom=self) self.binding = BindingBuilder().build_binding(self.config, self.lollms_paths, InstallOption.FORCE_INSTALL, lollmsCom=self)
self.success("Binding installed successfully") self.success("Binding installed successfully")
self.InfoMessage("Please reboot the application so that the binding installation can be taken into consideration")
del self.binding del self.binding
self.binding = None self.binding = None
self.config.binding_name = old_bn self.config.binding_name = old_bn
@ -1671,12 +1671,12 @@ try:
self.config.binding_name = data['name'] self.config.binding_name = data['name']
self.binding = BindingBuilder().build_binding(self.config, self.lollms_paths, InstallOption.FORCE_INSTALL, lollmsCom=self) self.binding = BindingBuilder().build_binding(self.config, self.lollms_paths, InstallOption.FORCE_INSTALL, lollmsCom=self)
self.success("Binding reinstalled successfully") self.success("Binding reinstalled successfully")
self.InfoMessage("Please reboot the application so that the binding installation can be taken into consideration")
self.config.binding_name = old_bn self.config.binding_name = old_bn
self.binding = BindingBuilder().build_binding(self.config, self.lollms_paths, lollmsCom=self) self.binding = BindingBuilder().build_binding(self.config, self.lollms_paths, lollmsCom=self)
self.model = self.binding.build_model() self.model = self.binding.build_model()
for per in self.mounted_personalities: for per in self.mounted_personalities:
per.model = self.model per.model = self.model
return jsonify({"status": True}) return jsonify({"status": True})
except Exception as ex: except Exception as ex:
ASCIIColors.error(f"Couldn't build binding: [{ex}]") ASCIIColors.error(f"Couldn't build binding: [{ex}]")

View File

@ -9,11 +9,31 @@ select the install mode (Cuda, rocm or cpu)
wait wait
Run the app Run the app
Choose the personal data folder Choose the personal data folder
Install a binding Install a binding then Reboot the app
Reboot the app
Select the binding Select the binding
Install a model Install a model
Select a model Select a model
And now you are ready to rock
Let me show you how I do it:
Start by opening the lollms web user interface link that you can find in the description. Then go to the latest release page and download the installer suited for your platform. Make sure you put it into a path with no spaces and inside an empty folder as it will fill out the folder with the install files.
Now execute the installer. As it says, make sure the path you are using is not very long and without spaces as conda may have bugs with paths that contains spaces.
Now press enter to continue.
Select the right configuration. if you have an nvisia gpu, select option a. if you have a Rocm compatible GPU like AMD GPUs press B. If you have no GPU or want to use remote generation, then select C.
Now just wait
Once the installation is done, close the installation script and go back to the install folder.
run the win_run.bat file and wait for the program to run for the first time.
Some additional libraries may need to be installed the first time you run it.
The first time you run the app, you will need to specify a folder where to put your personal data. Make sure the disk containing this folder is big enough as it will hold your models as well as the personas outputs and your discussion databases. The default folder is a folder called lollms under your documents folder. Just press enter if it is ok or type another path then press enter.
Now lollms is installed, but there is no binding installed nor a model. To do this, go to settings tab, select binding s zoo and install a binding depending on your preferences. Here I am using a GPU and want local generation, so I will select Hugging face to use full sized models, GPTQ quantized models or AWQ quantized models. The installation may take some while, you can look at the install details in the console window.
Start by opening the lollms web user interface link that you can find in the description. Then go to the latest release page and download the

@ -1 +1 @@
Subproject commit 62a8af9c3b22d2a1b70d7657164e70ced86d16c8 Subproject commit 9acdc3e9cd7880451b57e290d08c2957347766bb

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
web/dist/disconnected.mp3 vendored Normal file

Binary file not shown.

4
web/dist/index.html vendored
View File

@ -6,8 +6,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LoLLMS WebUI - Welcome</title> <title>LoLLMS WebUI - Welcome</title>
<script type="module" crossorigin src="/assets/index-24f00053.js"></script> <script type="module" crossorigin src="/assets/index-3aea4c30.js"></script>
<link rel="stylesheet" href="/assets/index-80a485ca.css"> <link rel="stylesheet" href="/assets/index-a331d591.css">
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

BIN
web/dist/rebooting.mp3 vendored Normal file

Binary file not shown.

BIN
web/public/disconnected.mp3 Normal file

Binary file not shown.

BIN
web/public/rebooting.mp3 Normal file

Binary file not shown.

View File

@ -35,8 +35,8 @@
<div v-if="!isConnected" title="Connection status: Not connected" class="text-red-500 cursor-pointer"> <div v-if="!isConnected" title="Connection status: Not connected" class="text-red-500 cursor-pointer">
<i data-feather="zap-off"></i> <i data-feather="zap-off"></i>
</div> </div>
<a href="#" @click="refreshPage"> <a href="#" @click="restartProgram">
<div class="text-2xl hover:text-primary duration-150" title="refresh page"> <div class="text-2xl hover:text-primary duration-150" title="restart program">
<i data-feather="refresh-ccw"></i> <i data-feather="refresh-ccw"></i>
</div> </div>
</a> </a>
@ -135,6 +135,7 @@ export default {
watch:{ watch:{
isConnected(){ isConnected(){
if (!this.isConnected){ if (!this.isConnected){
this.disconnected_audio.play()
this.$store.state.toast.showToast("Server suddenly disconnected. Please reboot the server", 410, false) this.$store.state.toast.showToast("Server suddenly disconnected. Please reboot the server", 410, false)
} }
nextTick(() => { nextTick(() => {
@ -145,6 +146,8 @@ export default {
}, },
data() { data() {
return { return {
rebooting_the_tool_audio: new Audio("rebooting.mp3"),
disconnected_audio: new Audio("disconnected.mp3"),
database_selectorDialogVisible:false, database_selectorDialogVisible:false,
progress_visibility:false, progress_visibility:false,
progress_value:0, progress_value:0,
@ -176,11 +179,16 @@ export default {
this.systemTheme = window.matchMedia("prefers-color-scheme: dark").matches; this.systemTheme = window.matchMedia("prefers-color-scheme: dark").matches;
}, },
methods: { methods: {
async refreshPage(event) { restartProgram(event) {
event.preventDefault(); event.preventDefault();
this.$store.state.api_get_req('restart_program')
this.rebooting_the_tool_audio.play()
this.$store.state.toast.showToast("Rebooting the app. Please wait...", 410, false)
//self.$store.state.toast.showToast("Rebooting the app. Please wait...", 50, true);
console.log("this.$store.state.api_get_req",this.$store.state.api_get_req) console.log("this.$store.state.api_get_req",this.$store.state.api_get_req)
await this.$store.state.api_get_req('restart_program') setTimeout(()=>{
window.close(); window.close();
},2000)
}, },
handleOk(inputText) { handleOk(inputText) {
console.log("Input text:", inputText); console.log("Input text:", inputText);

View File

@ -2615,8 +2615,14 @@ export default {
this.isLoading = false this.isLoading = false
console.log('install_binding', res) console.log('install_binding', res)
if (res.data.status) { if (res.data.status) {
this.$store.state.toast.showToast("Installed binding successfully!", 4, true) this.$store.state.toast.showToast("Binding installed successfully!", 4, true)
this.update_binding(binding_object.binding.folder); this.update_binding(binding_object.binding.folder);
this.$store.state.api_get_req('restart_program')
this.$store.state.toast.showToast("Rebooting the app. Please wait...", 410, false)
console.log("this.$store.state.api_get_req",this.$store.state.api_get_req)
setTimeout(()=>{
window.close();
},2000)
} else { } else {
this.$store.state.toast.showToast("Could not reinstall binding", 4, false) this.$store.state.toast.showToast("Could not reinstall binding", 4, false)
} }
@ -2684,7 +2690,13 @@ export default {
this.isLoading = false this.isLoading = false
console.log('reinstall_binding', res) console.log('reinstall_binding', res)
if (res.data.status) { if (res.data.status) {
this.$store.state.toast.showToast("Reinstalled binding successfully!", 4, true) this.$store.state.toast.showToast("Binding reinstalled successfully!", 4, true)
this.$store.state.api_get_req('restart_program')
this.$store.state.toast.showToast("Rebooting the app. Please wait...", 410, false)
console.log("this.$store.state.api_get_req",this.$store.state.api_get_req)
setTimeout(()=>{
window.close();
},2000)
} else { } else {
this.$store.state.toast.showToast("Could not reinstall binding", 4, false) this.$store.state.toast.showToast("Could not reinstall binding", 4, false)
} }

@ -1 +1 @@
Subproject commit aba4e0d739f02cbce2569da19b6a1f7714d3807c Subproject commit d1d90b57585ec74647de8e5e4ed6a62282a46032