diff --git a/README.md b/README.md index d39008c..3623730 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,11 @@ pip install ovos-persona ### Configuring Personas -Personas are loaded from configuration files, which can either be directly provided by plugins or user-defined JSON files. +Personas are loaded from configuration files, which can either be [directly provided by plugins](https://github.com/OpenVoiceOS/ovos-solver-openai-persona-plugin/pull/12) or user-defined JSON files. By default, personas are loaded from the XDG configuration directory, just create .json files under `~/.config/ovos_persona` -Personas are mainly defined via [solver plugins](https://openvoiceos.github.io/ovos-technical-manual/solvers/), each plugin is tried by order until one provides an answer +Personas work via [solver plugins](https://openvoiceos.github.io/ovos-technical-manual/solvers/), each plugin is tried by order until one provides an answer Find solver plugins [here](https://github.com/OpenVoiceOS?q=solver&type=all), some solvers may also use other solvers internally, such as a [MOS (Mixture Of Solvers)](https://github.com/TigreGotico/ovos-MoS) diff --git a/ovos_persona/__init__.py b/ovos_persona/__init__.py index 55153c7..70c44d2 100644 --- a/ovos_persona/__init__.py +++ b/ovos_persona/__init__.py @@ -117,11 +117,6 @@ def default_persona(self) -> Optional[str]: def load_personas(self, personas_path: Optional[str] = None): personas_path = personas_path or get_xdg_config_save_path("ovos_persona") LOG.info(f"Personas path: {personas_path}") - # load personas provided by packages - for name, persona in find_persona_plugins().items(): - if name in self.blacklist: - continue - self.personas[name] = Persona(name, persona) # load user defined personas os.makedirs(personas_path, exist_ok=True) @@ -133,6 +128,17 @@ def load_personas(self, personas_path: Optional[str] = None): continue with open(f"{personas_path}/{p}") as f: persona = json.load(f) + LOG.info(f"Found persona (user defined): {name}") + self.personas[name] = Persona(name, persona) + + # load personas provided by packages + for name, persona in find_persona_plugins().items(): + if name in self.blacklist: + continue + if name in self.personas: + LOG.info(f"Ignoring persona (provided via plugin): {name}") + continue + LOG.info(f"Found persona (provided via plugin): {name}") self.personas[name] = Persona(name, persona) def register_persona(self, name, persona): @@ -306,8 +312,7 @@ def handle_persona_release(self, message): if __name__ == "__main__": - b = PersonaService(FakeBus(), - config={"personas_path": "/home/miro/PycharmProjects/ovos-persona/personas"}) + b = PersonaService(FakeBus()) print(b.personas) print(b.match_low(["what is the speed of light"]))