mirror of
https://github.com/KoboldAI/KoboldAI-Client.git
synced 2025-06-05 21:59:24 +02:00
Palette v0.2
This commit is contained in:
20
aiserver.py
20
aiserver.py
@@ -37,6 +37,7 @@ import itertools
|
||||
import bisect
|
||||
import functools
|
||||
import traceback
|
||||
import multiprocessing
|
||||
from collections.abc import Iterable
|
||||
from collections import OrderedDict
|
||||
from typing import Any, Callable, Optional, TypeVar, Tuple, Union, Dict, Set, List
|
||||
@@ -993,6 +994,12 @@ def general_startup(override_args=None):
|
||||
print("You have selected the following path for your Model :", args.path)
|
||||
koboldai_vars.custmodpth = args.path;
|
||||
koboldai_vars.colaburl = args.path + "/request"; # Lets just use the same parameter to keep it simple
|
||||
|
||||
#setup socketio relay queue
|
||||
koboldai_settings.queue = multiprocessing.Queue()
|
||||
#t = threading.Thread(target=socket_io_relay, args=(koboldai_settings.queue, socketio))
|
||||
socketio.start_background_task(socket_io_relay, koboldai_settings.queue, socketio)
|
||||
print("continued")
|
||||
#==================================================================#
|
||||
# Load Model
|
||||
#==================================================================#
|
||||
@@ -6350,12 +6357,14 @@ def UI_2_Set_Selected_Text(data):
|
||||
def UI_2_submit(data):
|
||||
print(data)
|
||||
if not koboldai_vars.noai and data['theme'] != "":
|
||||
print("doing random prompt")
|
||||
memory = koboldai_vars.memory
|
||||
koboldai_vars.memory = "{}\n\nYou generate the following {} story concept :".format(koboldai_vars.memory, data['theme'])
|
||||
koboldai_vars.lua_koboldbridge.feedback = None
|
||||
actionsubmit("", force_submit=True, force_prompt_gen=True)
|
||||
koboldai_vars.memory = memory
|
||||
else:
|
||||
print("doing normal input")
|
||||
koboldai_vars.actions.clear_unused_options()
|
||||
koboldai_vars.lua_koboldbridge.feedback = None
|
||||
koboldai_vars.recentrng = koboldai_vars.recentrngm = None
|
||||
@@ -6589,9 +6598,14 @@ def UI_2_phrase_bias_update(biases):
|
||||
#==================================================================#
|
||||
# Event triggered to rely a message
|
||||
#==================================================================#
|
||||
@socketio.on('relay')
|
||||
def UI_2_relay(data):
|
||||
socketio.emit(data[0], data[1], **data[2])
|
||||
def socket_io_relay(queue, socketio):
|
||||
while True:
|
||||
if not queue.empty():
|
||||
data = queue.get()
|
||||
#socketio.emit(data[0], data[1], **data[2])
|
||||
socketio.emit(data[0], data[1], broadcast=True, room="UI_2")
|
||||
time.sleep(0)
|
||||
|
||||
|
||||
#==================================================================#
|
||||
# Event triggered when program errors out
|
||||
|
@@ -3,11 +3,12 @@ from io import BytesIO
|
||||
from flask import has_request_context
|
||||
import socketio as socketio_client
|
||||
from collections import OrderedDict
|
||||
import requests
|
||||
|
||||
rely_clients = {}
|
||||
serverstarted = False
|
||||
port = 5000
|
||||
|
||||
queue = None
|
||||
|
||||
def clean_var_for_emit(value):
|
||||
if isinstance(value, KoboldStoryRegister) or isinstance(value, KoboldWorldInfo):
|
||||
@@ -38,23 +39,15 @@ def process_variable_changes(socketio, classname, name, value, old_value, debug_
|
||||
socketio.emit("var_changed", {"classname": "actions", "name": "Selected Text", "old_value": None, "value": {"id": i, "text": value[i]}}, include_self=True, broadcast=True, room="UI_2")
|
||||
socketio.emit("var_changed", {"classname": "actions", "name": "Options", "old_value": None, "value": {"id": i, "options": value.actions[i]['Options']}}, include_self=True, broadcast=True, room="UI_2")
|
||||
socketio.emit("var_changed", {"classname": "actions", "name": "Selected Text Length", "old_value": None, "value": {"id": i, 'length': value.actions[i]['Selected Text Length']}}, include_self=True, broadcast=True, room="UI_2")
|
||||
socketio.emit("var_changed", {"classname": "actions", "name": "In AI Input", "old_value": None, "value": {"id": i, 'In AI Input': value.actions[i]['In AI Input']}}, include_self=True, broadcast=True, room="UI_2")
|
||||
if 'In AI Input' in value.actions[i]:
|
||||
socketio.emit("var_changed", {"classname": "actions", "name": "In AI Input", "old_value": None, "value": {"id": i, 'In AI Input': value.actions[i]['In AI Input']}}, include_self=True, broadcast=True, room="UI_2")
|
||||
elif isinstance(value, KoboldWorldInfo):
|
||||
value.send_to_ui()
|
||||
else:
|
||||
#If we got a variable change from a thread other than what the app is run it, eventlet seems to block and no further messages are sent. Instead, we'll rely the message to the app and have the main thread send it
|
||||
if not has_request_context():
|
||||
if threading.get_ident() in rely_clients:
|
||||
sio = rely_clients[threading.get_ident()]
|
||||
if not sio.connected:
|
||||
sio = create_loopback_socketio()
|
||||
else:
|
||||
sio = create_loopback_socketio()
|
||||
#release no longer used clients
|
||||
for thread in rely_clients:
|
||||
if thread not in [x.ident for x in threading.enumerate()]:
|
||||
del rely_clients[thread]
|
||||
sio.emit("relay", ["var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, {"include_self":True, "broadcast":True, "room":"UI_2"}])
|
||||
data = ["var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, {"include_self":True, "broadcast":True, "room":"UI_2"}]
|
||||
queue.put(data)
|
||||
else:
|
||||
socketio.emit("var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, include_self=True, broadcast=True, room="UI_2")
|
||||
|
||||
@@ -519,7 +512,21 @@ class story_settings(settings):
|
||||
def save_story(self):
|
||||
print("Saving")
|
||||
save_name = self.story_name if self.story_name != "" else "untitled"
|
||||
with open("stories/{}_v2.json".format(save_name), "w") as settings_file:
|
||||
adder = ""
|
||||
while True:
|
||||
if os.path.exists("stories/{}{}_v2.json".format(save_name, adder)):
|
||||
with open("stories/{}{}_v2.json".format(save_name, adder), "r") as f:
|
||||
temp = json.load(f)
|
||||
if 'story_id' in temp:
|
||||
if self.story_id != temp['story_id']:
|
||||
adder = 0 if adder == "" else adder+1
|
||||
else:
|
||||
break
|
||||
else:
|
||||
adder = 0 if adder == "" else adder+1
|
||||
else:
|
||||
break
|
||||
with open("stories/{}{}_v2.json".format(save_name, adder), "w") as settings_file:
|
||||
settings_file.write(self.to_json())
|
||||
self.gamesaved = True
|
||||
|
||||
@@ -1019,7 +1026,7 @@ class KoboldWorldInfo(object):
|
||||
self.story_settings = story_settings
|
||||
|
||||
def reset(self):
|
||||
self.__init__(self.socketio, self.story_settings, self.tokenizer)
|
||||
self.__init__(self.socketio, self.story_settings, self.koboldai_vars, self.tokenizer)
|
||||
|
||||
def __iter__(self):
|
||||
self.itter = -1
|
||||
|
@@ -92,10 +92,17 @@
|
||||
--flyout_menu_closed_width: 0px;
|
||||
--setting_menu_closed_width_no_pins_width: 0px;
|
||||
--story_options_size: 30%;
|
||||
--story_pinned_areas: "menuicon options gamescreen lefticon"
|
||||
"menuicon theme theme lefticon"
|
||||
"menuicon inputrow inputrow lefticon";
|
||||
--story_pinned_area_widths: 30px var(--story_options_size) auto 30px;
|
||||
--story_pinned_areas_left: "menuicon options gamescreen lefticon"
|
||||
"menuicon theme theme lefticon"
|
||||
"menuicon inputrow inputrow lefticon";
|
||||
--story_pinned_areas_right: "menuicon gamescreen options lefticon"
|
||||
"menuicon theme theme lefticon"
|
||||
"menuicon inputrow inputrow lefticon";
|
||||
--story_pinned_area_widths_left: 30px var(--story_options_size) auto 30px;
|
||||
--story_pinned_area_widths_right: 30px auto var(--story_options_size) 30px;
|
||||
--story_pinned_areas: var(--story_pinned_areas_left);
|
||||
--story_pinned_area_widths: var(--story_pinned_area_widths_left);
|
||||
--scrollbar-color: #9b9b9b80;
|
||||
--scrollbar-size: 6px;
|
||||
--light_shadow_value: 0 0px 8px 0 rgba(0, 0, 0, 0.2), 0px 0px 20px 0 rgba(0, 0, 0, 0.19);
|
||||
--left_menu_strong_shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.2), 25px 0px 20px 0 rgba(0, 0, 0, 0.19);
|
||||
|
@@ -1532,13 +1532,13 @@ function options_on_right(data) {
|
||||
console.log("Setting cookie to: "+data);
|
||||
if (data) {
|
||||
setCookie("options_on_right", "true");
|
||||
r.style.setProperty('--story_pinned_areas', '"menuicon gamescreen options lefticon"\n"menuicon inputrow inputrow lefticon"');
|
||||
r.style.setProperty('--story_pinned_area_widths', '30px auto var(--story_options_size) 30px');
|
||||
r.style.setProperty('--story_pinned_areas', 'var(--story_pinned_areas_right)');
|
||||
r.style.setProperty('--story_pinned_area_widths', 'var(--story_pinned_area_widths_right)');
|
||||
document.getElementById('preserve_game_space_setting').checked = true;
|
||||
} else {
|
||||
setCookie("options_on_right", "false");
|
||||
r.style.setProperty('--story_pinned_areas', '"menuicon options gamescreen lefticon"\n"menuicon inputrow inputrow lefticon"');
|
||||
r.style.setProperty('--story_pinned_area_widths', '30px var(--story_options_size) auto 30px');
|
||||
r.style.setProperty('--story_pinned_areas', 'var(--story_pinned_areas_left)');
|
||||
r.style.setProperty('--story_pinned_area_widths', 'var(--story_pinned_area_widths_left)');
|
||||
document.getElementById('preserve_game_space_setting').checked = false;
|
||||
}
|
||||
}
|
||||
|
@@ -69,7 +69,7 @@
|
||||
<div class="statusbar_inner" style="width:0%">0%</div>
|
||||
</div><br>
|
||||
<button type="button" class="btn action_button submit var_sync_alt_system_aibusy" system_aibusy=False id="btnsend"
|
||||
onclick="socket.emit('submit', {'data': document.getElementById('input_text').value, 'theme': document.getElementById('themetext').value});document.getElementById('input_text').value = '';"
|
||||
onclick="socket.emit('submit', {'data': document.getElementById('input_text').value, 'theme': document.getElementById('themetext').value});document.getElementById('input_text').value = '';document.getElementById('themetext').value = '';"
|
||||
>Submit</button>
|
||||
<button type="button" class="btn action_button submited var_sync_alt_system_aibusy" system_aibusy=False id="btnsend"><img src="static/thinking.gif" class="force_center" onclick="socket.emit('abort','');"></button>
|
||||
<button type="button" class="btn action_button back" onclick="socket.emit('back', {});"><span class="oi" data-glyph="action-undo"></span></button>
|
||||
|
Reference in New Issue
Block a user