From 3327f1b4715e404658abcebfe6b8db5f94d73852 Mon Sep 17 00:00:00 2001 From: Gnome Ann <> Date: Sat, 11 Dec 2021 17:01:41 -0500 Subject: [PATCH] Fix Lua settings API --- aiserver.py | 48 ++++++++++++++++++++++++++++++++++++++++++------ bridge.lua | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 73 insertions(+), 12 deletions(-) diff --git a/aiserver.py b/aiserver.py index fc735bc0..e55ec729 100644 --- a/aiserver.py +++ b/aiserver.py @@ -994,14 +994,15 @@ def lua_folder_set_attr(uid, k, v): #==================================================================# # Get the "Amount to Generate" #==================================================================# -def lua_get_gen_len(): +def lua_get_genamt(): return vars.genamt #==================================================================# # Set the "Amount to Generate" #==================================================================# -def lua_set_gen_len(genamt): +def lua_set_genamt(genamt): assert vars.lua_koboldbridge.userstate != "genmod" and type(genamt) in (int, float) and genamt >= 0 + print(colors.PURPLE + f"[USERPLACEHOLDER] set genamt to {int(genamt)}" + colors.END) vars.genamt = int(genamt) #==================================================================# @@ -1015,6 +1016,7 @@ def lua_get_numseqs(): #==================================================================# def lua_set_numseqs(numseqs): assert type(numseqs) in (int, float) and numseqs >= 1 + print(colors.PURPLE + f"[USERPLACEHOLDER] set numseqs to {int(numseqs)}" + colors.END) vars.genamt = int(numseqs) #==================================================================# @@ -1027,7 +1029,6 @@ def lua_has_setting(setting): "settopk", "settfs", "setreppen", - "setoutput", "settknmax", "anotedepth", "setwidepth", @@ -1070,7 +1071,21 @@ def lua_set_setting(setting, v): print(colors.PURPLE + f"[USERPLACEHOLDER] set {setting} to {v}" + colors.END) if(setting == "setadventure" and v): vars.actionmode = 1 - get_message({'cmd': setting, 'data': v}) + if(setting == "settemp"): vars.temp = v + if(setting == "settopp"): vars.top_p = v + if(setting == "settopk"): vars.top_k = v + if(setting == "settfs"): vars.tfs = v + if(setting == "setreppen"): vars.rep_pen = v + if(setting == "settknmax"): vars.max_length = v + if(setting == "anotedepth"): vars.andepth = v + if(setting == "setwidepth"): vars.widepth = v + if(setting == "setuseprompt"): vars.useprompt = v + if(setting == "setadventure"): vars.adventure = v + if(setting == "frmttriminc"): vars.formatoptns["frmttriminc"] = v + if(setting == "frmtrmblln"): vars.formatoptns["frmttriminc"] = v + if(setting == "frmtrmspch"): vars.formatoptns["frmttriminc"] = v + if(setting == "frmtadsnsp"): vars.formatoptns["frmttriminc"] = v + if(setting == "singleline"): vars.formatoptns["frmttriminc"] = v #==================================================================# # Get contents of memory @@ -1085,6 +1100,25 @@ def lua_set_memory(m): assert type(m) is str vars.memory = m +#==================================================================# +# Save settings and send them to client +#==================================================================# +def lua_resend_settings(): + settingschanged() + refresh_settings() + +#==================================================================# +# +#==================================================================# +def execute_inmod(): + vars.lua_koboldbridge.execute_inmod() + +def execute_genmod(): + vars.lua_koboldbridge.execute_genmod() + +def execute_outmod(): + vars.lua_koboldbridge.execute_outmod() + #==================================================================# # Lua runtime startup #==================================================================# @@ -1104,14 +1138,16 @@ bridged = { "encode": lua_encode, "get_attr": lua_get_attr, "set_attr": lua_set_attr, - "get_gen_len": lua_get_gen_len, - "set_gen_len": lua_set_gen_len, + "get_genamt": lua_get_genamt, + "set_genamt": lua_set_genamt, "get_memory": lua_get_memory, "set_memory": lua_set_memory, "get_numseqs": lua_get_numseqs, "set_numseqs": lua_set_numseqs, + "has_setting": lua_has_setting, "get_setting": lua_get_setting, "set_setting": lua_set_setting, + "resend_settings": lua_resend_settings, "vars": vars, } try: diff --git a/bridge.lua b/bridge.lua index 25c4febb..e118b415 100644 --- a/bridge.lua +++ b/bridge.lua @@ -182,6 +182,7 @@ return function(_python, _bridged) koboldbridge.genmod_comparison_context = nil koboldbridge.regeneration_required = false + koboldbridge.resend_settings_required = false koboldbridge.generating = true koboldbridge.userstate = "inmod" @@ -547,6 +548,23 @@ return function(_python, _bridged) local _ = {} ---@class KoboldSettings : KoboldSettings_base + ---@field numseqs integer + ---@field genamt integer + ---@field settemp number + ---@field settopp number + ---@field settopk integer + ---@field settfs number + ---@field setreppen number + ---@field settknmax integer + ---@field anotedepth integer + ---@field setwidepth integer + ---@field setuseprompt boolean + ---@field setadventure boolean + ---@field frmttriminc boolean + ---@field frmtrmblln boolean + ---@field frmtrmspch boolean + ---@field frmtadsnsp boolean + ---@field singleline boolean local KoboldSettings = setmetatable({ _name = "KoboldSettings", }, metawrapper) @@ -576,10 +594,10 @@ return function(_python, _bridged) if type(k) ~= "string" then return end - if k == "gen_len" then - return bridged.get_gen_len() + if k == "genamt" then + return math.tointeger(bridged.get_genamt()), true elseif k == "numseqs" then - return bridged.get_numseqs() + return math.tointeger(bridged.get_numseqs()), true elseif bridged.has_setting(k) then return bridged.get_setting(k), true else @@ -589,20 +607,23 @@ return function(_python, _bridged) ---@param t KoboldSettings_base function KoboldSettings_mt.__newindex(t, k, v) - if k == "gen_len" and type(v) == "number" and math.tointeger(v) ~= nil and v >= 0 then + if k == "genamt" and type(v) == "number" and math.tointeger(v) ~= nil and v >= 0 then + bridged.set_genamt(v) maybe_require_regeneration() - bridged.set_gen_len(v) + koboldbridge.resend_settings_required = true elseif k == "numseqs" and type(v) == "number" and math.tointeger(v) ~= nil and v >= 1 then if koboldbridge.userstate == "genmod" then error("Cannot set numseqs from a generation modifier") return end bridged.set_numseqs(v) + koboldbridge.resend_settings_required = true elseif type(k) == "string" and bridged.has_setting(k) and type(v) == type(bridged.get_setting(k)) then if k == "settknmax" or k == "anotedepth" or k == "setwidepth" or k == "setuseprompt" then maybe_require_regeneration() end - return bridged.set_setting(k, v) + bridged.set_setting(k, v) + koboldbridge.resend_settings_required = true end return t end @@ -1125,6 +1146,9 @@ return function(_python, _bridged) if koboldbridge.outmod ~= nil then r = koboldbridge.outmod() end + if koboldbridge.resend_settings_required then + bridged.resend_settings() + end koboldbridge.generating = true koboldbridge.userstate = "inmod" return r @@ -1140,6 +1164,7 @@ return function(_python, _bridged) setmetatable(KoboldWorldInfoFolder, KoboldWorldInfoFolder_mt) setmetatable(KoboldWorldInfoFolderSelector, KoboldWorldInfoFolderSelector_mt) setmetatable(KoboldWorldInfo, KoboldWorldInfo_mt) + setmetatable(KoboldSettings, KoboldSettings_mt) setmetatable(KoboldUserScriptModule, KoboldUserScriptModule_mt) setmetatable(KoboldUserScriptList, KoboldUserScriptList_mt) setmetatable(kobold, KoboldLib_mt)