noscript image gen

This commit is contained in:
Concedo 2025-04-19 18:56:52 +08:00
parent 95d1aaf4d4
commit 12c2efdadd
2 changed files with 61 additions and 20 deletions

View file

@ -2546,15 +2546,19 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
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 ""
imgprompt = str(parsed_dict['imgprompt'][0]) if 'imgprompt' 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
steps = int(parsed_dict['steps'][0]) if 'steps' in parsed_dict else 25
cfg = int(parsed_dict['cfg'][0]) if 'cfg' in parsed_dict else 7
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
imgmode = int(parsed_dict['imgmode'][0]) if 'imgmode' in parsed_dict else 0
human_name = str(parsed_dict['human_name'][0]) if 'human_name' in parsed_dict else "User"
bot_name = str(parsed_dict['bot_name'][0]) if 'bot_name' in parsed_dict else "Assistant"
stops = []
@ -2568,6 +2572,12 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
gencommand = False
stops = [f"\n{human_name}:",f"\n{bot_name}:"]
prefix = f"[This is a chat conversation log between {human_name} and {bot_name}.]\n"
elif imgmode:
if imgprompt:
prompt = imgprompt
max_length = 1
else:
gencommand = False
if modelbusy.locked():
status = "Model is currently busy, try again later."
@ -2581,20 +2591,27 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
epurl = f"{httpsaffix}://localhost:{args.port}"
if args.host!="":
epurl = f"{httpsaffix}://{args.host}:{args.port}"
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()
if imgmode and imgprompt:
gen_payload = {"prompt":{"3":{"inputs":{"cfg":cfg,"steps":steps}},"6":{"inputs":{"text":imgprompt}}}}
respjson = make_url_request(f'{epurl}/prompt', gen_payload)
else:
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"]
if "imgprompt" in parsed_dict:
del parsed_dict["imgprompt"]
parsed_dict["prompt"] = prompt + reply
parsed_dict["status"] = status
parsed_dict["chatmode"] = ("1" if chatmode else "0")
parsed_dict["imgmode"] = ("1" if imgmode 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
@ -2604,8 +2621,19 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
self.end_headers(content_type='text/html')
return
bodycontent = f'''<b><u>{"Chat Mode" if chatmode else "Story Mode"}</u></b><br>'''
if chatmode:
imgbtn = '''<form action="/noscript" style="display: inline;">
<input type="hidden" name="imgmode" value="1">
<input type="submit" value="Image Mode">
</form>'''
bodycontent = f'''<b><u>{"Image Mode" if imgmode else ("Chat Mode" if chatmode else "Story Mode")}</u></b><br>'''
optionscontent = ""
if imgmode:
bodycontent += f'''<p>Generated Image: {prompt if prompt else "None"}</p>
{'<img src="view.png" width="320" width="320">' if prompt else ""}<br>
<label>Image Prompt: </label><input type="text" size="40" value="" name="imgprompt">
<input type="submit" name="generate" value="Generate"> (Be patient)'''
elif chatmode:
oldconvo = prompt.strip().replace(f"{human_name}:",f"<b>{human_name}:</b>").replace(f"{bot_name}:",f"<b>{bot_name}:</b>").replace("\n","<br>")
oldconvo += f'''<input type="hidden" name="human_name" value="{human_name}"><input type="hidden" name="bot_name" value="{bot_name}">'''
newconvo = '''Start a new conversation.<br>
@ -2621,6 +2649,17 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
<textarea name="prompt" cols="60" rows="8" wrap="soft" placeholder="Enter Prompt Here">{prompt}</textarea><br>
<input type="submit" name="generate" value="Generate"> (Be patient)
'''
if not imgmode:
optionscontent = f'''<label>Gen. Amount</label> <input type="text" size="4" value="{max_length}" name="max_length"><br>
<label>Temperature</label> <input type="text" size="4" value="{temperature}" name="temperature"><br>
<label>Top-K</label> <input type="text" size="4" value="{top_k}" name="top_k"><br>
<label>Top-P</label> <input type="text" size="4" value="{top_p}" name="top_p"><br>
<label>Rep. Pen</label> <input type="text" size="4" value="{rep_pen}" name="rep_pen"><br>
<label>Prevent EOS</label> <input type="checkbox" name="ban_eos_token" value="1" {"checked" if ban_eos_token else ""}><br>'''
else:
optionscontent = f'''<label>Steps</label> <input type="text" size="4" value="{steps}" name="steps"><br>
<label>Cfg. Scale</label> <input type="text" size="4" value="{cfg}" name="cfg"><br>'''
finalhtml = f'''<!doctype html>
<html lang="en"><head>
<meta charset="utf-8">
@ -2635,23 +2674,21 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
<hr>
<b>{status}</b><br>
<hr>
<label>Gen. Amount</label> <input type="text" size="4" value="{max_length}" name="max_length"><br>
<label>Temperature</label> <input type="text" size="4" value="{temperature}" name="temperature"><br>
<label>Top-K</label> <input type="text" size="4" value="{top_k}" name="top_k"><br>
<label>Top-P</label> <input type="text" size="4" value="{top_p}" name="top_p"><br>
<label>Rep. Pen</label> <input type="text" size="4" value="{rep_pen}" name="rep_pen"><br>
<label>Prevent EOS</label> <input type="checkbox" name="ban_eos_token" value="1" {"checked" if ban_eos_token else ""}><br>
{optionscontent}
<input type="hidden" name="chatmode" value="{chatmode}">
<input type="hidden" name="imgmode" value="{imgmode}">
</form>
<hr>
<div style="display: inline-block;">
Change Mode<br>
<form action="/noscript" style="display: inline;">
<input type="submit" value="Reset (Story Mode)">
<input type="submit" value="Story Mode">
</form>
<form action="/noscript" style="display: inline;">
<input type="hidden" name="chatmode" value="1">
<input type="submit" value="Reset (Chat Mode)">
<input type="submit" value="Chat Mode">
</form>
{imgbtn if "txt2img" in get_capabilities() else ""}
</div>
</div>
</body></html>'''
@ -2791,7 +2828,7 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler):
response_body = (json.dumps([]).encode())
else:
response_body = (json.dumps([friendlysdmodelname]).encode())
elif self.path=='/view' or self.path=='/api/view' or self.path.startswith('/view?') or self.path.startswith('/api/view?'): #emulate comfyui
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
content_type = 'image/png'
response_body = lastgeneratedcomfyimg
elif self.path=='/history' or self.path=='/api/history' or self.path.startswith('/api/history/') or self.path.startswith('/history/'): #emulate comfyui