From 44720fb34c7ce7750b141c7c8f6e5c4309aa4269 Mon Sep 17 00:00:00 2001
From: Concedo <39025047+LostRuins@users.noreply.github.com>
Date: Tue, 14 Jan 2025 14:03:22 +0800
Subject: [PATCH] capabilities printout
---
koboldcpp.py | 51 +++++++++++++++++++++++++++++++++------
otherarch/tts_adapter.cpp | 2 +-
2 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/koboldcpp.py b/koboldcpp.py
index b79c72649..318b8e7c9 100644
--- a/koboldcpp.py
+++ b/koboldcpp.py
@@ -651,6 +651,17 @@ def string_contains_or_overlaps_sequence_substring(inputstr, sequences):
return True
return False
+def get_capabilities():
+ global has_multiplayer, KcppVersion, friendlymodelname, friendlysdmodelname, fullsdmodelpath, mmprojpath, password, fullwhispermodelpath, ttsmodelpath
+ has_llm = not (friendlymodelname=="inactive")
+ has_txt2img = not (friendlysdmodelname=="inactive" or fullsdmodelpath=="")
+ has_vision = (mmprojpath!="")
+ has_password = (password!="")
+ has_whisper = (fullwhispermodelpath!="")
+ has_search = True if args.websearch else False
+ has_tts = (ttsmodelpath!="")
+ return {"result":"KoboldCpp", "version":KcppVersion, "protected":has_password, "llm":has_llm, "txt2img":has_txt2img,"vision":has_vision,"transcribe":has_whisper,"multiplayer":has_multiplayer,"websearch":has_search,"tts":has_tts}
+
def read_gguf_metadata(file_path):
chunk_size = 8192 # read only first 8kb of file
try:
@@ -2199,7 +2210,7 @@ Enter Prompt:
def do_GET(self):
global embedded_kailite, embedded_kcpp_docs, embedded_kcpp_sdui
- global has_multiplayer, multiplayer_turn_major, multiplayer_turn_minor, multiplayer_story_data_compressed, multiplayer_dataformat, multiplayer_lastactive, maxctx, maxhordelen, friendlymodelname, lastgeneratedcomfyimg, KcppVersion, totalgens, preloaded_story, exitcounter, currentusergenkey, friendlysdmodelname, fullsdmodelpath, mmprojpath, password, fullwhispermodelpath, ttsmodelpath
+ global has_multiplayer, multiplayer_turn_major, multiplayer_turn_minor, multiplayer_story_data_compressed, multiplayer_dataformat, multiplayer_lastactive, maxctx, maxhordelen, friendlymodelname, lastgeneratedcomfyimg, KcppVersion, totalgens, preloaded_story, exitcounter, currentusergenkey, friendlysdmodelname, fullsdmodelpath, mmprojpath, password
self.path = self.path.rstrip('/')
response_body = None
content_type = 'application/json'
@@ -2252,13 +2263,8 @@ Enter Prompt:
response_body = (json.dumps({"value": maxctx}).encode())
elif self.path.endswith(('/api/extra/version')):
- has_txt2img = not (friendlysdmodelname=="inactive" or fullsdmodelpath=="")
- has_vision = (mmprojpath!="")
- has_password = (password!="")
- has_whisper = (fullwhispermodelpath!="")
- has_search = True if args.websearch else False
- has_tts = (ttsmodelpath!="")
- response_body = (json.dumps({"result":"KoboldCpp","version":KcppVersion, "protected":has_password ,"txt2img":has_txt2img,"vision":has_vision,"transcribe":has_whisper,"multiplayer":has_multiplayer,"websearch":has_search,"tts":has_tts}).encode())
+ caps = get_capabilities()
+ response_body = (json.dumps(caps).encode())
elif self.path.endswith(('/api/extra/perf')):
global last_req_time, start_time
@@ -5200,6 +5206,35 @@ def main(launch_args,start_server=True):
except Exception:
print("Could not find Embedded SDUI.")
+ # print enabled modules
+ caps = get_capabilities()
+ enabledmlist = []
+ disabledmlist = []
+ apimlist = ["KoboldCppApi"]
+ if "llm" in caps and caps["llm"]:
+ apimlist.append("OpenAiApi")
+ apimlist.append("OllamaApi")
+ if "txt2img" in caps and caps["txt2img"]:
+ apimlist.append("A1111ForgeApi")
+ apimlist.append("ComfyUiApi")
+ if "transcribe" in caps and caps["transcribe"]:
+ apimlist.append("WhisperTranscribeApi")
+ if "tts" in caps and caps["tts"]:
+ apimlist.append("XttsApi")
+ apimlist.append("OpenAiSpeechApi")
+ enabledmlist.append("TextGeneration") if "llm" in caps and caps["llm"] else disabledmlist.append("TextGeneration")
+ enabledmlist.append("ImageGeneration") if "txt2img" in caps and caps["txt2img"] else disabledmlist.append("ImageGeneration")
+ enabledmlist.append("VoiceRecognition") if "transcribe" in caps and caps["transcribe"] else disabledmlist.append("VoiceRecognition")
+ enabledmlist.append("MultimodalVision") if "vision" in caps and caps["vision"] else disabledmlist.append("MultimodalVision")
+ enabledmlist.append("NetworkMultiplayer") if "multiplayer" in caps and caps["multiplayer"] else disabledmlist.append("NetworkMultiplayer")
+ enabledmlist.append("ApiKeyPassword") if "protected" in caps and caps["protected"] else disabledmlist.append("ApiKeyPassword")
+ enabledmlist.append("WebSearchProxy") if "websearch" in caps and caps["websearch"] else disabledmlist.append("WebSearchProxy")
+ enabledmlist.append("TextToSpeech") if "tts" in caps and caps["tts"] else disabledmlist.append("TextToSpeech")
+
+ print(f"======\nActive Modules: {' '.join(enabledmlist)}")
+ print(f"Inactive Modules: {' '.join(disabledmlist)}")
+ print(f"Enabled APIs: {' '.join(apimlist)}")
+
if args.port_param!=defaultport:
args.port = args.port_param
diff --git a/otherarch/tts_adapter.cpp b/otherarch/tts_adapter.cpp
index a9eddd77b..8b8286772 100644
--- a/otherarch/tts_adapter.cpp
+++ b/otherarch/tts_adapter.cpp
@@ -515,7 +515,7 @@ tts_generation_outputs ttstype_generate(const tts_generation_inputs inputs)
if(ttc_ctx==nullptr || cts_ctx==nullptr)
{
- printf("\nWarning: KCPP TTS not initialized!\n");
+ printf("\nWarning: KCPP TTS not initialized! Make sure both TTS and WavTokenizer models are loaded.\n");
output.data = "";
output.status = 0;
return output;