mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2024-12-19 04:17:52 +00:00
enhanced ui
This commit is contained in:
parent
17b9429b1d
commit
95f0bae21f
@ -1,5 +1,5 @@
|
|||||||
# =================== Lord Of Large Language Multimodal Systems Configuration file ===========================
|
# =================== Lord Of Large Language Multimodal Systems Configuration file ===========================
|
||||||
version: 118
|
version: 120
|
||||||
binding_name: null
|
binding_name: null
|
||||||
model_name: null
|
model_name: null
|
||||||
model_variant: null
|
model_variant: null
|
||||||
@ -249,6 +249,8 @@ rag_clean_chunks: true #Removed all uinecessary spaces and line returns
|
|||||||
rag_follow_subfolders: true #if true the vectorizer will vectorize the content of subfolders too
|
rag_follow_subfolders: true #if true the vectorizer will vectorize the content of subfolders too
|
||||||
rag_check_new_files_at_startup: false #if true, the vectorizer will automatically check for any new files in the folder and adds it to the database
|
rag_check_new_files_at_startup: false #if true, the vectorizer will automatically check for any new files in the folder and adds it to the database
|
||||||
rag_preprocess_chunks: false #if true, an LLM will preprocess the content of the chunk before writing it in a simple format
|
rag_preprocess_chunks: false #if true, an LLM will preprocess the content of the chunk before writing it in a simple format
|
||||||
|
rag_activate_multi_hops: false #if true, we use multi hops algorithm to do multiple researches until the AI has enough data
|
||||||
|
rag_min_nb_tokens_in_chunk: 10 #this removed any useless junk ith less than x tokens
|
||||||
|
|
||||||
activate_skills_lib: false # Activate vectorizing previous conversations
|
activate_skills_lib: false # Activate vectorizing previous conversations
|
||||||
skills_lib_database_name: "default" # Default skills database
|
skills_lib_database_name: "default" # Default skills database
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 09d80f12da1107af16ffbdbd862e939f82f968e3
|
Subproject commit cb32fcb4742beb3e56dc4e61fdde965f7726bafc
|
@ -1087,6 +1087,14 @@ class LOLLMSWebUI(LOLLMSElfServer):
|
|||||||
|
|
||||||
# Stream the generated text to the main process
|
# Stream the generated text to the main process
|
||||||
elif message_type == MSG_TYPE.MSG_TYPE_FULL:
|
elif message_type == MSG_TYPE.MSG_TYPE_FULL:
|
||||||
|
if self.nb_received_tokens==0:
|
||||||
|
self.start_time = datetime.now()
|
||||||
|
try:
|
||||||
|
self.update_message(client_id, "✍ warming up ...", msg_type=MSG_TYPE.MSG_TYPE_STEP_END, parameters= {'status':True})
|
||||||
|
self.update_message(client_id, "Generating ...", msg_type=MSG_TYPE.MSG_TYPE_STEP_START)
|
||||||
|
except Exception as ex:
|
||||||
|
ASCIIColors.warning("Couldn't send status update to client")
|
||||||
|
|
||||||
client.generated_text = chunk
|
client.generated_text = chunk
|
||||||
antiprompt = self.personality.detect_antiprompt(client.generated_text)
|
antiprompt = self.personality.detect_antiprompt(client.generated_text)
|
||||||
if antiprompt:
|
if antiprompt:
|
||||||
@ -1308,11 +1316,34 @@ class LOLLMSWebUI(LOLLMSElfServer):
|
|||||||
print()
|
print()
|
||||||
|
|
||||||
self.cancel_gen = False
|
self.cancel_gen = False
|
||||||
|
sources_text = ""
|
||||||
|
if len(context_details["documentation_entries"]) > 0:
|
||||||
|
sources_text += '<div class="text-gray-400 mr-10px">Sources:</div>'
|
||||||
|
sources_text += '<div class="mt-4 flex flex-col items-start gap-x-2 gap-y-1.5 text-sm" style="max-height: 500px; overflow-y: auto;">'
|
||||||
|
for source in context_details["documentation_entries"]:
|
||||||
|
title = source["document_title"]
|
||||||
|
path = source["document_path"]
|
||||||
|
content = source["chunk_content"]
|
||||||
|
size = source["chunk_size"]
|
||||||
|
distance = source["distance"]
|
||||||
|
sources_text += f'''
|
||||||
|
<div class="source-item">
|
||||||
|
<button onclick="var details = document.getElementById('source-details-{title}'); details.style.display = details.style.display === 'none' ? 'block' : 'none';" style="text-align: left; font-weight: bold;"><strong>{title}</strong></button>
|
||||||
|
<div id="source-details-{title}" style="display:none;">
|
||||||
|
<p><strong>Path:</strong> {path}</p>
|
||||||
|
<p><strong>Content:</strong> {content}</p>
|
||||||
|
<p><strong>Size:</strong> {size}</p>
|
||||||
|
<p><strong>Distance:</strong> {distance}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
'''
|
||||||
|
sources_text += '</div>'
|
||||||
|
self.personality.ui(sources_text)
|
||||||
|
|
||||||
# Send final message
|
# Send final message
|
||||||
if self.config.activate_internet_search or force_using_internet or generation_type == "full_context_with_internet":
|
if self.config.activate_internet_search or force_using_internet or generation_type == "full_context_with_internet":
|
||||||
from lollms.internet import get_favicon_url, get_root_url
|
from lollms.internet import get_favicon_url, get_root_url
|
||||||
sources_text = '<div class="mt-4 flex flex-wrap items-center gap-x-2 gap-y-1.5 text-sm ">'
|
sources_text += '<div class="mt-4 flex flex-wrap items-center gap-x-2 gap-y-1.5 text-sm ">'
|
||||||
sources_text += '<div class="text-gray-400 mr-10px">Sources:</div>'
|
sources_text += '<div class="text-gray-400 mr-10px">Sources:</div>'
|
||||||
for source in internet_search_infos:
|
for source in internet_search_infos:
|
||||||
url = source["url"]
|
url = source["url"]
|
||||||
@ -1329,11 +1360,13 @@ class LOLLMSWebUI(LOLLMSElfServer):
|
|||||||
f'</a>',
|
f'</a>',
|
||||||
])
|
])
|
||||||
sources_text += '</div>'
|
sources_text += '</div>'
|
||||||
client.generated_text=client.generated_text.split(f"{start_header_id_template}")[0] + "\n" + sources_text
|
self.personality.ui(sources_text)
|
||||||
self.personality.full(client.generated_text)
|
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
trace_exception(ex)
|
trace_exception(ex)
|
||||||
self.update_message(client_id, "Generating ...", msg_type=MSG_TYPE.MSG_TYPE_STEP_END)
|
try:
|
||||||
|
self.update_message(client_id, "Generating ...", msg_type=MSG_TYPE.MSG_TYPE_STEP_END, parameters= {'status':True})
|
||||||
|
except Exception as ex:
|
||||||
|
ASCIIColors.warning("Couldn't send status update to client")
|
||||||
self.close_message(client_id)
|
self.close_message(client_id)
|
||||||
|
|
||||||
client.processing=False
|
client.processing=False
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
web/dist/index.html
vendored
4
web/dist/index.html
vendored
@ -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-fcacc2dd.js"></script>
|
<script type="module" crossorigin src="/assets/index-be013c6f.js"></script>
|
||||||
<link rel="stylesheet" href="/assets/index-f9292296.css">
|
<link rel="stylesheet" href="/assets/index-9de3a734.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
@ -17,8 +17,7 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
code: {
|
code: {
|
||||||
handler(newCode) {
|
handler(newCode) {
|
||||||
// Extract and evaluate script tags from the new code
|
console.log("Code changed");
|
||||||
console.log("Code changed")
|
|
||||||
this.evaluateScriptTags(newCode);
|
this.evaluateScriptTags(newCode);
|
||||||
this.componentKey++;
|
this.componentKey++;
|
||||||
},
|
},
|
||||||
@ -44,7 +43,11 @@ export default {
|
|||||||
|
|
||||||
// Set the evaluated code to the modified HTML
|
// Set the evaluated code to the modified HTML
|
||||||
this.evaluatedCode = tempDiv.innerHTML;
|
this.evaluatedCode = tempDiv.innerHTML;
|
||||||
console.log("evaluated code: " + this.evaluatedCode)
|
|
||||||
|
// Force a re-render by updating the component key
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.componentKey++;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -765,7 +765,6 @@ export default {
|
|||||||
},
|
},
|
||||||
'message.ui': function (newContent) {
|
'message.ui': function (newContent) {
|
||||||
console.log("ui changed")
|
console.log("ui changed")
|
||||||
console.log(this.message.ui)
|
|
||||||
},
|
},
|
||||||
showConfirmation() {
|
showConfirmation() {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
@ -47,7 +47,10 @@
|
|||||||
:on-settings="onSettingsPersonality"
|
:on-settings="onSettingsPersonality"
|
||||||
:on-reinstall="onPersonalityReinstall"
|
:on-reinstall="onPersonalityReinstall"
|
||||||
:on-talk="handleOnTalk"
|
:on-talk="handleOnTalk"
|
||||||
|
:on-copy-personality-name="onCopyPersonalityName"
|
||||||
|
:on-copy-to_custom="onCopyToCustom"
|
||||||
:on-open-folder="handleOpenFolder"
|
:on-open-folder="handleOpenFolder"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
</TransitionGroup>
|
</TransitionGroup>
|
||||||
</div>
|
</div>
|
||||||
@ -165,6 +168,14 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async onCopyToCustom(pers) {
|
||||||
|
await axios.post("/copy_to_custom_personas",{client_id:this.$store.state.client_id, category: pers.personality.category, name: pers.personality.name})
|
||||||
|
},
|
||||||
|
onCopyPersonalityName(personality) {
|
||||||
|
this.$store.state.toast.showToast("Copied name to clipboard!", 4, true)
|
||||||
|
navigator.clipboard.writeText(personality.name);
|
||||||
|
},
|
||||||
|
|
||||||
toggleShowPersList() {
|
toggleShowPersList() {
|
||||||
//this.show = !this.show
|
//this.show = !this.show
|
||||||
this.onShowPersList()
|
this.onShowPersList()
|
||||||
|
@ -3598,6 +3598,7 @@
|
|||||||
:on-reinstall="onPersonalityReinstall"
|
:on-reinstall="onPersonalityReinstall"
|
||||||
:on-settings="onSettingsPersonality"
|
:on-settings="onSettingsPersonality"
|
||||||
:on-copy-personality-name="onCopyPersonalityName"
|
:on-copy-personality-name="onCopyPersonalityName"
|
||||||
|
:on-copy-to_custom="onCopyToCustom"
|
||||||
:on-open-folder="handleOpenFolder"
|
:on-open-folder="handleOpenFolder"
|
||||||
/>
|
/>
|
||||||
</TransitionGroup>
|
</TransitionGroup>
|
||||||
@ -4845,6 +4846,9 @@ export default {
|
|||||||
this.$store.state.toast.showToast("Copied name to clipboard!", 4, true)
|
this.$store.state.toast.showToast("Copied name to clipboard!", 4, true)
|
||||||
navigator.clipboard.writeText(personality.name);
|
navigator.clipboard.writeText(personality.name);
|
||||||
},
|
},
|
||||||
|
async onCopyToCustom(pers) {
|
||||||
|
await axios.post("/copy_to_custom_personas",{client_id:this.$store.state.client_id, category: pers.personality.category, name: pers.personality.name})
|
||||||
|
},
|
||||||
async handleOpenFolder(pers){
|
async handleOpenFolder(pers){
|
||||||
await axios.post("/open_personality_folder",{client_id:this.$store.state.client_id, personality_folder: pers.personality.folder})
|
await axios.post("/open_personality_folder",{client_id:this.$store.state.client_id, personality_folder: pers.personality.folder})
|
||||||
},
|
},
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 161c404533a2bbbe3058441b6a01c17c26a53b11
|
Subproject commit 89331b2f72d19592fcac564c627c1b38b7be05f0
|
Loading…
Reference in New Issue
Block a user