From 7ec192117f94ce70e6ade4ed80ab4e16cbb2b4c0 Mon Sep 17 00:00:00 2001 From: ebolam Date: Mon, 22 Aug 2022 11:51:10 -0400 Subject: [PATCH] Format option implemented in UI2 --- aiserver.py | 128 ++++++++++++------------- gensettings.py | 164 ++++++++++++++++++++++++++++++++- koboldai_settings.py | 28 +++++- static/koboldai.js | 3 + templates/settings flyout.html | 6 +- 5 files changed, 260 insertions(+), 69 deletions(-) diff --git a/aiserver.py b/aiserver.py index 08b06f1c..80eec7c7 100644 --- a/aiserver.py +++ b/aiserver.py @@ -852,7 +852,9 @@ def loadmodelsettings(): if("dynamicscan" in js): koboldai_vars.dynamicscan = js["dynamicscan"] if("formatoptns" in js): - koboldai_vars.formatoptns = js["formatoptns"] + for setting in ['frmttriminc', 'frmtrmblln', 'frmtrmspch', 'frmtadsnsp', 'singleline']: + if setting in js["formatoptns"]: + setattr(koboldai_vars, setting, js["formatoptns"][setting]) if("welcome" in js): koboldai_vars.welcome = js["welcome"] if("newlinemode" in js): @@ -883,7 +885,8 @@ def savesettings(): js["genamt"] = koboldai_vars.genamt js["max_length"] = koboldai_vars.max_length js["ikgen"] = koboldai_vars.ikgen - js["formatoptns"] = koboldai_vars.formatoptns + js["formatoptns"] = {'frmttriminc': koboldai_vars.frmttriminc, 'frmtrmblln': koboldai_vars.frmtrmblln, + 'frmtrmspch': koboldai_vars.frmtrmspch, 'frmtadsnsp': koboldai_vars.frmtadsnsp, 'singleline': koboldai_vars.singleline} js["numseqs"] = koboldai_vars.numseqs js["widepth"] = koboldai_vars.widepth js["useprompt"] = koboldai_vars.useprompt @@ -983,7 +986,9 @@ def processsettings(js): if("ikgen" in js): koboldai_vars.ikgen = js["ikgen"] if("formatoptns" in js): - koboldai_vars.formatoptns = js["formatoptns"] + for setting in ['frmttriminc', 'frmtrmblln', 'frmtrmspch', 'frmtadsnsp', 'singleline']: + if setting in js["formatoptns"]: + setattr(koboldai_vars, setting, js["formatoptns"][setting]) if("numseqs" in js): koboldai_vars.numseqs = js["numseqs"] if("widepth" in js): @@ -3078,11 +3083,11 @@ def lua_get_setting(setting): if(setting in ("setnopromptgen", "nopromptgen")): return koboldai_vars.nopromptgen if(setting in ("autosave", "autosave")): return koboldai_vars.autosave if(setting in ("setrngpersist", "rngpersist")): return koboldai_vars.rngpersist - if(setting in ("frmttriminc", "triminc")): return koboldai_vars.formatoptns["frmttriminc"] - if(setting in ("frmtrmblln", "rmblln")): return koboldai_vars.formatoptns["frmttrmblln"] - if(setting in ("frmtrmspch", "rmspch")): return koboldai_vars.formatoptns["frmttrmspch"] - if(setting in ("frmtadsnsp", "adsnsp")): return koboldai_vars.formatoptns["frmtadsnsp"] - if(setting in ("frmtsingleline", "singleline")): return koboldai_vars.formatoptns["singleline"] + if(setting in ("frmttriminc", "triminc")): return koboldai_vars.frmttriminc + if(setting in ("frmtrmblln", "rmblln")): return koboldai_vars.frmttrmblln + if(setting in ("frmtrmspch", "rmspch")): return koboldai_vars.frmttrmspch + if(setting in ("frmtadsnsp", "adsnsp")): return koboldai_vars.frmtadsnsp + if(setting in ("frmtsingleline", "singleline")): return koboldai_vars.singleline if(setting == "output_streaming"): return koboldai_vars.output_streaming if(setting == "show_probs"): return koboldai_vars.show_probs @@ -3116,11 +3121,11 @@ def lua_set_setting(setting, v): if(setting in ("autosave", "noautosave")): koboldai_vars.autosave = v if(setting in ("setrngpersist", "rngpersist")): koboldai_vars.rngpersist = v if(setting in ("setchatmode", "chatmode")): koboldai_vars.chatmode = v - if(setting in ("frmttriminc", "triminc")): koboldai_vars.formatoptns["frmttriminc"] = v - if(setting in ("frmtrmblln", "rmblln")): koboldai_vars.formatoptns["frmttrmblln"] = v - if(setting in ("frmtrmspch", "rmspch")): koboldai_vars.formatoptns["frmttrmspch"] = v - if(setting in ("frmtadsnsp", "adsnsp")): koboldai_vars.formatoptns["frmtadsnsp"] = v - if(setting in ("frmtsingleline", "singleline")): koboldai_vars.formatoptns["singleline"] = v + if(setting in ("frmttriminc", "triminc")): koboldai_vars.frmttriminc = v + if(setting in ("frmtrmblln", "rmblln")): koboldai_vars.frmttrmblln = v + if(setting in ("frmtrmspch", "rmspch")): koboldai_vars.frmttrmspch = v + if(setting in ("frmtadsnsp", "adsnsp")): koboldai_vars.frmtadsnsp = v + if(setting in ("frmtsingleline", "singleline")): koboldai_vars.singleline = v if(setting == "output_streaming"): koboldai_vars.output_streaming = v if(setting == "show_probs"): koboldai_vars.show_probs = v @@ -3549,28 +3554,23 @@ def get_message(msg): refresh_settings() # Format - Trim incomplete sentences elif(msg['cmd'] == 'frmttriminc'): - if('frmttriminc' in koboldai_vars.formatoptns): - koboldai_vars.formatoptns["frmttriminc"] = msg['data'] + koboldai_vars.frmttriminc = msg['data'] settingschanged() refresh_settings() elif(msg['cmd'] == 'frmtrmblln'): - if('frmtrmblln' in koboldai_vars.formatoptns): - koboldai_vars.formatoptns["frmtrmblln"] = msg['data'] + koboldai_vars.frmtrmblln = msg['data'] settingschanged() refresh_settings() elif(msg['cmd'] == 'frmtrmspch'): - if('frmtrmspch' in koboldai_vars.formatoptns): - koboldai_vars.formatoptns["frmtrmspch"] = msg['data'] + koboldai_vars.frmtrmspch = msg['data'] settingschanged() refresh_settings() elif(msg['cmd'] == 'frmtadsnsp'): - if('frmtadsnsp' in koboldai_vars.formatoptns): - koboldai_vars.formatoptns["frmtadsnsp"] = msg['data'] + koboldai_vars.frmtadsnsp = msg['data'] settingschanged() refresh_settings() elif(msg['cmd'] == 'singleline'): - if('singleline' in koboldai_vars.formatoptns): - koboldai_vars.formatoptns["singleline"] = msg['data'] + koboldai_vars.singleline = msg['data'] settingschanged() refresh_settings() elif(msg['cmd'] == 'importselect'): @@ -3932,17 +3932,19 @@ def sendsettings(): emit('from_server', {'cmd': 'reset_menus'}, room="UI_1") if(koboldai_vars.model != "InferKit"): for set in gensettings.gensettingstf: - emit('from_server', {'cmd': 'addsetting', 'data': set}, room="UI_1") + if 'UI_V2_Only' not in set: + emit('from_server', {'cmd': 'addsetting', 'data': set}, room="UI_1") else: for set in gensettings.gensettingsik: - emit('from_server', {'cmd': 'addsetting', 'data': set}, room="UI_1") + if 'UI_V2_Only' not in set: + emit('from_server', {'cmd': 'addsetting', 'data': set}, room="UI_1") # Send formatting options for frm in gensettings.formatcontrols: emit('from_server', {'cmd': 'addformat', 'data': frm}, room="UI_1") # Add format key to vars if it wasn't loaded with client.settings - if(not frm["id"] in koboldai_vars.formatoptns): - koboldai_vars.formatoptns[frm["id"]] = False; + if(not hasattr(koboldai_vars, frm["id"])): + setattr(koboldai_vars, frm["id"], False) #==================================================================# # Set value of gamesaved @@ -4061,7 +4063,7 @@ def actionsubmit(data, actionmode=0, force_submit=False, force_prompt_gen=False, for i in range(koboldai_vars.numseqs): genout.append({"generated_text": koboldai_vars.lua_koboldbridge.outputs[i+1]}) assert type(genout[-1]["generated_text"]) is str - koboldai_vars.actions.append_options([x["generated_text"] for x in genout]) + koboldai_vars.actions.append_options([applyoutputformatting(x["generated_text"]) for x in genout]) genout = [{"generated_text": x['text']} for x in koboldai_vars.actions.get_current_options()] if(len(genout) == 1): genresult(genout[0]["generated_text"], flash=False) @@ -4125,7 +4127,7 @@ def actionsubmit(data, actionmode=0, force_submit=False, force_prompt_gen=False, for i in range(koboldai_vars.numseqs): genout.append({"generated_text": koboldai_vars.lua_koboldbridge.outputs[i+1] if not no_generate else ""}) assert type(genout[-1]["generated_text"]) is str - koboldai_vars.actions.append_options([x["generated_text"] for x in genout]) + koboldai_vars.actions.append_options([applyoutputformatting(x["generated_text"]) for x in genout]) genout = [{"generated_text": x['text']} for x in koboldai_vars.actions.get_current_options()] if(len(genout) == 1): genresult(genout[0]["generated_text"]) @@ -4696,8 +4698,8 @@ def generate(txt, minimum, maximum, found_entries=None): assert type(genout[-1]["generated_text"]) is str else: genout = [{"generated_text": utils.decodenewlines(tokenizer.decode(tokens[-already_generated:]))} for tokens in genout] - - koboldai_vars.actions.append_options([x["generated_text"] for x in genout]) + print([applyoutputformatting(x["generated_text"]) for x in genout]) + koboldai_vars.actions.append_options([applyoutputformatting(x["generated_text"]) for x in genout]) genout = [{"generated_text": x['text']} for x in koboldai_vars.actions.get_current_options()] if(len(genout) == 1): genresult(genout[0]["generated_text"]) @@ -4849,7 +4851,7 @@ def sendtocolab(txt, min, max): assert type(genout[-1]) is str koboldai_vars.actions.clear_unused_options() - koboldai_vars.actions.append_options([x["generated_text"] for x in genout]) + koboldai_vars.actions.append_options([applyoutputformatting(x["generated_text"]) for x in genout]) genout = [{"generated_text": x['text']} for x in koboldai_vars.actions.get_current_options()] if(len(genout) == 1): @@ -5085,7 +5087,7 @@ def tpumtjgenerate(txt, minimum, maximum, found_entries=None): else: genout = [{"generated_text": utils.decodenewlines(tokenizer.decode(txt))} for txt in genout] - koboldai_vars.actions.append_options([x["generated_text"] for x in genout]) + koboldai_vars.actions.append_options([applyoutputformatting(x["generated_text"]) for x in genout]) genout = [{"generated_text": x['text']} for x in koboldai_vars.actions.get_current_options()] if(len(koboldai_vars.actions.get_current_options()) == 1): genresult(koboldai_vars.actions.get_current_options()[0]['text']) @@ -5127,7 +5129,7 @@ def getnewcontent(txt): #==================================================================# def applyinputformatting(txt): # Add sentence spacing - if(koboldai_vars.formatoptns["frmtadsnsp"]): + if(koboldai_vars.frmtadsnsp): txt = utils.addsentencespacing(txt, koboldai_vars) return txt @@ -5144,16 +5146,16 @@ def applyoutputformatting(txt): txt = koboldai_vars.acregex_ai.sub('', txt) # Trim incomplete sentences - if(koboldai_vars.formatoptns["frmttriminc"] and not koboldai_vars.chatmode): + if(koboldai_vars.frmttriminc and not koboldai_vars.chatmode): txt = utils.trimincompletesentence(txt) # Replace blank lines - if(koboldai_vars.formatoptns["frmtrmblln"] or koboldai_vars.chatmode): + if(koboldai_vars.frmtrmblln or koboldai_vars.chatmode): txt = utils.replaceblanklines(txt) # Remove special characters - if(koboldai_vars.formatoptns["frmtrmspch"]): + if(koboldai_vars.frmtrmspch): txt = utils.removespecialchars(txt, koboldai_vars) # Single Line Mode - if(koboldai_vars.formatoptns["singleline"] or koboldai_vars.chatmode): + if(koboldai_vars.singleline or koboldai_vars.chatmode): txt = utils.singlelineprocessing(txt, koboldai_vars) return txt @@ -5256,11 +5258,11 @@ def refresh_settings(): emit('from_server', {'cmd': 'updatenogenmod', 'data': koboldai_vars.nogenmod}, broadcast=True, room="UI_1") emit('from_server', {'cmd': 'updatefulldeterminism', 'data': koboldai_vars.full_determinism}, broadcast=True, room="UI_1") - emit('from_server', {'cmd': 'updatefrmttriminc', 'data': koboldai_vars.formatoptns["frmttriminc"]}, broadcast=True, room="UI_1") - emit('from_server', {'cmd': 'updatefrmtrmblln', 'data': koboldai_vars.formatoptns["frmtrmblln"]}, broadcast=True, room="UI_1") - emit('from_server', {'cmd': 'updatefrmtrmspch', 'data': koboldai_vars.formatoptns["frmtrmspch"]}, broadcast=True, room="UI_1") - emit('from_server', {'cmd': 'updatefrmtadsnsp', 'data': koboldai_vars.formatoptns["frmtadsnsp"]}, broadcast=True, room="UI_1") - emit('from_server', {'cmd': 'updatesingleline', 'data': koboldai_vars.formatoptns["singleline"]}, broadcast=True, room="UI_1") + emit('from_server', {'cmd': 'updatefrmttriminc', 'data': koboldai_vars.frmttriminc}, broadcast=True, room="UI_1") + emit('from_server', {'cmd': 'updatefrmtrmblln', 'data': koboldai_vars.frmtrmblln}, broadcast=True, room="UI_1") + emit('from_server', {'cmd': 'updatefrmtrmspch', 'data': koboldai_vars.frmtrmspch}, broadcast=True, room="UI_1") + emit('from_server', {'cmd': 'updatefrmtadsnsp', 'data': koboldai_vars.frmtadsnsp}, broadcast=True, room="UI_1") + emit('from_server', {'cmd': 'updatesingleline', 'data': koboldai_vars.singleline}, broadcast=True, room="UI_1") emit('from_server', {'cmd': 'updateoutputstreaming', 'data': koboldai_vars.output_streaming}, broadcast=True, room="UI_1") emit('from_server', {'cmd': 'updateshowprobs', 'data': koboldai_vars.show_probs}, broadcast=True, room="UI_1") @@ -5841,7 +5843,7 @@ def oairequest(txt, min, max): {"generated_text": utils.decodenewlines(txt)} for txt in outputs] - koboldai_vars.actions.append_options([x["generated_text"] for x in genout]) + koboldai_vars.actions.append_options([applyoutputformatting(x["generated_text"]) for x in genout]) genout = [{"generated_text": x['text']} for x in koboldai_vars.actions.get_current_options()] if (len(genout) == 1): genresult(genout[0]["generated_text"]) @@ -7656,11 +7658,11 @@ def _generate_text(body: GenerationInputSchema): "tfs": ("koboldai_vars", "tfs", None), "typical": ("koboldai_vars", "typical", None), "temperature": ("koboldai_vars", "temp", None), - "frmtadsnsp": ("koboldai_vars.formatoptns", "@frmtadsnsp", "input"), - "frmttriminc": ("koboldai_vars.formatoptns", "@frmttriminc", "output"), - "frmtrmblln": ("koboldai_vars.formatoptns", "@frmtrmblln", "output"), - "frmtrmspch": ("koboldai_vars.formatoptns", "@frmtrmspch", "output"), - "singleline": ("koboldai_vars.formatoptns", "@singleline", "output"), + "frmtadsnsp": ("koboldai_vars", "frmtadsnsp", "input"), + "frmttriminc": ("koboldai_vars", "frmttriminc", "output"), + "frmtrmblln": ("koboldai_vars", "frmtrmblln", "output"), + "frmtrmspch": ("koboldai_vars", "frmtrmspch", "output"), + "singleline": ("koboldai_vars", "singleline", "output"), "max_length": ("koboldai_vars", "genamt", None), "max_context_length": ("koboldai_vars", "max_length", None), "n": ("koboldai_vars", "numseqs", None), @@ -7676,7 +7678,7 @@ def _generate_text(body: GenerationInputSchema): output_streaming = koboldai_vars.output_streaming koboldai_vars.output_streaming = False for key, entry in mapping.items(): - obj = {"koboldai_vars": koboldai_vars, "koboldai_vars.formatoptns": koboldai_vars.formatoptns}[entry[0]] + obj = {"koboldai_vars": koboldai_vars}[entry[0]] if entry[2] == "input" and koboldai_vars.disable_input_formatting and not hasattr(body, key): setattr(body, key, False) if entry[2] == "output" and koboldai_vars.disable_output_formatting and not hasattr(body, key): @@ -7699,7 +7701,7 @@ def _generate_text(body: GenerationInputSchema): finally: for key in saved_settings: entry = mapping[key] - obj = {"koboldai_vars": koboldai_vars, "koboldai_vars.formatoptns": koboldai_vars.formatoptns}[entry[0]] + obj = {"koboldai_vars": koboldai_vars}[entry[0]] if getattr(body, key, None) is not None: if entry[1].startswith("@"): if obj[entry[1][1:]] == getattr(body, key): @@ -9746,7 +9748,7 @@ def _make_f_get(obj, _var_name, _name, _schema, _example_yaml_value): example: value: {} """ - _obj = {"koboldai_vars": koboldai_vars, "koboldai_vars.formatoptns": koboldai_vars.formatoptns}[obj] + _obj = {"koboldai_vars": koboldai_vars}[obj] if _var_name.startswith("@"): return {"value": _obj[_var_name[1:]]} else: @@ -9776,7 +9778,7 @@ def _make_f_put(schema_class: Type[KoboldSchema], obj, _var_name, _name, _schema schema: EmptySchema {api_validation_error_response} """ - _obj = {"koboldai_vars": koboldai_vars, "koboldai_vars.formatoptns": koboldai_vars.formatoptns}[obj] + _obj = {"koboldai_vars": koboldai_vars}[obj] if _var_name.startswith("@"): _obj[_var_name[1:]] = body.value else: @@ -10002,8 +10004,8 @@ class TrimIncompleteSentencesSettingsSchema(KoboldSchema): value = fields.Boolean(required=True) class KoboldMeta: route_name = "frmttriminc" - obj = "koboldai_vars.formatoptns" - var_name = "@frmttriminc" + obj = "koboldai_vars" + var_name = "frmttriminc" name = "trim incomplete sentences (output formatting)" example_yaml_value = "false" @@ -10012,8 +10014,8 @@ class RemoveBlankLinesSettingsSchema(KoboldSchema): value = fields.Boolean(required=True) class KoboldMeta: route_name = "frmtrmblln" - obj = "koboldai_vars.formatoptns" - var_name = "@frmtrmblln" + obj = "koboldai_vars" + var_name = "frmtrmblln" name = "remove blank lines (output formatting)" example_yaml_value = "false" @@ -10022,8 +10024,8 @@ class RemoveSpecialCharactersSettingsSchema(KoboldSchema): value = fields.Boolean(required=True) class KoboldMeta: route_name = "frmtrmspch" - obj = "koboldai_vars.formatoptns" - var_name = "@frmtrmspch" + obj = "koboldai_vars" + var_name = "frmtrmspch" name = "remove special characters (output formatting)" example_yaml_value = "false" @@ -10032,8 +10034,8 @@ class SingleLineSettingsSchema(KoboldSchema): value = fields.Boolean(required=True) class KoboldMeta: route_name = "singleline" - obj = "koboldai_vars.formatoptns" - var_name = "@singleline" + obj = "koboldai_vars" + var_name = "singleline" name = "single line (output formatting)" example_yaml_value = "false" @@ -10042,8 +10044,8 @@ class AddSentenceSpacingSettingsSchema(KoboldSchema): value = fields.Boolean(required=True) class KoboldMeta: route_name = "frmtadsnsp" - obj = "koboldai_vars.formatoptns" - var_name = "@frmtadsnsp" + obj = "koboldai_vars" + var_name = "frmtadsnsp" name = "add sentence spacing (input formatting)" example_yaml_value = "false" diff --git a/gensettings.py b/gensettings.py index afd0533c..9f1e7c43 100644 --- a/gensettings.py +++ b/gensettings.py @@ -398,7 +398,87 @@ gensettingstf = [ "sub_path": "Other", "classname": "system", "name": "alt_gen" - } + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Trim incomplete sentences", + "id": "frmttriminc", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Remove text after last sentence closure. If no closure is found, all tokens will be returned.", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmttriminc" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Remove blank lines", + "id": "frmtrmblln", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Replace double newlines (\\n\\n) with single newlines to avoid blank lines.", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmtrmblln" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Remove special characters", + "id": "frmtrmspch", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Remove special characters (@,#,%,^, etc)", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmtrmspch" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Automatic spacing", + "id": "frmtadsnsp", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Add spaces automatically if needed", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmtadsnsp" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Single Line", + "id": "singleline", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Only allows the AI to output anything before the enter", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "singleline" + }, ] gensettingsik =[{ @@ -631,7 +711,87 @@ gensettingsik =[{ "sub_path": "Other", "classname": "system", "name": "alt_gen" - } + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Trim incomplete sentences", + "id": "frmttriminc", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Remove text after last sentence closure. If no closure is found, all tokens will be returned.", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmttriminc" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Remove blank lines", + "id": "frmtrmblln", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Replace double newlines (\\n\\n) with single newlines to avoid blank lines.", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmtrmblln" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Remove special characters", + "id": "frmtrmspch", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Remove special characters (@,#,%,^, etc)", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmtrmspch" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Automatic spacing", + "id": "frmtadsnsp", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Add spaces automatically if needed", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "frmtadsnsp" + }, + { + "UI_V2_Only": True, + "uitype": "toggle", + "unit": "bool", + "label": "Single Line", + "id": "singleline", + "min": 0, + "max": 1, + "step": 1, + "default": 0, + "tooltip": "Only allows the AI to output anything before the enter", + "menu_path": "Interface", + "sub_path": "Formatting", + "classname": "user", + "name": "singleline" + }, ] formatcontrols = [{ diff --git a/koboldai_settings.py b/koboldai_settings.py index 6445f2d1..5712b725 100644 --- a/koboldai_settings.py +++ b/koboldai_settings.py @@ -613,6 +613,11 @@ class user_settings(settings): self.wirmvwhtsp = False # Whether to remove leading whitespace from WI entries self.widepth = 3 # How many historical actions to scan for WI hits self.formatoptns = {'frmttriminc': True, 'frmtrmblln': False, 'frmtrmspch': False, 'frmtadsnsp': False, 'singleline': False} # Container for state of formatting options + self.frmttriminc = True + self.frmtrmblln = False + self.frmtrmspch = False + self.frmtadsnsp = False + self.singleline = False self.importnum = -1 # Selection on import popup list self.importjs = {} # Temporary storage for import data self.loadselect = "" # Temporary storage for story filename to load @@ -847,15 +852,32 @@ class KoboldStoryRegister(object): def append_options(self, option_list): if self.action_count+1 in self.actions: + #First let's check if we did streaming, as we can just replace those items with these old_options = copy.deepcopy(self.actions[self.action_count+1]["Options"]) - old_options_text = [x['text'] for x in old_options] - for item in option_list: - if item not in old_options_text: + i=-1 + for option in option_list: + i+=1 + found = False + for item in self.actions[self.action_count+1]["Options"]: + if 'stream_id' in item and item['stream_id'] == i: + item['text'] = option + del item['stream_id'] + found = True + break + elif item['text'] == option: + found = True + if 'stream_id' in item: + del item['stream_id'] + found = True + break + + if not found: self.actions[self.action_count+1]['Options'].append({"text": item, "Pinned": False, "Previous Selection": False, "Edited": False, "Probabilities": []}) else: old_options = None self.actions[self.action_count+1] = {"Selected Text": "", "Selected Text Length": 0, "In AI Input": False, "Options": [{"text": x, "Pinned": False, "Previous Selection": False, "Edited": False, "Probabilities": []} for x in option_list]} process_variable_changes(self.socketio, "story", 'actions', {"id": self.action_count+1, 'action': self.actions[self.action_count+1]}, None) + print(self.actions[self.action_count+1]) self.set_game_saved() def set_options(self, option_list, action_id): diff --git a/static/koboldai.js b/static/koboldai.js index 2f91083c..8038cd2f 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -315,6 +315,9 @@ function do_prompt(data) { document.getElementById('input_text').placeholder = "Enter text here"; document.getElementById('themerow').classList.add("hidden"); document.getElementById('themetext').value = ""; + if (document.getElementById("Delete Me")) { + document.getElementById("Delete Me").remove(); + } } else { document.getElementById('input_text').placeholder = "Enter Prompt Here"; document.getElementById('input_text').disabled = false; diff --git a/templates/settings flyout.html b/templates/settings flyout.html index 86d34e19..6e55ff8e 100644 --- a/templates/settings flyout.html +++ b/templates/settings flyout.html @@ -290,7 +290,11 @@

expand_more Formatting

- + {% with menu='Interface' %} + {% with sub_path='Formatting' %} + {% include 'settings item.html' %} + {% endwith %} + {% endwith %}
\ No newline at end of file