mirror of
https://github.com/KoboldAI/KoboldAI-Client.git
synced 2025-06-05 21:59:24 +02:00
Added debugging for Colab issue
This commit is contained in:
53
aiserver.py
53
aiserver.py
@@ -23,6 +23,7 @@ from os import path, getcwd
|
|||||||
import time
|
import time
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
|
import datetime
|
||||||
import collections
|
import collections
|
||||||
import zipfile
|
import zipfile
|
||||||
import packaging
|
import packaging
|
||||||
@@ -6117,43 +6118,57 @@ def loadJSON(json_text_or_dict):
|
|||||||
load_story_v1(json_data)
|
load_story_v1(json_data)
|
||||||
|
|
||||||
def load_story_v1(js):
|
def load_story_v1(js):
|
||||||
|
print("loading V1 story")
|
||||||
loadpath = js['v1_loadpath']
|
loadpath = js['v1_loadpath']
|
||||||
|
print("set loadpath")
|
||||||
filename = js['v1_filename']
|
filename = js['v1_filename']
|
||||||
|
print("set filename")
|
||||||
|
|
||||||
_filename = filename
|
_filename = filename
|
||||||
if(filename.endswith('.json')):
|
if(filename.endswith('.json')):
|
||||||
_filename = filename[:-5]
|
_filename = filename[:-5]
|
||||||
session['story'] = _filename
|
session['story'] = _filename
|
||||||
|
print("set story name")
|
||||||
#create the story
|
#create the story
|
||||||
#koboldai_vars.create_story(session['story'])
|
#koboldai_vars.create_story(session['story'])
|
||||||
koboldai_vars.create_story('default')
|
koboldai_vars.create_story('default')
|
||||||
|
print("created blank story")
|
||||||
|
|
||||||
koboldai_vars.laststory = _filename
|
koboldai_vars.laststory = _filename
|
||||||
|
print("set last story")
|
||||||
#set the story_name
|
#set the story_name
|
||||||
koboldai_vars.story_name = _filename
|
koboldai_vars.story_name = _filename
|
||||||
|
print("set story name")
|
||||||
|
|
||||||
|
|
||||||
# Copy file contents to vars
|
# Copy file contents to vars
|
||||||
koboldai_vars.gamestarted = js["gamestarted"]
|
koboldai_vars.gamestarted = js["gamestarted"]
|
||||||
|
print("set game started")
|
||||||
koboldai_vars.prompt = js["prompt"]
|
koboldai_vars.prompt = js["prompt"]
|
||||||
|
print("set prompt")
|
||||||
koboldai_vars.memory = js["memory"]
|
koboldai_vars.memory = js["memory"]
|
||||||
|
print("set memory")
|
||||||
koboldai_vars.worldinfo_v2.reset()
|
koboldai_vars.worldinfo_v2.reset()
|
||||||
|
print("reset world info")
|
||||||
koboldai_vars.worldinfo = []
|
koboldai_vars.worldinfo = []
|
||||||
koboldai_vars.worldinfo_i = []
|
koboldai_vars.worldinfo_i = []
|
||||||
koboldai_vars.worldinfo_u = {}
|
koboldai_vars.worldinfo_u = {}
|
||||||
koboldai_vars.wifolders_d = {int(k): v for k, v in js.get("wifolders_d", {}).items()}
|
koboldai_vars.wifolders_d = {int(k): v for k, v in js.get("wifolders_d", {}).items()}
|
||||||
koboldai_vars.wifolders_l = js.get("wifolders_l", [])
|
koboldai_vars.wifolders_l = js.get("wifolders_l", [])
|
||||||
koboldai_vars.wifolders_u = {uid: [] for uid in koboldai_vars.wifolders_d}
|
koboldai_vars.wifolders_u = {uid: [] for uid in koboldai_vars.wifolders_d}
|
||||||
|
print("set world info folders")
|
||||||
koboldai_vars.lastact = ""
|
koboldai_vars.lastact = ""
|
||||||
koboldai_vars.submission = ""
|
koboldai_vars.submission = ""
|
||||||
koboldai_vars.lastctx = ""
|
koboldai_vars.lastctx = ""
|
||||||
koboldai_vars.genseqs = []
|
koboldai_vars.genseqs = []
|
||||||
|
|
||||||
actions = collections.deque(js["actions"])
|
actions = collections.deque(js["actions"])
|
||||||
|
print("set local actions")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(len(koboldai_vars.prompt.strip()) == 0):
|
if(len(koboldai_vars.prompt.strip()) == 0):
|
||||||
|
print("prompt empty and have actions, setting first action to prompt")
|
||||||
while(len(actions)):
|
while(len(actions)):
|
||||||
action = actions.popleft()
|
action = actions.popleft()
|
||||||
if(len(action.strip()) != 0):
|
if(len(action.strip()) != 0):
|
||||||
@@ -6164,14 +6179,21 @@ def load_story_v1(js):
|
|||||||
if(koboldai_vars.gamestarted):
|
if(koboldai_vars.gamestarted):
|
||||||
for s in actions:
|
for s in actions:
|
||||||
koboldai_vars.actions.append(s)
|
koboldai_vars.actions.append(s)
|
||||||
|
print("set actions")
|
||||||
|
|
||||||
if "actions_metadata" in js:
|
if "actions_metadata" in js:
|
||||||
|
print("have actions_metadata")
|
||||||
if type(js["actions_metadata"]) == dict:
|
if type(js["actions_metadata"]) == dict:
|
||||||
|
print("metadata is a dict")
|
||||||
for key in js["actions_metadata"]:
|
for key in js["actions_metadata"]:
|
||||||
|
print("actions_metadata key: {}".format(key))
|
||||||
if js["actions_metadata"][key]["Alternative Text"] != []:
|
if js["actions_metadata"][key]["Alternative Text"] != []:
|
||||||
data = js["actions_metadata"][key]["Alternative Text"]
|
data = js["actions_metadata"][key]["Alternative Text"]
|
||||||
|
print("data: {}".format(data))
|
||||||
data["text"] = data.pop("Text")
|
data["text"] = data.pop("Text")
|
||||||
|
print("data after pop: {}".format(data))
|
||||||
koboldai_vars.actions.set_options(self, data, key)
|
koboldai_vars.actions.set_options(self, data, key)
|
||||||
|
print("set actions metadata")
|
||||||
|
|
||||||
# Try not to break older save files
|
# Try not to break older save files
|
||||||
if("authorsnote" in js):
|
if("authorsnote" in js):
|
||||||
@@ -6818,7 +6840,8 @@ def file_popup(popup_title, starting_folder, return_event, upload=True, jailed=T
|
|||||||
editable=False, show_breadcrumbs=True, item_check=None, show_hidden=False,
|
editable=False, show_breadcrumbs=True, item_check=None, show_hidden=False,
|
||||||
valid_only=False, hide_extention=False, extra_parameter_function=None,
|
valid_only=False, hide_extention=False, extra_parameter_function=None,
|
||||||
column_names=['File Name'], show_filename=True,
|
column_names=['File Name'], show_filename=True,
|
||||||
column_widths=["100%"]):
|
column_widths=["100%"],
|
||||||
|
sort="Modified", desc=False):
|
||||||
#starting_folder = The folder we're going to get folders and/or items from
|
#starting_folder = The folder we're going to get folders and/or items from
|
||||||
#return_event = the socketio event that will be emitted when the load button is clicked
|
#return_event = the socketio event that will be emitted when the load button is clicked
|
||||||
#jailed = if set to true will look for the session variable jailed_folder and prevent navigation outside of that folder
|
#jailed = if set to true will look for the session variable jailed_folder and prevent navigation outside of that folder
|
||||||
@@ -6848,6 +6871,8 @@ def file_popup(popup_title, starting_folder, return_event, upload=True, jailed=T
|
|||||||
session['hide_extention'] = hide_extention
|
session['hide_extention'] = hide_extention
|
||||||
session['show_filename'] = show_filename
|
session['show_filename'] = show_filename
|
||||||
session['column_widths'] = column_widths
|
session['column_widths'] = column_widths
|
||||||
|
session['sort'] = sort
|
||||||
|
session['desc'] = desc
|
||||||
|
|
||||||
socketio.emit("load_popup", {"popup_title": popup_title, "call_back": return_event, "renameable": renameable, "deleteable": deleteable, "editable": editable, 'upload': upload}, broadcast=False, room="UI_2")
|
socketio.emit("load_popup", {"popup_title": popup_title, "call_back": return_event, "renameable": renameable, "deleteable": deleteable, "editable": editable, 'upload': upload}, broadcast=False, room="UI_2")
|
||||||
socketio.emit("load_popup", {"popup_title": popup_title, "call_back": return_event, "renameable": renameable, "deleteable": deleteable, "editable": editable, 'upload': upload}, broadcast=True, room="UI_1")
|
socketio.emit("load_popup", {"popup_title": popup_title, "call_back": return_event, "renameable": renameable, "deleteable": deleteable, "editable": editable, 'upload': upload}, broadcast=True, room="UI_1")
|
||||||
@@ -6867,6 +6892,8 @@ def get_files_folders(starting_folder):
|
|||||||
hide_extention = session['hide_extention']
|
hide_extention = session['hide_extention']
|
||||||
show_filename = session['show_filename']
|
show_filename = session['show_filename']
|
||||||
column_widths = session['column_widths']
|
column_widths = session['column_widths']
|
||||||
|
sort = session['sort']
|
||||||
|
desc = session['desc']
|
||||||
|
|
||||||
if starting_folder == 'This PC':
|
if starting_folder == 'This PC':
|
||||||
breadcrumbs = [['This PC', 'This PC']]
|
breadcrumbs = [['This PC', 'This PC']]
|
||||||
@@ -6893,7 +6920,7 @@ def get_files_folders(starting_folder):
|
|||||||
folders = []
|
folders = []
|
||||||
files = []
|
files = []
|
||||||
base_path = os.path.abspath(starting_folder).replace("\\", "/")
|
base_path = os.path.abspath(starting_folder).replace("\\", "/")
|
||||||
for item in os.listdir(base_path):
|
for item in get_files_sorted(base_path, sort, desc=desc):
|
||||||
item_full_path = os.path.join(base_path, item).replace("\\", "/")
|
item_full_path = os.path.join(base_path, item).replace("\\", "/")
|
||||||
if hasattr(os.stat(item_full_path), "st_file_attributes"):
|
if hasattr(os.stat(item_full_path), "st_file_attributes"):
|
||||||
hidden = bool(os.stat(item_full_path).st_file_attributes & stat.FILE_ATTRIBUTE_HIDDEN)
|
hidden = bool(os.stat(item_full_path).st_file_attributes & stat.FILE_ATTRIBUTE_HIDDEN)
|
||||||
@@ -6931,6 +6958,21 @@ def get_files_folders(starting_folder):
|
|||||||
socketio.emit("popup_breadcrumbs", breadcrumbs, broadcast=False, room="UI_2")
|
socketio.emit("popup_breadcrumbs", breadcrumbs, broadcast=False, room="UI_2")
|
||||||
socketio.emit("popup_breadcrumbs", breadcrumbs, broadcast=True, room="UI_1")
|
socketio.emit("popup_breadcrumbs", breadcrumbs, broadcast=True, room="UI_1")
|
||||||
|
|
||||||
|
def get_files_sorted(path, sort, desc=False):
|
||||||
|
data = {}
|
||||||
|
for file in os.scandir(path=path):
|
||||||
|
if sort == "Modified":
|
||||||
|
data[file.name] = datetime.datetime.fromtimestamp(file.stat().st_mtime)
|
||||||
|
elif sort == "Accessed":
|
||||||
|
data[file.name] = datetime.datetime.fromtimestamp(file.stat().st_atime)
|
||||||
|
elif sort == "Created":
|
||||||
|
data[file.name] = datetime.datetime.fromtimestamp(file.stat().st_ctime)
|
||||||
|
elif sort == "Name":
|
||||||
|
data[file.name] = file.name
|
||||||
|
|
||||||
|
return [key[0] for key in sorted(data.items(), key=lambda kv: (kv[1], kv[0]), reverse=desc)]
|
||||||
|
|
||||||
|
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
# Event triggered when browser SocketIO detects a variable change
|
# Event triggered when browser SocketIO detects a variable change
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
@@ -7022,7 +7064,7 @@ def UI_2_Set_Selected_Text(data):
|
|||||||
# Event triggered when Option is Selected
|
# Event triggered when Option is Selected
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
@socketio.on('Use Option Text')
|
@socketio.on('Use Option Text')
|
||||||
def UI_2_Set_Selected_Text(data):
|
def UI_2_Use_Option_Text(data):
|
||||||
print("Using Option Text: {}".format(data))
|
print("Using Option Text: {}".format(data))
|
||||||
if koboldai_vars.prompt == "":
|
if koboldai_vars.prompt == "":
|
||||||
koboldai_vars.prompt = koboldai_vars.actions.get_current_options()[int(data['option'])]['text']
|
koboldai_vars.prompt = koboldai_vars.actions.get_current_options()[int(data['option'])]['text']
|
||||||
@@ -7111,7 +7153,7 @@ def UI_2_load_model_button(data):
|
|||||||
# Event triggered when user clicks the a model
|
# Event triggered when user clicks the a model
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
@socketio.on('select_model')
|
@socketio.on('select_model')
|
||||||
def UI_2_load_model_button(data):
|
def UI_2_select_model(data):
|
||||||
print(data)
|
print(data)
|
||||||
|
|
||||||
#We've selected a menu
|
#We've selected a menu
|
||||||
@@ -7169,7 +7211,8 @@ def UI_2_load_story_list(data):
|
|||||||
deleteable=True, show_breadcrumbs=True, item_check=valid_story,
|
deleteable=True, show_breadcrumbs=True, item_check=valid_story,
|
||||||
valid_only=True, hide_extention=True, extra_parameter_function=get_story_length,
|
valid_only=True, hide_extention=True, extra_parameter_function=get_story_length,
|
||||||
column_names=['Story Name', 'Action Count'],
|
column_names=['Story Name', 'Action Count'],
|
||||||
column_widths=['auto', '100px'])
|
column_widths=['auto', '100px'],
|
||||||
|
sort="Modified", desc=True)
|
||||||
|
|
||||||
def get_story_length(item_full_path, item, valid_selection):
|
def get_story_length(item_full_path, item, valid_selection):
|
||||||
if not valid_selection:
|
if not valid_selection:
|
||||||
|
@@ -782,7 +782,7 @@ class KoboldStoryRegister(object):
|
|||||||
if self.tokenizer is not None:
|
if self.tokenizer is not None:
|
||||||
self.actions[i]['Selected Text Length'] = len(self.tokenizer.encode(text))
|
self.actions[i]['Selected Text Length'] = len(self.tokenizer.encode(text))
|
||||||
else:
|
else:
|
||||||
self.actions[i]['Selected Text Length'] = None
|
self.actions[i]['Selected Text Length'] = 0
|
||||||
self.actions[i]["In AI Input"] = False
|
self.actions[i]["In AI Input"] = False
|
||||||
process_variable_changes(self.socketio, "story", 'actions', {"id": i, 'action': self.actions[i]}, old)
|
process_variable_changes(self.socketio, "story", 'actions', {"id": i, 'action': self.actions[i]}, old)
|
||||||
ignore = self.koboldai_vars.calc_ai_text()
|
ignore = self.koboldai_vars.calc_ai_text()
|
||||||
@@ -954,7 +954,7 @@ class KoboldStoryRegister(object):
|
|||||||
if self.tokenizer is not None:
|
if self.tokenizer is not None:
|
||||||
self.actions[action_step]['Selected Text Length'] = len(self.tokenizer.encode(self.actions[action_step]['Options'][option_number]['text']))
|
self.actions[action_step]['Selected Text Length'] = len(self.tokenizer.encode(self.actions[action_step]['Options'][option_number]['text']))
|
||||||
else:
|
else:
|
||||||
self.actions[action_step]['Selected Text Length'] = None
|
self.actions[action_step]['Selected Text Length'] = 0
|
||||||
del self.actions[action_step]['Options'][option_number]
|
del self.actions[action_step]['Options'][option_number]
|
||||||
#If this is the current spot in the story, advance
|
#If this is the current spot in the story, advance
|
||||||
if action_step-1 == self.action_count:
|
if action_step-1 == self.action_count:
|
||||||
@@ -1023,7 +1023,7 @@ class KoboldStoryRegister(object):
|
|||||||
process_variable_changes(self.socketio, "story", 'actions', {"id": key, 'action': self.actions[key]}, None)
|
process_variable_changes(self.socketio, "story", 'actions', {"id": key, 'action': self.actions[key]}, None)
|
||||||
else:
|
else:
|
||||||
for key in self.actions:
|
for key in self.actions:
|
||||||
self.actions[key]['Selected Text Length'] = None
|
self.actions[key]['Selected Text Length'] = 0
|
||||||
process_variable_changes(self.socketio, "story", 'actions', {"id": key, 'action': self.actions[key]}, None)
|
process_variable_changes(self.socketio, "story", 'actions', {"id": key, 'action': self.actions[key]}, None)
|
||||||
ignore = self.koboldai_vars.calc_ai_text()
|
ignore = self.koboldai_vars.calc_ai_text()
|
||||||
|
|
||||||
@@ -1254,7 +1254,7 @@ class KoboldWorldInfo(object):
|
|||||||
if self.tokenizer is not None:
|
if self.tokenizer is not None:
|
||||||
token_length = len(self.tokenizer.encode(content))
|
token_length = len(self.tokenizer.encode(content))
|
||||||
else:
|
else:
|
||||||
token_length = None
|
token_length = 0
|
||||||
if folder is None:
|
if folder is None:
|
||||||
folder = "root"
|
folder = "root"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user