1.Can use aios_shell from new jarvis telgram bot right now

2.Update MVP plan2.md
3.Refactor function support
This commit is contained in:
Liu Zhicong
2023-09-10 12:01:45 -07:00
parent 15dd600fdb
commit 6b45cb9570
7 changed files with 782 additions and 11 deletions
+45 -8
View File
@@ -1,25 +1,62 @@
from abc import ABC, abstractmethod
from typing import Dict
class AIFunction:
def __init__(self) -> None:
self.intro : str = None
def load_from_config(self,config:dict) -> bool:
@abstractmethod
def get_name(self) -> str:
"""
return the name of the function (should be snake case)
"""
pass
@abstractmethod
def get_description(self) -> str:
"""
return a detailed description of what the function does
"""
pass
@abstractmethod
def get_parameters(self) -> Dict:
"""
Return the list of parameters to execute this function in the form of
JSON schema as specified in the OpenAI documentation:
https://platform.openai.com/docs/api-reference/chat/create#chat/create-parameters
"""
pass
@abstractmethod
def execute(self, **kwargs) -> Dict:
"""
Execute the function and return a JSON serializable dict.
The parameters are passed in the form of kwargs
"""
pass
@abstractmethod
def is_local(self) -> bool:
"""
is this function call need network?
"""
pass
@abstractmethod
def is_in_zone(self) -> bool:
pass
def is_readyonly(self) -> bool:
"""
is this function call in Lan?
"""
pass
def get_intro(self) -> str:
return self.intro
async def execute(self):
@abstractmethod
def is_ready_only(self) -> bool:
pass
#def load_from_config(self,config:dict) -> bool:
# pass
# call chain is a combination of ai_function,group of ai_function.
class CallChain:
def __init__(self) -> None:
+7 -1
View File
@@ -48,6 +48,12 @@ class Environment:
def _do_get_value(self,key:str) -> Optional[str]:
pass
def get_functions(self):
# system functions
# env functions
# user install functions
pass
def register_get_handler(self,key:str,handler:Callable) -> None:
h = self.get_handlers.get(key)
if h is not None:
@@ -78,7 +84,7 @@ class Environment:
for handler in handler_list:
await handler(self.env_id,event)
else:
logger.warn(f"fire event {event_id} in env {self.env_id}:handler not found")
logger.debug(f"fire event {event_id} in env {self.env_id}:handler not found")
return
def __getitem__(self, key):
+4 -2
View File
@@ -1,4 +1,3 @@
import logging
import asyncio
import json
@@ -412,7 +411,10 @@ class Workflow:
def _get_function_prompt(self,role_name:str) -> AgentPrompt:
pass
# system functions
# env functions
# user install functions
pass
def _get_knowlege_prompt(self,role_name:str) -> AgentPrompt:
pass
+3
View File
@@ -134,3 +134,6 @@ class WorkflowEnvironment(Environment):
except Error as e:
logging.error(f"Error occurred while update env{self.env_id}.{key} ,error:{e}")
def get_functions(self):
pass