mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2025-04-19 00:06:52 +00:00
Merge branch 'lollms' of https://github.com/nomic-ai/gpt4all-ui into lollms
This commit is contained in:
commit
8344fe3ca6
61
app.py
61
app.py
@ -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"})
|
||||
|
||||
|
5
tests/end_point_tests/list_mounted_personalities.http
Normal file
5
tests/end_point_tests/list_mounted_personalities.http
Normal file
@ -0,0 +1,5 @@
|
||||
POST http://localhost:9600/list_mounted_personalities
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
}
|
8
tests/end_point_tests/mount_personality.http
Normal file
8
tests/end_point_tests/mount_personality.http
Normal file
@ -0,0 +1,8 @@
|
||||
POST http://localhost:9600/mount_personality
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"language": "english",
|
||||
"category": "generic",
|
||||
"name": "gpt4all"
|
||||
}
|
8
tests/end_point_tests/unmount_personality.http
Normal file
8
tests/end_point_tests/unmount_personality.http
Normal file
@ -0,0 +1,8 @@
|
||||
POST http://localhost:9600/unmount_personality
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"language": "english",
|
||||
"category": "generic",
|
||||
"name": "gpt4all"
|
||||
}
|
@ -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>
|
@ -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"
|
||||
|
@ -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>
|
||||
|
@ -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()
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -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">
|
||||
|
Loading…
x
Reference in New Issue
Block a user