Skip to content

Commit 12c2efd

Browse files
committed
noscript image gen
1 parent 95d1aaf commit 12c2efd

File tree

2 files changed

+61
-20
lines changed

2 files changed

+61
-20
lines changed

klite.embd

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Current version indicated by LITEVER below.
1212
-->
1313

1414
<script>
15-
const LITEVER = 230;
15+
const LITEVER = 231;
1616
const urlParams = new URLSearchParams(window.location.search);
1717
var localflag = urlParams.get('local'); //this will be replaced automatically in embedded kcpp
1818
const STORAGE_PREFIX = (localflag?"e_":"")+"kaihordewebui_";
@@ -5084,15 +5084,14 @@ Current version indicated by LITEVER below.
50845084
.then((response) => response.json())
50855085
.then((data) => {
50865086
console.log("sync finished response: " + JSON.stringify(data));
5087+
last_response_obj = JSON.parse(JSON.stringify(data));
50875088
if (custom_oai_key != "" && data.choices != null && data.choices.length > 0) {
50885089
let dch = data.choices[0];
50895090
if (dch.text) {
50905091
synchro_polled_response = dch.text;
5091-
last_response_obj = JSON.parse(JSON.stringify(data));
50925092
}
50935093
else if (dch.message) {
50945094
synchro_polled_response = dch.message.content;
5095-
last_response_obj = JSON.parse(JSON.stringify(data));
50965095

50975096
if(oaiemulatecompletionscontent!="" && synchro_polled_response!="" && synchro_polled_response.startsWith(oaiemulatecompletionscontent))
50985097
{
@@ -7662,7 +7661,7 @@ Current version indicated by LITEVER below.
76627661
}
76637662
function togglescenarioautopick()
76647663
{
7665-
if(localflag)
7664+
if(localflag || is_using_custom_ep())
76667665
{
76677666
document.getElementById("scenarioautopickbox").classList.add("hidden");
76687667
}
@@ -12050,6 +12049,8 @@ Current version indicated by LITEVER below.
1205012049

1205112050
function display_newgame() {
1205212051
mainmenu_untab(true);
12052+
document.getElementById("keep_ai_selected").checked = true;
12053+
document.getElementById("keep_memory").checked = false;
1205312054
document.getElementById("newgamecontainer").classList.remove("hidden");
1205412055
}
1205512056

@@ -14917,6 +14918,7 @@ Current version indicated by LITEVER below.
1491714918
.then((response) => response.json())
1491814919
.then((data) => {
1491914920
console.log("sync finished response: " + JSON.stringify(data));
14921+
last_response_obj = JSON.parse(JSON.stringify(data));
1492014922
if(custom_claude_key != "" && data.content && data.content.length > 0)
1492114923
{
1492214924
let comp = "";
@@ -15087,6 +15089,7 @@ Current version indicated by LITEVER below.
1508715089
.then((response) => response.json())
1508815090
.then((data) => {
1508915091
console.log("sync finished response: " + JSON.stringify(data));
15092+
last_response_obj = JSON.parse(JSON.stringify(data));
1509015093
if (custom_gemini_key != "" && data.candidates != null && data.candidates.length>0 && data.candidates[0].output && data.candidates[0].output != "") {
1509115094
synchro_polled_response = data.candidates[0].output;
1509215095
}else if (custom_gemini_key != "" && data.candidates != null && data.candidates.length>0 && data.candidates[0].content && data.candidates[0].content.parts != null && data.candidates[0].content.parts.length>0) {
@@ -15160,6 +15163,7 @@ Current version indicated by LITEVER below.
1516015163
.then((response) => response.json())
1516115164
.then((data) => {
1516215165
console.log("sync finished response: " + JSON.stringify(data));
15166+
last_response_obj = JSON.parse(JSON.stringify(data));
1516315167
if (custom_cohere_key != "" && data && data.text) {
1516415168
if (data.text) {
1516515169
synchro_polled_response = data.text

koboldcpp.py

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,15 +2546,19 @@ def noscript_webui(self):
25462546
status = str(parsed_dict['status'][0]) if 'status' in parsed_dict else "Ready To Generate"
25472547
prompt = str(parsed_dict['prompt'][0]) if 'prompt' in parsed_dict else ""
25482548
chatmsg = str(parsed_dict['chatmsg'][0]) if 'chatmsg' in parsed_dict else ""
2549+
imgprompt = str(parsed_dict['imgprompt'][0]) if 'imgprompt' in parsed_dict else ""
25492550
max_length = int(parsed_dict['max_length'][0]) if 'max_length' in parsed_dict else 100
25502551
temperature = float(parsed_dict['temperature'][0]) if 'temperature' in parsed_dict else 0.75
25512552
top_k = int(parsed_dict['top_k'][0]) if 'top_k' in parsed_dict else 100
25522553
top_p = float(parsed_dict['top_p'][0]) if 'top_p' in parsed_dict else 0.9
25532554
rep_pen = float(parsed_dict['rep_pen'][0]) if 'rep_pen' in parsed_dict else 1.0
25542555
ban_eos_token = int(parsed_dict['ban_eos_token'][0]) if 'ban_eos_token' in parsed_dict else 0
2556+
steps = int(parsed_dict['steps'][0]) if 'steps' in parsed_dict else 25
2557+
cfg = int(parsed_dict['cfg'][0]) if 'cfg' in parsed_dict else 7
25552558
genbtnval = (parsed_dict['generate'][0] if 'generate' in parsed_dict else "")
25562559
gencommand = (genbtnval=="Generate" or genbtnval=="Send")
25572560
chatmode = int(parsed_dict['chatmode'][0]) if 'chatmode' in parsed_dict else 0
2561+
imgmode = int(parsed_dict['imgmode'][0]) if 'imgmode' in parsed_dict else 0
25582562
human_name = str(parsed_dict['human_name'][0]) if 'human_name' in parsed_dict else "User"
25592563
bot_name = str(parsed_dict['bot_name'][0]) if 'bot_name' in parsed_dict else "Assistant"
25602564
stops = []
@@ -2568,6 +2572,12 @@ def noscript_webui(self):
25682572
gencommand = False
25692573
stops = [f"\n{human_name}:",f"\n{bot_name}:"]
25702574
prefix = f"[This is a chat conversation log between {human_name} and {bot_name}.]\n"
2575+
elif imgmode:
2576+
if imgprompt:
2577+
prompt = imgprompt
2578+
max_length = 1
2579+
else:
2580+
gencommand = False
25712581

25722582
if modelbusy.locked():
25732583
status = "Model is currently busy, try again later."
@@ -2581,20 +2591,27 @@ def noscript_webui(self):
25812591
epurl = f"{httpsaffix}://localhost:{args.port}"
25822592
if args.host!="":
25832593
epurl = f"{httpsaffix}://{args.host}:{args.port}"
2584-
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}
2585-
respjson = make_url_request(f'{epurl}/api/v1/generate', gen_payload)
2586-
reply = html.escape(respjson["results"][0]["text"])
2587-
if chatmode:
2588-
reply = " "+reply.strip()
2594+
if imgmode and imgprompt:
2595+
gen_payload = {"prompt":{"3":{"inputs":{"cfg":cfg,"steps":steps}},"6":{"inputs":{"text":imgprompt}}}}
2596+
respjson = make_url_request(f'{epurl}/prompt', gen_payload)
2597+
else:
2598+
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}
2599+
respjson = make_url_request(f'{epurl}/api/v1/generate', gen_payload)
2600+
reply = html.escape(respjson["results"][0]["text"])
2601+
if chatmode:
2602+
reply = " "+reply.strip()
25892603
status = "Generation Completed"
25902604

25912605
if "generate" in parsed_dict:
25922606
del parsed_dict["generate"]
25932607
if "chatmsg" in parsed_dict:
25942608
del parsed_dict["chatmsg"]
2609+
if "imgprompt" in parsed_dict:
2610+
del parsed_dict["imgprompt"]
25952611
parsed_dict["prompt"] = prompt + reply
25962612
parsed_dict["status"] = status
25972613
parsed_dict["chatmode"] = ("1" if chatmode else "0")
2614+
parsed_dict["imgmode"] = ("1" if imgmode else "0")
25982615
updated_query_string = urlparse.urlencode(parsed_dict, doseq=True)
25992616
updated_path = parsed_url._replace(query=updated_query_string).geturl()
26002617
self.path = updated_path
@@ -2604,8 +2621,19 @@ def noscript_webui(self):
26042621
self.end_headers(content_type='text/html')
26052622
return
26062623

2607-
bodycontent = f'''<b><u>{"Chat Mode" if chatmode else "Story Mode"}</u></b><br>'''
2608-
if chatmode:
2624+
imgbtn = '''<form action="/noscript" style="display: inline;">
2625+
<input type="hidden" name="imgmode" value="1">
2626+
<input type="submit" value="Image Mode">
2627+
</form>'''
2628+
2629+
bodycontent = f'''<b><u>{"Image Mode" if imgmode else ("Chat Mode" if chatmode else "Story Mode")}</u></b><br>'''
2630+
optionscontent = ""
2631+
if imgmode:
2632+
bodycontent += f'''<p>Generated Image: {prompt if prompt else "None"}</p>
2633+
{'<img src="view.png" width="320" width="320">' if prompt else ""}<br>
2634+
<label>Image Prompt: </label><input type="text" size="40" value="" name="imgprompt">
2635+
<input type="submit" name="generate" value="Generate"> (Be patient)'''
2636+
elif chatmode:
26092637
oldconvo = prompt.strip().replace(f"{human_name}:",f"<b>{human_name}:</b>").replace(f"{bot_name}:",f"<b>{bot_name}:</b>").replace("\n","<br>")
26102638
oldconvo += f'''<input type="hidden" name="human_name" value="{human_name}"><input type="hidden" name="bot_name" value="{bot_name}">'''
26112639
newconvo = '''Start a new conversation.<br>
@@ -2621,6 +2649,17 @@ def noscript_webui(self):
26212649
<textarea name="prompt" cols="60" rows="8" wrap="soft" placeholder="Enter Prompt Here">{prompt}</textarea><br>
26222650
<input type="submit" name="generate" value="Generate"> (Be patient)
26232651
'''
2652+
if not imgmode:
2653+
optionscontent = f'''<label>Gen. Amount</label> <input type="text" size="4" value="{max_length}" name="max_length"><br>
2654+
<label>Temperature</label> <input type="text" size="4" value="{temperature}" name="temperature"><br>
2655+
<label>Top-K</label> <input type="text" size="4" value="{top_k}" name="top_k"><br>
2656+
<label>Top-P</label> <input type="text" size="4" value="{top_p}" name="top_p"><br>
2657+
<label>Rep. Pen</label> <input type="text" size="4" value="{rep_pen}" name="rep_pen"><br>
2658+
<label>Prevent EOS</label> <input type="checkbox" name="ban_eos_token" value="1" {"checked" if ban_eos_token else ""}><br>'''
2659+
else:
2660+
optionscontent = f'''<label>Steps</label> <input type="text" size="4" value="{steps}" name="steps"><br>
2661+
<label>Cfg. Scale</label> <input type="text" size="4" value="{cfg}" name="cfg"><br>'''
2662+
26242663
finalhtml = f'''<!doctype html>
26252664
<html lang="en"><head>
26262665
<meta charset="utf-8">
@@ -2635,23 +2674,21 @@ def noscript_webui(self):
26352674
<hr>
26362675
<b>{status}</b><br>
26372676
<hr>
2638-
<label>Gen. Amount</label> <input type="text" size="4" value="{max_length}" name="max_length"><br>
2639-
<label>Temperature</label> <input type="text" size="4" value="{temperature}" name="temperature"><br>
2640-
<label>Top-K</label> <input type="text" size="4" value="{top_k}" name="top_k"><br>
2641-
<label>Top-P</label> <input type="text" size="4" value="{top_p}" name="top_p"><br>
2642-
<label>Rep. Pen</label> <input type="text" size="4" value="{rep_pen}" name="rep_pen"><br>
2643-
<label>Prevent EOS</label> <input type="checkbox" name="ban_eos_token" value="1" {"checked" if ban_eos_token else ""}><br>
2677+
{optionscontent}
26442678
<input type="hidden" name="chatmode" value="{chatmode}">
2679+
<input type="hidden" name="imgmode" value="{imgmode}">
26452680
</form>
26462681
<hr>
26472682
<div style="display: inline-block;">
2683+
Change Mode<br>
26482684
<form action="/noscript" style="display: inline;">
2649-
<input type="submit" value="Reset (Story Mode)">
2685+
<input type="submit" value="Story Mode">
26502686
</form>
26512687
<form action="/noscript" style="display: inline;">
26522688
<input type="hidden" name="chatmode" value="1">
2653-
<input type="submit" value="Reset (Chat Mode)">
2689+
<input type="submit" value="Chat Mode">
26542690
</form>
2691+
{imgbtn if "txt2img" in get_capabilities() else ""}
26552692
</div>
26562693
</div>
26572694
</body></html>'''
@@ -2791,7 +2828,7 @@ def do_GET(self):
27912828
response_body = (json.dumps([]).encode())
27922829
else:
27932830
response_body = (json.dumps([friendlysdmodelname]).encode())
2794-
elif self.path=='/view' or self.path=='/api/view' or self.path.startswith('/view?') or self.path.startswith('/api/view?'): #emulate comfyui
2831+
elif self.path=='/view' or self.path=='/view.png' or self.path=='/api/view' or self.path.startswith('/view?') or self.path.startswith('/api/view?'): #emulate comfyui
27952832
content_type = 'image/png'
27962833
response_body = lastgeneratedcomfyimg
27972834
elif self.path=='/history' or self.path=='/api/history' or self.path.startswith('/api/history/') or self.path.startswith('/history/'): #emulate comfyui

0 commit comments

Comments
 (0)