mirror of
https://github.com/KoboldAI/KoboldAI-Client.git
synced 2024-12-24 23:43:48 +01:00
Defaults Support
This adds support for loading settings from the defaults folder, settings are loaded in the following order and overwritten if needed by the higher number. 1. The model config file. 2. The defaults folder. 3. The users defined settings file. With this support we can begin to ship better defaults for models we do not manage. Our community tuners have been most helpful at adding good defaults to their configuration files, but for other models such as the base models this gives us the flexibility to define better settings for each model without messing with a users desired settings if they already exist.
This commit is contained in:
parent
714fc1729b
commit
e5dcf91a08
3
.gitignore
vendored
3
.gitignore
vendored
@ -31,3 +31,6 @@ Uninstall
|
|||||||
|
|
||||||
# Ignore compiled Python files.
|
# Ignore compiled Python files.
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
|
# Don't ignore defaults
|
||||||
|
!defaults/*
|
160
aiserver.py
160
aiserver.py
@ -660,89 +660,99 @@ def settingschanged():
|
|||||||
#==================================================================#
|
#==================================================================#
|
||||||
# Read settings from client file JSON and send to vars
|
# Read settings from client file JSON and send to vars
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
|
|
||||||
def loadsettings():
|
def loadsettings():
|
||||||
|
if(path.exists("defaults/" + getmodelname().replace('/', '_') + ".settings")):
|
||||||
|
# Read file contents into JSON object
|
||||||
|
file = open("defaults/" + getmodelname().replace('/', '_') + ".settings", "r")
|
||||||
|
js = json.load(file)
|
||||||
|
|
||||||
|
processsettings(js)
|
||||||
|
file.close()
|
||||||
if(path.exists("settings/" + getmodelname().replace('/', '_') + ".settings")):
|
if(path.exists("settings/" + getmodelname().replace('/', '_') + ".settings")):
|
||||||
# Read file contents into JSON object
|
# Read file contents into JSON object
|
||||||
file = open("settings/" + getmodelname().replace('/', '_') + ".settings", "r")
|
file = open("settings/" + getmodelname().replace('/', '_') + ".settings", "r")
|
||||||
js = json.load(file)
|
js = json.load(file)
|
||||||
|
|
||||||
# Copy file contents to vars
|
processsettings(js)
|
||||||
if("apikey" in js):
|
|
||||||
vars.apikey = js["apikey"]
|
|
||||||
if("andepth" in js):
|
|
||||||
vars.andepth = js["andepth"]
|
|
||||||
if("temp" in js):
|
|
||||||
vars.temp = js["temp"]
|
|
||||||
if("top_p" in js):
|
|
||||||
vars.top_p = js["top_p"]
|
|
||||||
if("top_k" in js):
|
|
||||||
vars.top_k = js["top_k"]
|
|
||||||
if("tfs" in js):
|
|
||||||
vars.tfs = js["tfs"]
|
|
||||||
if("typical" in js):
|
|
||||||
vars.typical = js["typical"]
|
|
||||||
if("rep_pen" in js):
|
|
||||||
vars.rep_pen = js["rep_pen"]
|
|
||||||
if("rep_pen_slope" in js):
|
|
||||||
vars.rep_pen_slope = js["rep_pen_slope"]
|
|
||||||
if("rep_pen_range" in js):
|
|
||||||
vars.rep_pen_range = js["rep_pen_range"]
|
|
||||||
if("genamt" in js):
|
|
||||||
vars.genamt = js["genamt"]
|
|
||||||
if("max_length" in js):
|
|
||||||
vars.max_length = js["max_length"]
|
|
||||||
if("ikgen" in js):
|
|
||||||
vars.ikgen = js["ikgen"]
|
|
||||||
if("formatoptns" in js):
|
|
||||||
vars.formatoptns = js["formatoptns"]
|
|
||||||
if("numseqs" in js):
|
|
||||||
vars.numseqs = js["numseqs"]
|
|
||||||
if("widepth" in js):
|
|
||||||
vars.widepth = js["widepth"]
|
|
||||||
if("useprompt" in js):
|
|
||||||
vars.useprompt = js["useprompt"]
|
|
||||||
if("adventure" in js):
|
|
||||||
vars.adventure = js["adventure"]
|
|
||||||
if("chatmode" in js):
|
|
||||||
vars.chatmode = js["chatmode"]
|
|
||||||
if("chatname" in js):
|
|
||||||
vars.chatname = js["chatname"]
|
|
||||||
if("dynamicscan" in js):
|
|
||||||
vars.dynamicscan = js["dynamicscan"]
|
|
||||||
if("nopromptgen" in js):
|
|
||||||
vars.nopromptgen = js["nopromptgen"]
|
|
||||||
if("rngpersist" in js):
|
|
||||||
vars.rngpersist = js["rngpersist"]
|
|
||||||
if("nogenmod" in js):
|
|
||||||
vars.nogenmod = js["nogenmod"]
|
|
||||||
if("autosave" in js):
|
|
||||||
vars.autosave = js["autosave"]
|
|
||||||
if("newlinemode" in js):
|
|
||||||
vars.newlinemode = js["newlinemode"]
|
|
||||||
if("welcome" in js):
|
|
||||||
vars.welcome = js["welcome"]
|
|
||||||
|
|
||||||
if("antemplate" in js):
|
|
||||||
vars.setauthornotetemplate = js["antemplate"]
|
|
||||||
if(not vars.gamestarted):
|
|
||||||
vars.authornotetemplate = vars.setauthornotetemplate
|
|
||||||
|
|
||||||
if("userscripts" in js):
|
|
||||||
vars.userscripts = []
|
|
||||||
for userscript in js["userscripts"]:
|
|
||||||
if type(userscript) is not str:
|
|
||||||
continue
|
|
||||||
userscript = userscript.strip()
|
|
||||||
if len(userscript) != 0 and all(q not in userscript for q in ("..", ":")) and all(userscript[0] not in q for q in ("/", "\\")) and os.path.exists(fileops.uspath(userscript)):
|
|
||||||
vars.userscripts.append(userscript)
|
|
||||||
|
|
||||||
if("corescript" in js and type(js["corescript"]) is str and all(q not in js["corescript"] for q in ("..", ":")) and all(js["corescript"][0] not in q for q in ("/", "\\"))):
|
|
||||||
vars.corescript = js["corescript"]
|
|
||||||
else:
|
|
||||||
vars.corescript = "default.lua"
|
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
def processsettings(js):
|
||||||
|
# Copy file contents to vars
|
||||||
|
if("apikey" in js):
|
||||||
|
vars.apikey = js["apikey"]
|
||||||
|
if("andepth" in js):
|
||||||
|
vars.andepth = js["andepth"]
|
||||||
|
if("temp" in js):
|
||||||
|
vars.temp = js["temp"]
|
||||||
|
if("top_p" in js):
|
||||||
|
vars.top_p = js["top_p"]
|
||||||
|
if("top_k" in js):
|
||||||
|
vars.top_k = js["top_k"]
|
||||||
|
if("tfs" in js):
|
||||||
|
vars.tfs = js["tfs"]
|
||||||
|
if("typical" in js):
|
||||||
|
vars.typical = js["typical"]
|
||||||
|
if("rep_pen" in js):
|
||||||
|
vars.rep_pen = js["rep_pen"]
|
||||||
|
if("rep_pen_slope" in js):
|
||||||
|
vars.rep_pen_slope = js["rep_pen_slope"]
|
||||||
|
if("rep_pen_range" in js):
|
||||||
|
vars.rep_pen_range = js["rep_pen_range"]
|
||||||
|
if("genamt" in js):
|
||||||
|
vars.genamt = js["genamt"]
|
||||||
|
if("max_length" in js):
|
||||||
|
vars.max_length = js["max_length"]
|
||||||
|
if("ikgen" in js):
|
||||||
|
vars.ikgen = js["ikgen"]
|
||||||
|
if("formatoptns" in js):
|
||||||
|
vars.formatoptns = js["formatoptns"]
|
||||||
|
if("numseqs" in js):
|
||||||
|
vars.numseqs = js["numseqs"]
|
||||||
|
if("widepth" in js):
|
||||||
|
vars.widepth = js["widepth"]
|
||||||
|
if("useprompt" in js):
|
||||||
|
vars.useprompt = js["useprompt"]
|
||||||
|
if("adventure" in js):
|
||||||
|
vars.adventure = js["adventure"]
|
||||||
|
if("chatmode" in js):
|
||||||
|
vars.chatmode = js["chatmode"]
|
||||||
|
if("chatname" in js):
|
||||||
|
vars.chatname = js["chatname"]
|
||||||
|
if("dynamicscan" in js):
|
||||||
|
vars.dynamicscan = js["dynamicscan"]
|
||||||
|
if("nopromptgen" in js):
|
||||||
|
vars.nopromptgen = js["nopromptgen"]
|
||||||
|
if("rngpersist" in js):
|
||||||
|
vars.rngpersist = js["rngpersist"]
|
||||||
|
if("nogenmod" in js):
|
||||||
|
vars.nogenmod = js["nogenmod"]
|
||||||
|
if("autosave" in js):
|
||||||
|
vars.autosave = js["autosave"]
|
||||||
|
if("newlinemode" in js):
|
||||||
|
vars.newlinemode = js["newlinemode"]
|
||||||
|
if("welcome" in js):
|
||||||
|
vars.welcome = js["welcome"]
|
||||||
|
|
||||||
|
if("antemplate" in js):
|
||||||
|
vars.setauthornotetemplate = js["antemplate"]
|
||||||
|
if(not vars.gamestarted):
|
||||||
|
vars.authornotetemplate = vars.setauthornotetemplate
|
||||||
|
|
||||||
|
if("userscripts" in js):
|
||||||
|
vars.userscripts = []
|
||||||
|
for userscript in js["userscripts"]:
|
||||||
|
if type(userscript) is not str:
|
||||||
|
continue
|
||||||
|
userscript = userscript.strip()
|
||||||
|
if len(userscript) != 0 and all(q not in userscript for q in ("..", ":")) and all(userscript[0] not in q for q in ("/", "\\")) and os.path.exists(fileops.uspath(userscript)):
|
||||||
|
vars.userscripts.append(userscript)
|
||||||
|
|
||||||
|
if("corescript" in js and type(js["corescript"]) is str and all(q not in js["corescript"] for q in ("..", ":")) and all(js["corescript"][0] not in q for q in ("/", "\\"))):
|
||||||
|
vars.corescript = js["corescript"]
|
||||||
|
else:
|
||||||
|
vars.corescript = "default.lua"
|
||||||
|
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
# Load a soft prompt from a file
|
# Load a soft prompt from a file
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
|
Loading…
Reference in New Issue
Block a user