|
class Skill: |
|
name = 'base skill' |
|
description = 'This is the base skill.' |
|
api_keys_required = [] |
|
|
|
def __init__(self, api_keys): |
|
self.api_keys = api_keys |
|
missing_keys = self.check_required_keys(api_keys) |
|
if missing_keys: |
|
print(f"Missing API keys for {self.name}: {missing_keys}") |
|
self.valid = False |
|
else: |
|
self.valid = True |
|
for key in self.api_keys_required: |
|
if isinstance(key, list): |
|
for subkey in key: |
|
if subkey in api_keys: |
|
setattr(self, f"{subkey}_api_key", api_keys.get(subkey)) |
|
elif key in api_keys: |
|
setattr(self, f"{key}_api_key", api_keys.get(key)) |
|
|
|
def check_required_keys(self, api_keys): |
|
missing_keys = [] |
|
for key in self.api_keys_required: |
|
if isinstance(key, list): |
|
if not any(k in api_keys for k in key): |
|
missing_keys.append(key) |
|
elif key not in api_keys: |
|
missing_keys.append(key) |
|
return missing_keys |
|
|
|
def execute(self, params, dependent_task_outputs, objective): |
|
raise NotImplementedError('Execute method must be implemented in subclass.') |