diff options
Diffstat (limited to 'autogpt/core/ability/simple.py')
-rw-r--r-- | autogpt/core/ability/simple.py | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/autogpt/core/ability/simple.py b/autogpt/core/ability/simple.py deleted file mode 100644 index 459a8f13b..000000000 --- a/autogpt/core/ability/simple.py +++ /dev/null @@ -1,96 +0,0 @@ -import logging - -from autogpt.core.ability.base import Ability, AbilityConfiguration, AbilityRegistry -from autogpt.core.ability.builtins import BUILTIN_ABILITIES -from autogpt.core.ability.schema import AbilityResult -from autogpt.core.configuration import Configurable, SystemConfiguration, SystemSettings -from autogpt.core.memory.base import Memory -from autogpt.core.plugin.simple import SimplePluginService -from autogpt.core.resource.model_providers import ( - LanguageModelProvider, - ModelProviderName, -) -from autogpt.core.workspace.base import Workspace - - -class AbilityRegistryConfiguration(SystemConfiguration): - """Configuration for the AbilityRegistry subsystem.""" - - abilities: dict[str, AbilityConfiguration] - - -class AbilityRegistrySettings(SystemSettings): - configuration: AbilityRegistryConfiguration - - -class SimpleAbilityRegistry(AbilityRegistry, Configurable): - default_settings = AbilityRegistrySettings( - name="simple_ability_registry", - description="A simple ability registry.", - configuration=AbilityRegistryConfiguration( - abilities={ - ability_name: ability.default_configuration - for ability_name, ability in BUILTIN_ABILITIES.items() - }, - ), - ) - - def __init__( - self, - settings: AbilityRegistrySettings, - logger: logging.Logger, - memory: Memory, - workspace: Workspace, - model_providers: dict[ModelProviderName, LanguageModelProvider], - ): - self._configuration = settings.configuration - self._logger = logger - self._memory = memory - self._workspace = workspace - self._model_providers = model_providers - self._abilities = [] - for ( - ability_name, - ability_configuration, - ) in self._configuration.abilities.items(): - self.register_ability(ability_name, ability_configuration) - - def register_ability( - self, ability_name: str, ability_configuration: AbilityConfiguration - ) -> None: - ability_class = SimplePluginService.get_plugin(ability_configuration.location) - ability_args = { - "logger": self._logger.getChild(ability_name), - "configuration": ability_configuration, - } - if ability_configuration.packages_required: - # TODO: Check packages are installed and maybe install them. - pass - if ability_configuration.memory_provider_required: - ability_args["memory"] = self._memory - if ability_configuration.workspace_required: - ability_args["workspace"] = self._workspace - if ability_configuration.language_model_required: - ability_args["language_model_provider"] = self._model_providers[ - ability_configuration.language_model_required.provider_name - ] - ability = ability_class(**ability_args) - self._abilities.append(ability) - - def list_abilities(self) -> list[str]: - return [ - f"{ability.name()}: {ability.description()}" for ability in self._abilities - ] - - def dump_abilities(self) -> list[dict]: - return [ability.dump() for ability in self._abilities] - - def get_ability(self, ability_name: str) -> Ability: - for ability in self._abilities: - if ability.name() == ability_name: - return ability - raise ValueError(f"Ability '{ability_name}' not found.") - - async def perform(self, ability_name: str, **kwargs) -> AbilityResult: - ability = self.get_ability(ability_name) - return await ability(**kwargs) |