From a5b5d21ccaff23fc6b854a68bae69439e10672d8 Mon Sep 17 00:00:00 2001
From: Concedo <39025047+LostRuins@users.noreply.github.com>
Date: Sat, 19 Apr 2025 00:59:00 +0800
Subject: [PATCH] added chat mode to noscript
---
klite.embd | 6 +++---
koboldcpp.py | 59 +++++++++++++++++++++++++++++++++++++++++++---------
2 files changed, 52 insertions(+), 13 deletions(-)
diff --git a/klite.embd b/klite.embd
index 19cd0c382..e7617ef69 100644
--- a/klite.embd
+++ b/klite.embd
@@ -12,9 +12,9 @@ Current version indicated by LITEVER below.
-->
@@ -9027,7 +9027,7 @@ Current version indicated by LITEVER below.
.then((response) => response.json())
.then((data) => {
console.log(data);
- if (data && data.data.length > 0)
+ if (data && data.data && data.data.length > 0)
{
for (var i = dropdown.options.length - 1; i >= 0; i--) {
var option = dropdown.options[i];
diff --git a/koboldcpp.py b/koboldcpp.py
index 2b2fe6840..fb6282833 100644
--- a/koboldcpp.py
+++ b/koboldcpp.py
@@ -2545,13 +2545,26 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
reply = ""
status = str(parsed_dict['status'][0]) if 'status' in parsed_dict else "Ready To Generate"
prompt = str(parsed_dict['prompt'][0]) if 'prompt' in parsed_dict else ""
+ chatmsg = str(parsed_dict['chatmsg'][0]) if 'chatmsg' in parsed_dict else ""
max_length = int(parsed_dict['max_length'][0]) if 'max_length' in parsed_dict else 100
temperature = float(parsed_dict['temperature'][0]) if 'temperature' in parsed_dict else 0.75
top_k = int(parsed_dict['top_k'][0]) if 'top_k' in parsed_dict else 100
top_p = float(parsed_dict['top_p'][0]) if 'top_p' in parsed_dict else 0.9
rep_pen = float(parsed_dict['rep_pen'][0]) if 'rep_pen' in parsed_dict else 1.0
ban_eos_token = int(parsed_dict['ban_eos_token'][0]) if 'ban_eos_token' in parsed_dict else 0
- gencommand = (parsed_dict['generate'][0] if 'generate' in parsed_dict else "")=="Generate"
+ genbtnval = (parsed_dict['generate'][0] if 'generate' in parsed_dict else "")
+ gencommand = (genbtnval=="Generate" or genbtnval=="Send")
+ chatmode = int(parsed_dict['chatmode'][0]) if 'chatmode' in parsed_dict else 0
+ stops = []
+ prefix = ""
+ if chatmode:
+ ban_eos_token = False
+ if chatmsg:
+ prompt += f"\nUser: {chatmsg}\nAssistant:"
+ else:
+ gencommand = False
+ stops = ["\nUser:","\nAssistant:"]
+ prefix = "[This is a chat conversation log between User and Assistant.]\n"
if modelbusy.locked():
status = "Model is currently busy, try again later."
@@ -2565,23 +2578,41 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
epurl = f"{httpsaffix}://localhost:{args.port}"
if args.host!="":
epurl = f"{httpsaffix}://{args.host}:{args.port}"
- gen_payload = {"prompt": prompt,"max_length": max_length,"temperature": temperature,"top_k": top_k,"top_p": top_p,"rep_pen": rep_pen,"ban_eos_token":ban_eos_token}
+ gen_payload = {"prompt": prefix+prompt,"max_length": max_length,"temperature": temperature,"top_k": top_k,"top_p": top_p,"rep_pen": rep_pen,"ban_eos_token":ban_eos_token, "stop_sequence":stops}
respjson = make_url_request(f'{epurl}/api/v1/generate', gen_payload)
reply = html.escape(respjson["results"][0]["text"])
+ if chatmode:
+ reply = " "+reply.strip()
status = "Generation Completed"
if "generate" in parsed_dict:
del parsed_dict["generate"]
+ if "chatmsg" in parsed_dict:
+ del parsed_dict["chatmsg"]
parsed_dict["prompt"] = prompt + reply
parsed_dict["status"] = status
+ parsed_dict["chatmode"] = ("1" if chatmode else "0")
updated_query_string = urlparse.urlencode(parsed_dict, doseq=True)
updated_path = parsed_url._replace(query=updated_query_string).geturl()
self.path = updated_path
+ time.sleep(0.2) #short delay
self.send_response(302)
self.send_header("location", self.path)
self.end_headers(content_type='text/html')
return
+ bodycontent = f'''{"Chat Mode" if chatmode else "Story Mode"}
'''
+ if chatmode:
+ tmp = prompt.strip().replace("\n","
")
+ bodycontent += f'''
{"No History Yet. Talk to the AI." if prompt=="" else tmp}
+ + + (Be patient)''' + else: + bodycontent += f''' +KoboldCpp can be used without Javascript enabled, however this is not recommended.
If you have Javascript, please use KoboldAI Lite WebUI instead.