mirror of
https://github.com/ParisNeo/lollms.git
synced 2025-04-07 10:56:41 +00:00
removed old languages format
This commit is contained in:
parent
22299b5c7f
commit
7a73972055
@ -52,6 +52,13 @@ class LollmsApplication(LoLLMsCom):
|
||||
super().__init__(sio)
|
||||
self.app_name = app_name
|
||||
self.config = config
|
||||
ASCIIColors.warning(f"Configuration fix ")
|
||||
try:
|
||||
config.personalities = [p.split(":")[0] for p in config.personalities]
|
||||
config.save_config()
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
|
||||
self.lollms_paths = lollms_paths
|
||||
|
||||
# TODO : implement
|
||||
@ -691,10 +698,7 @@ class LollmsApplication(LoLLMsCom):
|
||||
self.n_cond_tk = len(self.cond_tk)
|
||||
ASCIIColors.success(f"Personality {personality.name} mounted successfully")
|
||||
else:
|
||||
if personality.selected_language is not None:
|
||||
ASCIIColors.success(f"Personality {personality.name} : {personality.selected_language} mounted successfully but no model is selected")
|
||||
else:
|
||||
ASCIIColors.success(f"Personality {personality.name} mounted successfully but no model is selected")
|
||||
ASCIIColors.success(f"Personality {personality.name} mounted successfully but no model is selected")
|
||||
except Exception as ex:
|
||||
ASCIIColors.error(f"Couldn't load personality. Please verify your configuration file at {self.lollms_paths.personal_configuration_path} or use the next menu to select a valid personality")
|
||||
ASCIIColors.error(f"Binding returned this exception : {ex}")
|
||||
@ -913,7 +917,7 @@ class LollmsApplication(LoLLMsCom):
|
||||
default_language = self.personality.language.lower().strip().split()[0]
|
||||
current_language = self.config.current_language.lower().strip().split()[0]
|
||||
|
||||
if self.config.current_language and current_language!= default_language:
|
||||
if current_language and current_language!= self.personality.language:
|
||||
language_path = self.lollms_paths.personal_configuration_path/"personalities"/self.personality.name/f"languages_{current_language}.yaml"
|
||||
if not language_path.exists():
|
||||
self.info(f"This is the first time this personality speaks {current_language}\nLollms is reconditionning the persona in that language.\nThis will be done just once. Next time, the personality will speak {current_language} out of the box")
|
||||
@ -926,7 +930,7 @@ class LollmsApplication(LoLLMsCom):
|
||||
else:
|
||||
with open(language_path,"r",encoding="utf-8", errors="ignore") as f:
|
||||
language_pack = yaml.safe_load(f)
|
||||
conditionning = language_pack["personality_conditioning"]
|
||||
conditionning = language_pack.get("personality_conditioning", language_pack.get("conditionning", self.personality.personality_conditioning))
|
||||
else:
|
||||
conditionning = self.personality._personality_conditioning
|
||||
|
||||
|
@ -1094,6 +1094,7 @@ Use this structure:
|
||||
# Load parameters from the configuration file
|
||||
self._version = config.get("version", self._version)
|
||||
self._author = config.get("author", self._author)
|
||||
self._language = config.get("language", self._author)
|
||||
self._name = config.get("name", self._name)
|
||||
self._creation_date = config.get("creation_date", self._creation_date)
|
||||
self._last_update_date = config.get("last_update_date", self._last_update_date)
|
||||
@ -1110,6 +1111,16 @@ Use this structure:
|
||||
self._personality_description = config.get("personality_description", self._personality_description)
|
||||
self._personality_conditioning = config.get("personality_conditioning", self._personality_conditioning)
|
||||
self._prompts_list = config.get("prompts_list", self._prompts_list)
|
||||
try:
|
||||
personality_folder = self.lollms_paths.personal_configuration_path/"personalities"/self.name
|
||||
personality_folder.mkdir(exist_ok=True, parents=True)
|
||||
custom_prompts = personality_folder/"custom_prompts.yaml"
|
||||
if custom_prompts.exists():
|
||||
with open(custom_prompts,"r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
self._prompts_list.append(data["custom_prompts"])
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
self._welcome_message = config.get("welcome_message", self._welcome_message)
|
||||
self._include_welcome_message_in_discussion = config.get("include_welcome_message_in_discussion", self._include_welcome_message_in_discussion)
|
||||
|
||||
@ -1129,7 +1140,53 @@ Use this structure:
|
||||
# Script parameters (for example keys to connect to search engine or any other usage)
|
||||
self._processor_cfg = config.get("processor_cfg", self._processor_cfg)
|
||||
|
||||
def add_prompt(self, prompt):
|
||||
try:
|
||||
personality_folder = self.lollms_paths.personal_configuration_path/"personalities"/self.name
|
||||
personality_folder.mkdir(exist_ok=True, parents=True)
|
||||
custom_prompts = personality_folder/"custom_prompts.yaml"
|
||||
if custom_prompts.exists():
|
||||
with open(custom_prompts,"r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
data["custom_prompts"].append(prompt)
|
||||
else:
|
||||
data = {
|
||||
"custom_prompts":[prompt]
|
||||
}
|
||||
with open(custom_prompts,"w") as f:
|
||||
yaml.dump(data, f)
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
|
||||
def delete_prompt(self, prompt):
|
||||
try:
|
||||
personality_folder = self.lollms_paths.personal_configuration_path/"personalities"/self.name
|
||||
personality_folder.mkdir(exist_ok=True, parents=True)
|
||||
custom_prompts = personality_folder/"custom_prompts.yaml"
|
||||
if custom_prompts.exists():
|
||||
with open(custom_prompts,"r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
index = data["custom_prompts"].index(prompt)
|
||||
if index>=0:
|
||||
del data["custom_prompts"][index]
|
||||
with open(custom_prompts,"w") as f:
|
||||
yaml.dump(data, f)
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
|
||||
def set_language(self, language):
|
||||
if self.default_language==language:
|
||||
package_path = self.personality_package_path
|
||||
|
||||
# Verify that there is at least a configuration file
|
||||
config_file = package_path / "config.yaml"
|
||||
if not config_file.exists():
|
||||
raise ValueError(f"The provided folder {package_path} does not exist.")
|
||||
|
||||
with open(config_file, "r", encoding='utf-8') as f:
|
||||
config = yaml.safe_load(f)
|
||||
self.set_config(config)
|
||||
return
|
||||
if self.language.lower().strip() and self.language.lower().strip()!= language:
|
||||
language_path = self.app.lollms_paths.personal_configuration_path/"personalities"/self.name/f"languages_{language}.yaml"
|
||||
if not language_path.exists():
|
||||
@ -1154,12 +1211,13 @@ Use this structure:
|
||||
raise ValueError(f"The provided folder {package_path} does not exist.")
|
||||
|
||||
with open(config_file, "r", encoding='utf-8') as f:
|
||||
default_config = f.read()
|
||||
default_config = yaml.safe_load(f)
|
||||
|
||||
# Translating
|
||||
new_config = self.generate_code(f"Translate the following yaml file values to {language}.\n```yaml\n{default_config}```\n")
|
||||
new_config = self.generate_code(f"Translate the following json file values to {language}. Use double quotes for the keys and strings. Do not translate the keys, just the values\n```json\n{default_config}```\n", max_continues=1)
|
||||
json_cfg = json.loads(new_config)
|
||||
with open(language_path,"w",encoding="utf-8", errors="ignore") as f:
|
||||
f.write(new_config)
|
||||
yaml.dump(json_cfg, f)
|
||||
with open(language_path,"r",encoding="utf-8", errors="ignore") as f:
|
||||
new_config = yaml.safe_load(f)
|
||||
self.set_config(new_config)
|
||||
@ -1170,9 +1228,12 @@ Use this structure:
|
||||
self.InfoMessage(f"Couldn't translate personality to {language}.\nThe model you are using may be unable to do this task. We'll switch to conditionning language insertion mode.")
|
||||
|
||||
else:
|
||||
with open(language_path,"r",encoding="utf-8", errors="ignore") as f:
|
||||
config = yaml.safe_load(f)
|
||||
self.set_config(config, False)
|
||||
try:
|
||||
with open(language_path,"r",encoding="utf-8", errors="ignore") as f:
|
||||
config = yaml.safe_load(f)
|
||||
self.set_config(config, False)
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
else:
|
||||
pass
|
||||
|
||||
@ -1215,7 +1276,7 @@ Use this structure:
|
||||
else:
|
||||
default_language = 'english'
|
||||
|
||||
current_language = self.config.current_language.lower().strip().split()[0]
|
||||
current_language = self.selected_language.lower().strip().split()[0]
|
||||
|
||||
if current_language and current_language!= default_language:
|
||||
language_path = self.app.lollms_paths.personal_configuration_path/"personalities"/config["name"]/f"languages_{current_language}.yaml"
|
||||
@ -1438,12 +1499,15 @@ Use this structure:
|
||||
if process:
|
||||
if self.vectorizer is None:
|
||||
if self.config.rag_vectorizer == "semantic":
|
||||
self.ShowBlockingMessage("Processing file\nPlease wait ...\nUsing semantic vectorizer")
|
||||
from lollmsvectordb.lollms_vectorizers.semantic_vectorizer import SemanticVectorizer
|
||||
v = SemanticVectorizer(self.config.rag_vectorizer_model)
|
||||
elif self.config.rag_vectorizer == "tfidf":
|
||||
self.ShowBlockingMessage("Processing file\nPlease wait ...\nUsing tfidf vectorizer")
|
||||
from lollmsvectordb.lollms_vectorizers.tfidf_vectorizer import TFIDFVectorizer
|
||||
v = TFIDFVectorizer()
|
||||
elif self.config.rag_vectorizer == "openai":
|
||||
self.ShowBlockingMessage("Processing file\nPlease wait ...\nUsing open ai vectorizer")
|
||||
from lollmsvectordb.lollms_vectorizers.openai_vectorizer import OpenAIVectorizer
|
||||
v = OpenAIVectorizer()
|
||||
|
||||
@ -1455,6 +1519,8 @@ Use this structure:
|
||||
overlap=self.config.rag_overlap
|
||||
)
|
||||
data = TextDocumentsLoader.read_file(path)
|
||||
if self.config.debug:
|
||||
self.print_prompt(data)
|
||||
self.vectorizer.add_document(path.stem, data, path, True)
|
||||
self.vectorizer.build_index()
|
||||
if callback is not None:
|
||||
@ -1463,8 +1529,10 @@ Use this structure:
|
||||
return True
|
||||
except Exception as e:
|
||||
trace_exception(e)
|
||||
self.InfoMessage(f"Unsupported file format or empty file.\nSupported formats are {GenericDataLoader.get_supported_file_types()}",client_id=client.client_id)
|
||||
self.InfoMessage(f"Unsupported file format or empty file.\nSupported formats are {TextDocumentsLoader.get_supported_file_types()}",client_id=client.client_id)
|
||||
return False
|
||||
|
||||
|
||||
def save_personality(self, package_path=None):
|
||||
"""
|
||||
Save the personality parameters to a YAML configuration file.
|
||||
@ -1494,8 +1562,7 @@ Use this structure:
|
||||
"last_update_date": self._last_update_date,
|
||||
"user_name": self._user_name,
|
||||
"category": self._category,
|
||||
"language": self._language,
|
||||
"default_language": self._default_language,
|
||||
"language": self._default_language,
|
||||
"supported_languages": self._supported_languages,
|
||||
"selected_language": self._selected_language,
|
||||
"ignore_discussion_documents_rag": self._ignore_discussion_documents_rag,
|
||||
@ -5145,13 +5212,7 @@ class PersonalityBuilder:
|
||||
if id>len(self.config["personalities"]):
|
||||
id = len(self.config["personalities"])-1
|
||||
|
||||
if ":" in self.config["personalities"][id]:
|
||||
elements = self.config["personalities"][id].split(":")
|
||||
personality_folder = elements[0]
|
||||
personality_language = elements[1]
|
||||
else:
|
||||
personality_folder = self.config["personalities"][id]
|
||||
personality_language = None
|
||||
personality_folder = self.config["personalities"][id]
|
||||
|
||||
if len(self.config["personalities"][id].split("/"))==2:
|
||||
self.personality = AIPersonality(
|
||||
@ -5160,7 +5221,7 @@ class PersonalityBuilder:
|
||||
self.config,
|
||||
self.model,
|
||||
app=self.app,
|
||||
selected_language=personality_language,
|
||||
selected_language=self.config.current_language,
|
||||
installation_option=self.installation_option,
|
||||
callback=self.callback
|
||||
)
|
||||
@ -5172,7 +5233,7 @@ class PersonalityBuilder:
|
||||
self.model,
|
||||
app=self.app,
|
||||
is_relative_path=False,
|
||||
selected_language=personality_language,
|
||||
selected_language=self.config.current_language,
|
||||
installation_option=self.installation_option,
|
||||
callback=self.callback
|
||||
)
|
||||
|
@ -61,6 +61,68 @@ def list_personalities(category:str):
|
||||
ASCIIColors.error(f"No personalities found. Using default one {ex}")
|
||||
return personalities
|
||||
|
||||
|
||||
@router.get("/get_personality")
|
||||
def get_personality():
|
||||
ASCIIColors.yellow("Getting current personality")
|
||||
personality = lollmsElfServer.personality
|
||||
|
||||
real_assets_path = lollmsElfServer.lollms_paths.personalities_zoo_path / personality.category / personality.name / 'assets'
|
||||
assets_path = Path("personalities") / personality.category / personality.name / 'assets'
|
||||
gif_logo_path = assets_path / 'logo.gif'
|
||||
webp_logo_path = assets_path / 'logo.webp'
|
||||
png_logo_path = assets_path / 'logo.png'
|
||||
jpg_logo_path = assets_path / 'logo.jpg'
|
||||
jpeg_logo_path = assets_path / 'logo.jpeg'
|
||||
svg_logo_path = assets_path / 'logo.svg'
|
||||
bmp_logo_path = assets_path / 'logo.bmp'
|
||||
|
||||
gif_logo_path_ = real_assets_path / 'logo.gif'
|
||||
webp_logo_path_ = real_assets_path / 'logo.webp'
|
||||
png_logo_path_ = real_assets_path / 'logo.png'
|
||||
jpg_logo_path_ = real_assets_path / 'logo.jpg'
|
||||
jpeg_logo_path_ = real_assets_path / 'logo.jpeg'
|
||||
svg_logo_path_ = real_assets_path / 'logo.svg'
|
||||
bmp_logo_path_ = real_assets_path / 'logo.bmp'
|
||||
|
||||
has_logo = png_logo_path.is_file() or gif_logo_path.is_file()
|
||||
|
||||
if gif_logo_path_.exists():
|
||||
avatar = str(gif_logo_path).replace("\\","/")
|
||||
elif webp_logo_path_.exists():
|
||||
avatar = str(webp_logo_path).replace("\\","/")
|
||||
elif png_logo_path_.exists():
|
||||
avatar = str(png_logo_path).replace("\\","/")
|
||||
elif jpg_logo_path_.exists():
|
||||
avatar = str(jpg_logo_path).replace("\\","/")
|
||||
elif jpeg_logo_path_.exists():
|
||||
avatar = str(jpeg_logo_path).replace("\\","/")
|
||||
elif svg_logo_path_.exists():
|
||||
avatar = str(svg_logo_path).replace("\\","/")
|
||||
elif bmp_logo_path_.exists():
|
||||
avatar = str(bmp_logo_path).replace("\\","/")
|
||||
else:
|
||||
avatar = ""
|
||||
personality = {
|
||||
"folder":personality.personality_folder_name,
|
||||
"has_scripts":personality.processor is not None,
|
||||
"name":personality.name,
|
||||
"description":personality.personality_description,
|
||||
"disclaimer":personality.disclaimer,
|
||||
"author":personality.author,
|
||||
"language":personality.language,
|
||||
"version":personality.version,
|
||||
"creation_date":personality.creation_date,
|
||||
"last_update_date":personality.last_update_date,
|
||||
"installed":True,
|
||||
"help":personality.help,
|
||||
"commands":personality.commands,
|
||||
"prompts_list":personality.prompts_list,
|
||||
"avatar":avatar,
|
||||
"has_logo":has_logo
|
||||
}
|
||||
return personality
|
||||
|
||||
@router.get("/get_all_personalities")
|
||||
def get_all_personalities():
|
||||
ASCIIColors.yellow("Listing all personalities")
|
||||
@ -73,82 +135,142 @@ def get_all_personalities():
|
||||
personalities[cat if category_folder!=lollmsElfServer.lollms_paths.custom_personalities_path else "custom_personalities"] = []
|
||||
for personality_folder in category_folder.iterdir():
|
||||
pers = personality_folder.stem
|
||||
if personality_folder.is_dir() and not personality_folder.stem.startswith('.'):
|
||||
personality_info = {"folder":personality_folder.stem}
|
||||
config_path = personality_folder / 'config.yaml'
|
||||
if not config_path.exists():
|
||||
"""
|
||||
if lollmsElfServer.personality.personality_folder_name==pers:
|
||||
personality = lollmsElfServer.personality
|
||||
|
||||
real_assets_path = lollmsElfServer.lollms_paths.personalities_zoo_path / personality.category / personality.name / 'assets'
|
||||
assets_path = Path("personalities") / personality.category / personality.name / 'assets'
|
||||
gif_logo_path = assets_path / 'logo.gif'
|
||||
webp_logo_path = assets_path / 'logo.webp'
|
||||
png_logo_path = assets_path / 'logo.png'
|
||||
jpg_logo_path = assets_path / 'logo.jpg'
|
||||
jpeg_logo_path = assets_path / 'logo.jpeg'
|
||||
svg_logo_path = assets_path / 'logo.svg'
|
||||
bmp_logo_path = assets_path / 'logo.bmp'
|
||||
|
||||
gif_logo_path_ = real_assets_path / 'logo.gif'
|
||||
webp_logo_path_ = real_assets_path / 'logo.webp'
|
||||
png_logo_path_ = real_assets_path / 'logo.png'
|
||||
jpg_logo_path_ = real_assets_path / 'logo.jpg'
|
||||
jpeg_logo_path_ = real_assets_path / 'logo.jpeg'
|
||||
svg_logo_path_ = real_assets_path / 'logo.svg'
|
||||
bmp_logo_path_ = real_assets_path / 'logo.bmp'
|
||||
|
||||
has_logo = png_logo_path.is_file() or gif_logo_path.is_file()
|
||||
|
||||
if gif_logo_path_.exists():
|
||||
avatar = str(gif_logo_path).replace("\\","/")
|
||||
elif webp_logo_path_.exists():
|
||||
avatar = str(webp_logo_path).replace("\\","/")
|
||||
elif png_logo_path_.exists():
|
||||
avatar = str(png_logo_path).replace("\\","/")
|
||||
elif jpg_logo_path_.exists():
|
||||
avatar = str(jpg_logo_path).replace("\\","/")
|
||||
elif jpeg_logo_path_.exists():
|
||||
avatar = str(jpeg_logo_path).replace("\\","/")
|
||||
elif svg_logo_path_.exists():
|
||||
avatar = str(svg_logo_path).replace("\\","/")
|
||||
elif bmp_logo_path_.exists():
|
||||
avatar = str(bmp_logo_path).replace("\\","/")
|
||||
else:
|
||||
avatar = ""
|
||||
personality = {
|
||||
"folder":personality.personality_folder_name,
|
||||
"has_scripts":personality.processor is not None,
|
||||
"name":personality.name,
|
||||
"description":personality.personality_description,
|
||||
"disclaimer":personality.disclaimer,
|
||||
"author":personality.author,
|
||||
"language":personality.language,
|
||||
"version":personality.version,
|
||||
"creation_date":personality.creation_date,
|
||||
"last_update_date":personality.last_update_date,
|
||||
"installed":True,
|
||||
"help":personality.help,
|
||||
"commands":personality.commands,
|
||||
"prompts_list":personality.prompts_list,
|
||||
"avatar":avatar,
|
||||
"has_logo":has_logo
|
||||
}
|
||||
personalities[cat if category_folder!=lollmsElfServer.lollms_paths.custom_personalities_path else "custom_personalities"].append(personality)
|
||||
else:
|
||||
if personality_folder.is_dir() and not personality_folder.stem.startswith('.'):
|
||||
personality_info = {"folder":personality_folder.stem}
|
||||
config_path = personality_folder / 'config.yaml'
|
||||
if not config_path.exists():
|
||||
"""
|
||||
try:
|
||||
shutil.rmtree(str(config_path.parent))
|
||||
ASCIIColors.warning(f"Deleted useless personality: {config_path.parent}")
|
||||
except Exception as ex:
|
||||
ASCIIColors.warning(f"Couldn't delete personality ({ex})")
|
||||
"""
|
||||
continue
|
||||
try:
|
||||
shutil.rmtree(str(config_path.parent))
|
||||
ASCIIColors.warning(f"Deleted useless personality: {config_path.parent}")
|
||||
except Exception as ex:
|
||||
ASCIIColors.warning(f"Couldn't delete personality ({ex})")
|
||||
"""
|
||||
continue
|
||||
try:
|
||||
scripts_path = personality_folder / 'scripts'
|
||||
personality_info['has_scripts'] = scripts_path.exists()
|
||||
with open(config_path, "r", encoding="utf8") as config_file:
|
||||
config_data = yaml.load(config_file, Loader=yaml.FullLoader)
|
||||
personality_info['name'] = config_data.get('name',"No Name")
|
||||
personality_info['description'] = config_data.get('personality_description',"")
|
||||
personality_info['disclaimer'] = config_data.get('disclaimer',"")
|
||||
personality_info['author'] = config_data.get('author', 'ParisNeo')
|
||||
personality_info['version'] = config_data.get('version', '1.0.0')
|
||||
personality_info['creation_date'] = config_data.get("creation_date",None)
|
||||
personality_info['last_update_date'] = config_data.get("last_update_date",None)
|
||||
personality_info['installed'] = (lollmsElfServer.lollms_paths.personal_configuration_path/f"personality_{personality_folder.stem}.yaml").exists() or personality_info['has_scripts']
|
||||
personality_info['help'] = config_data.get('help', '')
|
||||
personality_info['commands'] = config_data.get('commands', '')
|
||||
personality_info['prompts_list'] = config_data.get('prompts_list', [])
|
||||
languages_path = personality_folder/ 'languages'
|
||||
scripts_path = personality_folder / 'scripts'
|
||||
personality_info['has_scripts'] = scripts_path.exists()
|
||||
with open(config_path, "r", encoding="utf8") as config_file:
|
||||
config_data = yaml.load(config_file, Loader=yaml.FullLoader)
|
||||
personality_info['name'] = config_data.get('name',"No Name")
|
||||
personality_info['description'] = config_data.get('personality_description',"")
|
||||
personality_info['disclaimer'] = config_data.get('disclaimer',"")
|
||||
personality_info['author'] = config_data.get('author', 'ParisNeo')
|
||||
personality_info['language'] = config_data.get('language', 'english')
|
||||
personality_info['version'] = config_data.get('version', '1.0.0')
|
||||
personality_info['creation_date'] = config_data.get("creation_date",None)
|
||||
personality_info['last_update_date'] = config_data.get("last_update_date",None)
|
||||
personality_info['installed'] = (lollmsElfServer.lollms_paths.personal_configuration_path/f"personality_{personality_folder.stem}.yaml").exists() or personality_info['has_scripts']
|
||||
personality_info['help'] = config_data.get('help', '')
|
||||
personality_info['commands'] = config_data.get('commands', '')
|
||||
personality_info['prompts_list'] = config_data.get('prompts_list', [])
|
||||
languages_path = personality_folder/ 'languages'
|
||||
|
||||
real_assets_path = personality_folder/ 'assets'
|
||||
assets_path = Path("personalities") / cat / pers / 'assets'
|
||||
gif_logo_path = assets_path / 'logo.gif'
|
||||
webp_logo_path = assets_path / 'logo.webp'
|
||||
png_logo_path = assets_path / 'logo.png'
|
||||
jpg_logo_path = assets_path / 'logo.jpg'
|
||||
jpeg_logo_path = assets_path / 'logo.jpeg'
|
||||
svg_logo_path = assets_path / 'logo.svg'
|
||||
bmp_logo_path = assets_path / 'logo.bmp'
|
||||
real_assets_path = personality_folder/ 'assets'
|
||||
assets_path = Path("personalities") / cat / pers / 'assets'
|
||||
gif_logo_path = assets_path / 'logo.gif'
|
||||
webp_logo_path = assets_path / 'logo.webp'
|
||||
png_logo_path = assets_path / 'logo.png'
|
||||
jpg_logo_path = assets_path / 'logo.jpg'
|
||||
jpeg_logo_path = assets_path / 'logo.jpeg'
|
||||
svg_logo_path = assets_path / 'logo.svg'
|
||||
bmp_logo_path = assets_path / 'logo.bmp'
|
||||
|
||||
gif_logo_path_ = real_assets_path / 'logo.gif'
|
||||
webp_logo_path_ = real_assets_path / 'logo.webp'
|
||||
png_logo_path_ = real_assets_path / 'logo.png'
|
||||
jpg_logo_path_ = real_assets_path / 'logo.jpg'
|
||||
jpeg_logo_path_ = real_assets_path / 'logo.jpeg'
|
||||
svg_logo_path_ = real_assets_path / 'logo.svg'
|
||||
bmp_logo_path_ = real_assets_path / 'logo.bmp'
|
||||
gif_logo_path_ = real_assets_path / 'logo.gif'
|
||||
webp_logo_path_ = real_assets_path / 'logo.webp'
|
||||
png_logo_path_ = real_assets_path / 'logo.png'
|
||||
jpg_logo_path_ = real_assets_path / 'logo.jpg'
|
||||
jpeg_logo_path_ = real_assets_path / 'logo.jpeg'
|
||||
svg_logo_path_ = real_assets_path / 'logo.svg'
|
||||
bmp_logo_path_ = real_assets_path / 'logo.bmp'
|
||||
|
||||
if languages_path.exists():
|
||||
personality_info['languages']= [""]+[f.stem for f in languages_path.iterdir() if f.suffix==".yaml"]
|
||||
else:
|
||||
personality_info['languages']=None
|
||||
if languages_path.exists():
|
||||
personality_info['languages']= [""]+[f.stem for f in languages_path.iterdir() if f.suffix==".yaml"]
|
||||
else:
|
||||
personality_info['languages']=None
|
||||
|
||||
personality_info['has_logo'] = png_logo_path.is_file() or gif_logo_path.is_file()
|
||||
|
||||
personality_info['has_logo'] = png_logo_path.is_file() or gif_logo_path.is_file()
|
||||
|
||||
if gif_logo_path_.exists():
|
||||
personality_info['avatar'] = str(gif_logo_path).replace("\\","/")
|
||||
elif webp_logo_path_.exists():
|
||||
personality_info['avatar'] = str(webp_logo_path).replace("\\","/")
|
||||
elif png_logo_path_.exists():
|
||||
personality_info['avatar'] = str(png_logo_path).replace("\\","/")
|
||||
elif jpg_logo_path_.exists():
|
||||
personality_info['avatar'] = str(jpg_logo_path).replace("\\","/")
|
||||
elif jpeg_logo_path_.exists():
|
||||
personality_info['avatar'] = str(jpeg_logo_path).replace("\\","/")
|
||||
elif svg_logo_path_.exists():
|
||||
personality_info['avatar'] = str(svg_logo_path).replace("\\","/")
|
||||
elif bmp_logo_path_.exists():
|
||||
personality_info['avatar'] = str(bmp_logo_path).replace("\\","/")
|
||||
else:
|
||||
personality_info['avatar'] = ""
|
||||
|
||||
personalities[cat if category_folder!=lollmsElfServer.lollms_paths.custom_personalities_path else "custom_personalities"].append(personality_info)
|
||||
except Exception as ex:
|
||||
ASCIIColors.warning(f"Couldn't load personality from {personality_folder} [{ex}]")
|
||||
trace_exception(ex)
|
||||
if gif_logo_path_.exists():
|
||||
personality_info['avatar'] = str(gif_logo_path).replace("\\","/")
|
||||
elif webp_logo_path_.exists():
|
||||
personality_info['avatar'] = str(webp_logo_path).replace("\\","/")
|
||||
elif png_logo_path_.exists():
|
||||
personality_info['avatar'] = str(png_logo_path).replace("\\","/")
|
||||
elif jpg_logo_path_.exists():
|
||||
personality_info['avatar'] = str(jpg_logo_path).replace("\\","/")
|
||||
elif jpeg_logo_path_.exists():
|
||||
personality_info['avatar'] = str(jpeg_logo_path).replace("\\","/")
|
||||
elif svg_logo_path_.exists():
|
||||
personality_info['avatar'] = str(svg_logo_path).replace("\\","/")
|
||||
elif bmp_logo_path_.exists():
|
||||
personality_info['avatar'] = str(bmp_logo_path).replace("\\","/")
|
||||
else:
|
||||
personality_info['avatar'] = ""
|
||||
|
||||
personalities[cat if category_folder!=lollmsElfServer.lollms_paths.custom_personalities_path else "custom_personalities"].append(personality_info)
|
||||
except Exception as ex:
|
||||
ASCIIColors.warning(f"Couldn't load personality from {personality_folder} [{ex}]")
|
||||
trace_exception(ex)
|
||||
ASCIIColors.green("OK")
|
||||
|
||||
return personalities
|
||||
@ -395,7 +517,6 @@ def mount_personality(data:PersonalityMountingInfos):
|
||||
print("- Mounting personality")
|
||||
category = sanitize_path(data.category)
|
||||
name = sanitize_path(data.folder)
|
||||
language = data.language #.get('language', None)
|
||||
if category=="":
|
||||
return {"status":False, "error":"category must not be empty."}
|
||||
|
||||
@ -407,8 +528,6 @@ def mount_personality(data:PersonalityMountingInfos):
|
||||
|
||||
config_file = package_full_path / "config.yaml"
|
||||
if config_file.exists():
|
||||
if language:
|
||||
package_path += ":" + language
|
||||
"""
|
||||
if package_path in lollmsElfServer.config["personalities"]:
|
||||
ASCIIColors.error("Can't mount exact same personality twice")
|
||||
@ -513,7 +632,7 @@ def unmount_personality(data:PersonalityMountingInfos):
|
||||
return {"status":False, "error":"category must not be empty."}
|
||||
|
||||
try:
|
||||
personality_id = f"{category}/{name}" if language is None or language=="" else f"{category}/{name}:{language}"
|
||||
personality_id = f"{category}/{name}" if language is None or language=="" else f"{category}/{name}"
|
||||
index = lollmsElfServer.config["personalities"].index(personality_id)
|
||||
lollmsElfServer.config["personalities"].remove(personality_id)
|
||||
if lollmsElfServer.config["active_personality_id"]>=index:
|
||||
@ -540,7 +659,7 @@ def unmount_personality(data:PersonalityMountingInfos):
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
if language:
|
||||
ASCIIColors.error(f"nok : Personality not found @ {category}/{name}:{language}")
|
||||
ASCIIColors.error(f"nok : Personality not found @ {category}/{name}")
|
||||
else:
|
||||
ASCIIColors.error(f"nok : Personality not found @ {category}/{name}")
|
||||
|
||||
|
@ -342,7 +342,7 @@ class MainMenu(Menu):
|
||||
choice = self.show_menu(languages)
|
||||
if 1 <= choice <= len(languages):
|
||||
language = languages[choice - 1]
|
||||
self.lollms_app.config["personalities"].append(f"{category}/{name}:{language}")
|
||||
self.lollms_app.config["personalities"].append(f"{category}/{name}")
|
||||
else:
|
||||
print("Invalid choice!")
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user