diff --git a/koboldcpp.py b/koboldcpp.py index 1c5e3df3b..b6ba4a3a7 100644 --- a/koboldcpp.py +++ b/koboldcpp.py @@ -97,6 +97,8 @@ musicName = None imageName = None mmprojName = None lastgeneratedcomfyimg = b'' +lastgeneratedcachedimg = b'' +lastgeneratedcachedimgkey = b'' lastuploadedcomfyimg = b'' fullsdmodelpath = "" #if empty, it's not initialized password = "" #if empty, no auth key required @@ -6098,7 +6100,7 @@ Change Mode
def do_GET(self): global embedded_kailite, embedded_kcpp_docs, embedded_kcpp_sdui, embedded_kailite_gz, embedded_kcpp_docs_gz, embedded_kcpp_sdui_gz, embedded_lcpp_ui_gz, embedded_musicui, embedded_musicui_gz global last_req_time, start_time, cached_chat_template, cached_sd_info, has_vision_support, has_audio_support, has_whisper, friendlymodelname - global savedata_obj, has_multiplayer, multiplayer_turn_major, multiplayer_turn_minor, multiplayer_story_data_compressed, multiplayer_dataformat, multiplayer_lastactive, maxctx, maxhordelen, friendlymodelname, lastuploadedcomfyimg, lastgeneratedcomfyimg, KcppVersion, totalgens, preloaded_story, exitcounter, currentusergenkey, friendlysdmodelname, fullsdmodelpath, password, friendlyembeddingsmodelname, voicelist + global savedata_obj, has_multiplayer, multiplayer_turn_major, multiplayer_turn_minor, multiplayer_story_data_compressed, multiplayer_dataformat, multiplayer_lastactive, maxctx, maxhordelen, friendlymodelname, lastuploadedcomfyimg, lastgeneratedcomfyimg, lastgeneratedcachedimg, lastgeneratedcachedimgkey, KcppVersion, totalgens, preloaded_story, exitcounter, currentusergenkey, friendlysdmodelname, fullsdmodelpath, password, friendlyembeddingsmodelname, voicelist global autoswapmode, textName, sttName, ttsName, embedName, musicName, imageName, mmprojName clean_path = self.path.split("?")[0] #for cases where we do not want query params @@ -6351,6 +6353,15 @@ Change Mode
elif clean_path=='/view' or clean_path=='/view.png' or clean_path=='/api/view' or clean_path.startswith('/view_image'): #emulate comfyui content_type = 'image/png' response_body = lastgeneratedcomfyimg + elif clean_path.startswith('/sdapi/v1/get_last.png'): + parsed_url = urllib.parse.urlparse(self.path) + parsed_dict = urllib.parse.parse_qs(parsed_url.query) + genkey = parsed_dict.get('genkey', [''])[0] + if genkey and genkey==lastgeneratedcachedimgkey and lastgeneratedcachedimg: + content_type = 'image/png' + response_body = lastgeneratedcachedimg + else: + response_body = None elif clean_path=='/history' or clean_path=='/api/history' or clean_path.startswith('/api/history/') or clean_path.startswith('/history/'): #emulate comfyui modelNameToReturn = friendlysdmodelname if autoswapmode and imageName is not None: @@ -6486,7 +6497,7 @@ Change Mode
def do_POST(self): global thinkformats - global modelbusy, batched_request_runner_count, requestsinqueue, currentusergenkey, totalgens, pendingabortkey, lastuploadedcomfyimg, lastgeneratedcomfyimg, multiplayer_turn_major, multiplayer_turn_minor, multiplayer_story_data_compressed, multiplayer_dataformat, multiplayer_lastactive, net_save_slots, has_vision_support, savestate_limit, mcp_lock + global modelbusy, batched_request_runner_count, requestsinqueue, currentusergenkey, totalgens, pendingabortkey, lastuploadedcomfyimg, lastgeneratedcomfyimg, lastgeneratedcachedimg, lastgeneratedcachedimgkey, multiplayer_turn_major, multiplayer_turn_minor, multiplayer_story_data_compressed, multiplayer_dataformat, multiplayer_lastactive, net_save_slots, has_vision_support, savestate_limit, mcp_lock global autoswapmode, textName, sttName, ttsName, embedName, musicName, imageName, mmprojName contlenstr = self.headers['content-length'] content_length = 0 @@ -7447,6 +7458,8 @@ Change Mode
return elif is_imggen: #image gen try: + lastgeneratedcachedimg = b'' + lastgeneratedcachedimgkey = '' if is_comfyui_imggen: lastgeneratedcomfyimg = b'' genparams = sd_comfyui_tranform_params(genparams) @@ -7465,6 +7478,11 @@ Change Mode
genfinalframe = gen["final_frame"] geninfo = json.dumps(gen["info"]) # sdapi really expects a stringified JSON genresp = None + if gendat: + lastgeneratedcachedimg = base64.b64decode(gendat) + lastgeneratedcachedimgkey = genparams.get('genkey', '') + else: + lastgeneratedcachedimg = b'' if is_comfyui_imggen: if gendat: lastgeneratedcomfyimg = base64.b64decode(gendat)