mirror of
https://github.com/ParisNeo/lollms.git
synced 2025-04-08 19:34:13 +00:00
Added personality localization
This commit is contained in:
parent
67abfab9c5
commit
41dd0cbe31
@ -58,6 +58,7 @@ class LollmsApplication:
|
||||
else:
|
||||
if load_binding:
|
||||
try:
|
||||
ASCIIColors.info(f">Loading binding {self.config.binding_name}. Please wait ...")
|
||||
self.binding = self.load_binding()
|
||||
except Exception as ex:
|
||||
ASCIIColors.error(f"Failed to load binding.\nReturned exception: {ex}")
|
||||
@ -74,7 +75,11 @@ class LollmsApplication:
|
||||
|
||||
if self.config.model_name is not None:
|
||||
try:
|
||||
ASCIIColors.info(f">Loading model {self.config.model_name}. Please wait ...")
|
||||
self.model = self.load_model()
|
||||
if self.model is not None:
|
||||
ASCIIColors.success(f"Model {self.config.model_name} loaded successfully.")
|
||||
|
||||
except Exception as ex:
|
||||
ASCIIColors.error(f"Failed to load model.\nReturned exception: {ex}")
|
||||
trace_exception(ex)
|
||||
@ -125,8 +130,10 @@ class LollmsApplication:
|
||||
self.n_cond_tk = len(self.cond_tk)
|
||||
ASCIIColors.success(f"Personality {personality.name} mounted successfully")
|
||||
else:
|
||||
ASCIIColors.success(f"Personality {personality.name} mounted successfully but no model is selected")
|
||||
|
||||
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")
|
||||
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}")
|
||||
@ -178,7 +185,7 @@ class LollmsApplication:
|
||||
def select_personality(self, id:int):
|
||||
if id<len(self.config.personalities):
|
||||
self.config.active_personality_id = id
|
||||
self.personality = self.mount_personalities[id]
|
||||
self.personality = self.mounted_personalities[id]
|
||||
self.config.save_config()
|
||||
return True
|
||||
else:
|
||||
|
@ -319,6 +319,8 @@ def main():
|
||||
ASCIIColors.success("Couldn't reset LOLLMS configuration")
|
||||
if args.show_time_elapsed:
|
||||
show_time_elapsed = True
|
||||
else:
|
||||
show_time_elapsed = False
|
||||
|
||||
# Parse the command-line arguments
|
||||
args = parser.parse_args()
|
||||
|
@ -44,9 +44,7 @@ def install_package(package_name):
|
||||
|
||||
class AIPersonality:
|
||||
|
||||
# Extra
|
||||
|
||||
|
||||
# Extra
|
||||
def __init__(
|
||||
self,
|
||||
personality_package_path: str|Path,
|
||||
@ -54,6 +52,7 @@ class AIPersonality:
|
||||
config:LOLLMSConfig,
|
||||
model:LLMBinding=None,
|
||||
run_scripts=True,
|
||||
selected_language=None,
|
||||
is_relative_path=True,
|
||||
installation_option:InstallOption=InstallOption.INSTALL_IF_NECESSARY,
|
||||
callback: Callable[[str, int, dict], bool]=None
|
||||
@ -87,6 +86,8 @@ class AIPersonality:
|
||||
self._name: str = "lollms"
|
||||
self._user_name: str = "user"
|
||||
self._category: str = "General"
|
||||
self._supported_languages: str = []
|
||||
self._selected_language: str = selected_language
|
||||
|
||||
# Conditionning
|
||||
self._personality_description: str = "This personality is a helpful and Kind AI ready to help you solve your problems"
|
||||
@ -194,6 +195,19 @@ Date: {{date}}
|
||||
else:
|
||||
self._secret_cfg = None
|
||||
|
||||
languages = package_path / "languages"
|
||||
|
||||
if languages.exists():
|
||||
self._supported_languages = []
|
||||
for lang in [l for l in languages.iterdir()]:
|
||||
self._supported_languages.append(lang.stem)
|
||||
|
||||
if self._selected_language is not None and self._selected_language in self._supported_languages:
|
||||
config_file = languages / (self._selected_language+".yaml")
|
||||
with open(config_file, "r", encoding='utf-8') as f:
|
||||
config = yaml.safe_load(f)
|
||||
|
||||
|
||||
|
||||
# Load parameters from the configuration file
|
||||
self._version = config.get("version", self._version)
|
||||
@ -201,6 +215,7 @@ Date: {{date}}
|
||||
self._name = config.get("name", self._name)
|
||||
self._user_name = config.get("user_name", self._user_name)
|
||||
self._category = config.get("category", self._category)
|
||||
|
||||
self._personality_description = config.get("personality_description", self._personality_description)
|
||||
self._personality_conditioning = config.get("personality_conditioning", self._personality_conditioning)
|
||||
self._welcome_message = config.get("welcome_message", self._welcome_message)
|
||||
@ -293,6 +308,8 @@ Date: {{date}}
|
||||
"name": self._name,
|
||||
"user_name": self._user_name,
|
||||
"category": self._category,
|
||||
"supported_languages": self._supported_languages,
|
||||
"selected_language": self._selected_language,
|
||||
"personality_description": self._personality_description,
|
||||
"personality_conditioning": self._personality_conditioning,
|
||||
"welcome_message": self._welcome_message,
|
||||
@ -332,6 +349,8 @@ Date: {{date}}
|
||||
"name": self._name,
|
||||
"user_name": self._user_name,
|
||||
"category": self._category,
|
||||
"supported_languages": self._supported_languages,
|
||||
"selected_language": self._selected_language,
|
||||
"personality_description": self._personality_description,
|
||||
"personality_conditioning": self._personality_conditioning,
|
||||
"welcome_message": self._welcome_message,
|
||||
@ -424,6 +443,28 @@ Date: {{date}}
|
||||
"""Set the category."""
|
||||
self._category = value
|
||||
|
||||
|
||||
@property
|
||||
def supported_languages(self) -> str:
|
||||
"""Get the supported_languages."""
|
||||
return self._supported_languages
|
||||
|
||||
@supported_languages.setter
|
||||
def supported_languages(self, value: str):
|
||||
"""Set the supported_languages."""
|
||||
self._supported_languages = value
|
||||
|
||||
|
||||
@property
|
||||
def selected_language(self) -> str:
|
||||
"""Get the selected_language."""
|
||||
return self._selected_language
|
||||
|
||||
@selected_language.setter
|
||||
def selected_language(self, value: str):
|
||||
"""Set the selected_language."""
|
||||
self._selected_language = value
|
||||
|
||||
@property
|
||||
def personality_description(self) -> str:
|
||||
"""
|
||||
@ -1371,22 +1412,33 @@ class PersonalityBuilder:
|
||||
else:
|
||||
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
|
||||
|
||||
if len(self.config["personalities"][id].split("/"))==2:
|
||||
self.personality = AIPersonality(
|
||||
self.lollms_paths.personalities_zoo_path / self.config["personalities"][id],
|
||||
self.lollms_paths.personalities_zoo_path / personality_folder,
|
||||
self.lollms_paths,
|
||||
self.config,
|
||||
self.model,
|
||||
selected_language=personality_language,
|
||||
installation_option=self.installation_option,
|
||||
callback=self.callback
|
||||
)
|
||||
else:
|
||||
self.personality = AIPersonality(
|
||||
self.config["personalities"][id],
|
||||
personality_folder,
|
||||
self.lollms_paths,
|
||||
self.config,
|
||||
self.model,
|
||||
is_relative_path=False,
|
||||
selected_language=personality_language,
|
||||
installation_option=self.installation_option,
|
||||
callback=self.callback
|
||||
)
|
||||
|
@ -310,7 +310,18 @@ class MainMenu(Menu):
|
||||
if 1 <= choice <= len(personality_names)-1:
|
||||
name = personality_names[choice - 1]
|
||||
print(f"You selected personality: {ASCIIColors.color_green}{name}{ASCIIColors.color_reset}")
|
||||
self.lollms_app.config["personalities"].append(f"{category}/{name}")
|
||||
langs_dir = self.lollms_app.lollms_paths.personalities_zoo_path/category/name/"languages"
|
||||
if langs_dir.exists():
|
||||
langs = [f.stem for f in langs_dir.iterdir()]
|
||||
print("Select language")
|
||||
choice = self.show_menu(langs)
|
||||
if 1 <= choice <= len(langs):
|
||||
lang = langs[choice - 1]
|
||||
self.lollms_app.config["personalities"].append(f"{category}/{name}:{lang}")
|
||||
else:
|
||||
print("Invalid choice!")
|
||||
else:
|
||||
self.lollms_app.config["personalities"].append(f"{category}/{name}")
|
||||
self.lollms_app.mount_personality(len(self.lollms_app.config["personalities"])-1, callback = self.callback)
|
||||
self.lollms_app.config.save_config()
|
||||
print("Personality mounted successfully!")
|
||||
@ -351,8 +362,10 @@ class MainMenu(Menu):
|
||||
choice = int(self.show_menu(entries, self.lollms_app.config['active_personality_id']))-1
|
||||
if choice<len(entries)-1:
|
||||
self.lollms_app.select_personality(choice)
|
||||
ASCIIColors.success(f"Selected personality: {self.personality.name}")
|
||||
except Exception as ex:
|
||||
ASCIIColors.error(f"Couldn't set personality.\nGot this exception:{ex}")
|
||||
trace_exception(ex)
|
||||
|
||||
def reinstall_binding(self):
|
||||
lollms_app = self.lollms_app
|
||||
|
Loading…
x
Reference in New Issue
Block a user