framework code has been completed basicly. Through the use of aios_shell, we are now able to get agents run able (at openai compute node)

This commit is contained in:
Liu Zhicong
2023-08-27 18:07:33 -07:00
parent 1a6cf1ad7a
commit ccbef2104b
25 changed files with 1011 additions and 198 deletions
+1 -3
View File
@@ -1,3 +1 @@
from .agent_manager import AgentManager,AgentManagerClient
from .agent import ai_agent
from .templete import ai_agent_templete
from .agent_manager import AgentManager
+31 -9
View File
@@ -22,13 +22,13 @@ class AgentManager:
def initial(self,root_dir:str) -> None:
self.agent_templete_env : PackageEnv = PackageEnvManager().get_env(f"{root_dir}templetes/agent_templetes.cfg")
self.agent_templete_env : PackageEnv = PackageEnvManager().get_env(f"{root_dir}templetes/templetes.cfg")
self.agent_env : PackageEnv = PackageEnvManager().get_env(f"{root_dir}agents/agents.cfg")
if self.agent_templete_env is None:
raise Exception("agent_manager initial failed")
def get(self,agent_id:str) -> AIAgent:
async def get(self,agent_id:str) -> AIAgent:
the_agent = self.loaded_agent_instance.get(agent_id)
if the_agent:
return the_agent
@@ -38,17 +38,17 @@ class AgentManager:
if agent_media_info is None:
return None
the_agent : AIAgent = self._load_agent_from_media(agent_media_info)
the_agent : AIAgent = await self._load_agent_from_media(agent_media_info)
if the_agent is None:
logger.warn(f"load agent {agent_id} from media failed!")
else:
the_agent.start()
return the_agent
def remove(self,agent_id:str)->int:
pass
def get_templete(self,templete_id) -> AIAgentTemplete:
async def get_templete(self,templete_id) -> AIAgentTemplete:
template_media_info = self.agent_templete_env.get(templete_id)
if template_media_info is None:
return None
@@ -61,11 +61,33 @@ class AgentManager:
def uninstall(self,templete_id) -> int:
pass
def _load_templete_from_media(self,templete_media:PackageMediaInfo) -> AIAgentTemplete:
async def _load_templete_from_media(self,templete_media:PackageMediaInfo) -> AIAgentTemplete:
pass
def _load_agent_from_media(self,agent_media:PackageMediaInfo) -> AIAgent:
pass
async def _load_agent_from_media(self,agent_media:PackageMediaInfo) -> AIAgent:
reader = self.agent_env._create_media_loader(agent_media)
if reader is None:
logger.error(f"create media loader for {agent_media} failed!")
return None
try:
config_file = await reader.read("agent.toml","r")
if config_file is None:
logger.error(f"read agent config from {agent_media} failed!")
return None
config_data = await config_file.read()
config = toml.loads(config_data)
result_agent = AIAgent()
if result_agent.load_from_config(config) is False:
logger.error(f"load agent from {agent_media} failed!")
return None
return result_agent
except Exception as e:
logger.error(f"read agent.toml cfg from {agent_media} failed! unexpected error occurred: {str(e)}")
return None
def create(self,template,agent_name,agent_last_name,agent_introduce) -> AIAgent:
pass