Merge branch 'lollms' of https://github.com/nomic-ai/gpt4all-ui into lollms

This commit is contained in:
Saifeddine ALOUI 2023-06-10 00:45:47 +02:00
commit 8344fe3ca6
10 changed files with 96 additions and 47 deletions

61
app.py
View File

@ -89,6 +89,8 @@ class LoLLMsWebUI(LoLLMsAPPI):
self.add_endpoint("/add_reference_to_local_model", "add_reference_to_local_model", self.add_reference_to_local_model, methods=["POST"])
self.add_endpoint("/send_file", "send_file", self.send_file, methods=["POST"])
self.add_endpoint("/list_mounted_personalities", "list_mounted_personalities", self.list_mounted_personalities, methods=["POST"])
self.add_endpoint("/mount_personality", "mount_personality", self.mount_personality, methods=["POST"])
self.add_endpoint("/unmount_personality", "unmount_personality", self.unmount_personality, methods=["POST"])
self.add_endpoint("/select_personality", "select_personality", self.select_personality, methods=["POST"])
@ -674,37 +676,70 @@ class LoLLMsWebUI(LoLLMsAPPI):
else:
return jsonify({"status": True})
def list_mounted_personalities(self):
print("- Listing mounted personalities")
return jsonify({"status": True,
"personalities":self.config["personalities"],
"active_personality_id":self.config["active_personality_id"]
})
def mount_personality(self):
language = request.files['language']
category = request.files['category']
name = request.files['name']
print("- Mounting personality")
try:
data = request.get_json()
# Further processing of the data
except Exception as e:
print(f"Error occurred while parsing JSON: {e}")
return
language = data['language']
category = data['category']
name = data['name']
package_path = f"{language}/{category}/{name}"
package_full_path = lollms_path/"personalities_zoo"/package_path
config_file = package_full_path / "config.yaml"
if not config_file.exists():
self.config["personalities"].append()
if config_file.exists():
self.config["personalities"].append(package_path)
self.personalities = self.process.rebuild_personalities()
self.personality = self.personalities[self.config["active_personality_id"]]
self.apply_settings()
return jsonify({"status": True})
return jsonify({"status": True,
"personalities":self.config["personalities"],
"active_personality_id":self.config["active_personality_id"]
})
else:
return jsonify({"status": False, "error":"Personality not found"})
pth = str(config_file).replace('\\','/')
return jsonify({"status": False, "error":f"Personality not found @ {pth}"})
def unmount_personality(self):
language = request.files['language']
category = request.files['category']
name = request.files['name']
print("- Unmounting personality")
try:
data = request.get_json()
# Further processing of the data
except Exception as e:
print(f"Error occurred while parsing JSON: {e}")
return
language = data['language']
category = data['category']
name = data['name']
try:
index = self.config["personalities"].index(f"{language}/{category}/{name}")
self.config["personalities"].remove(f"{language}/{category}/{name}")
if self.config["active_personality_id"]>=index:
self.config["active_personality_id"]=0
self.personalities = self.process.rebuild_personalities()
self.personality = self.personalities[self.config["active_personality_id"]]
if len(self.config["personalities"])>0:
self.personalities = self.process.rebuild_personalities()
self.personality = self.personalities[self.config["active_personality_id"]]
else:
self.personalities = []
self.personality = None
self.apply_settings()
return jsonify({"status": True})
return jsonify({
"status": True,
"personalities":self.config["personalities"],
"active_personality_id":self.config["active_personality_id"]
})
except:
return jsonify({"status": False, "error":"Couldn't unmount personality"})

View File

@ -0,0 +1,5 @@
POST http://localhost:9600/list_mounted_personalities
Content-Type: application/json
{
}

View File

@ -0,0 +1,8 @@
POST http://localhost:9600/mount_personality
Content-Type: application/json
{
"language": "english",
"category": "generic",
"name": "gpt4all"
}

View File

@ -0,0 +1,8 @@
POST http://localhost:9600/unmount_personality
Content-Type: application/json
{
"language": "english",
"category": "generic",
"name": "gpt4all"
}

View File

@ -1,5 +1,5 @@
<template>
<div class=" break-all w-full">
<div class=" break-all ">
<div v-html="renderedMarkdown" class=""></div>
</div>
</template>
@ -32,36 +32,30 @@ const markdownIt = new MarkdownIt('commonmark', {
return (
'<div class="hljs language-html break-all whitespace-pre p-2 rounded-lg shadow-sm ">' +
'<div class="bg-bg-light-tone-panel dark:bg-bg-dark-tone-panel p-2 rounded-lg shadow-sm ">' +
languageCapital +
'<pre class="break-all whitespace-pre p-1 overflow-x-auto scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary ">' +
'<pre class=" hljs p-1 rounded-md break-all grid grid-cols-1 ">' +
'<code>' +
'<code class="overflow-x-auto break-all scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary ">' +
hljs.highlightAuto(str).value +
'</code></pre>' + '</div>'
);
} catch (__) { }
}
// return (
// '<pre class="hljs p-4 overflow-x-auto rounded-lg shadow-sm scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary">' +
// '<code>' +
// markdownIt.utils.escapeHtml(str) +
// '</code></pre>'
// );
return (
'<div class="hljs language-html break-all whitespace-pre p-2 rounded-lg shadow-sm ">' +
'<div class="bg-bg-light-tone-panel dark:bg-bg-dark-tone-panel p-2 rounded-lg shadow-sm ">' +
languageCapital +
'<pre class="break-all whitespace-pre p-1 overflow-x-auto scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary ">' +
'<pre class=" hljs p-1 rounded-md break-all grid grid-cols-1 ">' +
'<code>' +
'<code class="overflow-x-auto break-all scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary ">' +
markdownIt.utils.escapeHtml(str) +
'</code></pre>' + '</div>'
);
}
}).use(emoji);
@ -116,4 +110,4 @@ export default {
};
</script>
<style></style>
<style type='text/css'></style>

View File

@ -1,14 +1,14 @@
<template>
<div
class="group rounded-lg m-2 shadow-lg hover:border-primary dark:hover:border-primary hover:border-solid hover:border-2 border-2 border-transparent even:bg-bg-light-discussion-odd dark:even:bg-bg-dark-discussion-odd flex-row p-4 pb-2">
<div class="flex flex-row flex-grow gap-2">
<div class="flex-shrink-0">
class="group rounded-lg m-2 shadow-lg hover:border-primary dark:hover:border-primary hover:border-solid hover:border-2 border-2 border-transparent even:bg-bg-light-discussion-odd dark:even:bg-bg-dark-discussion-odd flex flex-col flex-grow flex-wrap overflow-x-hidden p-4 pb-2">
<div class="flex flex-row gap-2 ">
<div class="flex-shrink-0 ">
<!-- AVATAR -->
<img :src="getImgUrl()" @error="defaultImg($event)" class="w-10 h-10 rounded-full object-fill text-red-700">
</div>
<div class="flex flex-col flex-grow ">
<div class="flex flex-col w-full flex-grow-0 ">
<div class="flex flex-row flex-grow items-start ">
<!-- SENDER NAME -->
<div class="flex ">
@ -19,7 +19,7 @@
</div>
<!-- MESSAGE CONTROLS -->
<div class="flex-row justify-end">
<div class="flex-row justify-end mx-2">
<div class="invisible group-hover:visible flex flex-row ">
<!-- MESSAGE CONTROLS -->
<!-- EDIT CONFIRMATION -->
@ -81,9 +81,9 @@
</div>
</div>
<div >
<div class="overflow-x-auto w-full " >
<!-- MESSAGE CONTENT -->
<MarkdownRenderer ref="mdRender" v-if="!editMsgMode" :markdown-text="message.content">
<MarkdownRenderer ref="mdRender" v-if="!editMsgMode" :markdown-text="message.content" >
</MarkdownRenderer>
<textarea v-if="editMsgMode" ref="mdTextarea" :rows="4"
class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"

View File

@ -1,6 +1,6 @@
<template>
<div class="container mx-auto p-4">
<h1 class="text-3xl font-bold mb-4">Help Page</h1>
<div class="container mx-auto p-4 bg-bg-light-tone dark:bg-bg-dark-tone shadow-lg">
<div class="mb-8">
<h2 class="text-2xl font-bold mb-2">Frequently Asked Questions</h2>
<ul class="list-disc pl-4">
@ -13,13 +13,13 @@
<div>
<h2 class="text-2xl font-bold mb-2">Contact Us</h2>
<p class="mb-4">If you have any further questions or need assistance, feel free to reach out to us.</p>
<p>Discord link: <a href="https://discord.gg/C73K7hjy">https://discord.gg/C73K7hjy</a></p>
<p>Discord link: <a class="text-blue-500 hover:text-blue-400 duration-150" href="https://discord.gg/C73K7hjy">https://discord.gg/C73K7hjy</a></p>
</div>
<div class="mt-8">
<h2 class="text-2xl font-bold mb-2">Credits</h2>
<p class="mb-4">This project is developed by <span class="font-bold">ParisNeo</span> With help from the community..</p>
<p class="mb-4">This project is developed by <span class="font-bold">ParisNeo</span> With help from the community.</p>
<p class="mb-4"><span class="font-bold"><a href="https://github.com/ParisNeo/lollms-webui/graphs/contributors">Check out the full list of developers here and show them some love.</a></span></p>
<p>Check out the project on <a class="text-blue-500" :href="githubLink" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<p>Check out the project on <a class="text-blue-500 hover:text-blue-400 duration-150" :href="githubLink" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
</div>
</div>
</template>

View File

@ -960,21 +960,20 @@ export default {
this.isLoading = true
this.update_setting('binding_name', value, (res) => {
this.refresh();
this.$refs.toast.showToast("Binding changed.", 4, true)
this.settingsChanged = true
this.isLoading = false
nextTick(() => {
feather.replace()
})
// If binding changes then reset model
this.update_model(null)
this.configFile.model_name = null
this.api_get_req("disk_usage").then(response => {
this.diskUsage = response
this.refresh();
nextTick(() => {
feather.replace()
})
})

View File

@ -1,5 +1,5 @@
<template>
<div class="container overflow-y-scroll flex flex-col no-scrollbar shadow-lg p-10 pt-0">
<div class="container overflow-y-scroll flex flex-col no-scrollbar shadow-lg p-10 pt-2 bg-bg-light-tone dark:bg-bg-dark-tone">
<form @submit.prevent="submitForm" class="max-w-md mx-auto">
<!-- Model/Tokenizer -->
<div class="mb-4">