Refactor the code directory structure to better suit the current complexity

This commit is contained in:
Liu Zhicong
2023-11-30 21:04:19 -08:00
parent 4955225ecd
commit adeca91e0a
99 changed files with 391 additions and 342 deletions
+32
View File
@@ -0,0 +1,32 @@
from .proto.agent_msg import *
from .proto.compute_task import *
from .agent.agent_base import AgentPrompt,CustomAIAgent
from .agent.chatsession import AIChatSession
from .agent.agent import AIAgent,AIAgentTemplete, BaseAIAgent
from .agent.role import AIRole,AIRoleGroup
from .agent.workflow import Workflow
from .agent.ai_function import SimpleAIFunction
from .frame.compute_kernel import ComputeKernel,ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskType
from .frame.compute_node import ComputeNode,LocalComputeNode
from .frame.bus import AIBus
from .frame.tunnel import AgentTunnel
from .frame.contact_manager import ContactManager,Contact,FamilyMember
from .frame.queue_compute_node import Queue_ComputeNode
from .environment.environment import Environment,EnvironmentEvent
from .environment.workflow_env import WorkflowEnvironment,CalenderEnvironment,CalenderEvent,PaintEnvironment
from .environment.text_to_speech_function import TextToSpeechFunction
from .environment.image_2_text_function import Image2TextFunction
from .environment.workspace_env import ShellEnvironment,WorkspaceEnvironment
from .storage.storage import ResourceLocation,AIStorage,UserConfig,UserConfigItem
from .net import *
from .knowledge import *
from .package_manager import *
AIOS_Version = "0.5.2, build 2023-11-30"
@@ -12,20 +12,21 @@ import datetime
import copy
import sys
from .agent_base import AgentMsg, AgentMsgStatus, AgentMsgType, FunctionItem, LLMResult, AgentPrompt, AgentReport, \
AgentTodo, AgentTodoResult, AgentWorkLog, BaseAIAgent
from ..proto.agent_msg import AgentMsg
from ..proto.compute_task import ComputeTaskResult,ComputeTaskResultCode
from .chatsession import AIChatSession
from .compute_task import ComputeTaskResult,ComputeTaskResultCode
from .ai_function import AIFunction
from .environment import Environment
from .contact_manager import ContactManager,Contact,FamilyMember
from .compute_kernel import ComputeKernel
from .bus import AIBus
from .workspace_env import WorkspaceEnvironment
from .storage import AIStorage
from .agent_base import *
from .chatsession import *
from .ai_function import *
from knowledge import *
from ..frame.contact_manager import ContactManager,Contact,FamilyMember
from ..frame.compute_kernel import ComputeKernel
from ..frame.bus import AIBus
from ..environment.environment import *
from ..environment.workspace_env import WorkspaceEnvironment
from ..storage.storage import AIStorage
from ..knowledge import *
logger = logging.getLogger(__name__)
@@ -12,170 +12,13 @@ import json
from typing import List
from .ai_function import FunctionItem, AIFunction
from .compute_task import ComputeTaskResult,ComputeTaskResultCode
from .environment import Environment
from ..proto.agent_msg import AgentMsg, AgentMsgType
from ..proto.compute_task import ComputeTaskResult,ComputeTaskResultCode
from ..environment.environment import Environment
logger = logging.getLogger(__name__)
class AgentMsgType(Enum):
TYPE_MSG = 0
TYPE_GROUPMSG = 1
TYPE_INTERNAL_CALL = 10
TYPE_ACTION = 20
TYPE_EVENT = 30
TYPE_SYSTEM = 40
class AgentMsgStatus(Enum):
RESPONSED = 0
INIT = 1
SENDING = 2
PROCESSING = 3
ERROR = 4
RECVED = 5
EXECUTED = 6
# msg is a msg / msg resp
# msg body可以有内容类型(MIME标签),text, image, voice, video, file,以及富文本(html)
# msg is a inner function call with result
# msg is a Action with result
# qutoe Msg
# forword msg
# reply msg
# 逻辑上的同一个Message在同一个session中看到的msgid相同
# 在不同的session中看到的msgid不同
class AgentMsg:
def __init__(self,msg_type=AgentMsgType.TYPE_MSG) -> None:
self.msg_id = "msg#" + uuid.uuid4().hex
self.msg_type:AgentMsgType = msg_type
self.prev_msg_id:str = None
self.quote_msg_id:str = None
self.rely_msg_id:str = None # if not none means this is a respone msg
self.session_id:str = None
#forword info
self.create_time = 0
self.done_time = 0
self.topic:str = None # topic is use to find session, not store in db
self.sender:str = None # obj_id.sub_objid@tunnel_id
self.target:str = None
self.mentions:[] = None #use in group chat only
#self.title:str = None
self.body:str = None
self.body_mime:str = None #//default is "text/plain",encode is utf8
#type is call / action
self.func_name = None
self.args = None
self.result_str = None
#type is event
self.event_name = None
self.event_args = None
self.status = AgentMsgStatus.INIT
self.inner_call_chain = []
self.resp_msg = None
@classmethod
def from_json(cls,json_obj:dict) -> 'AgentMsg':
msg = AgentMsg()
return msg
@classmethod
def create_internal_call_msg(self,func_name:str,args:dict,prev_msg_id:str,caller:str):
msg = AgentMsg(AgentMsgType.TYPE_INTERNAL_CALL)
msg.create_time = time.time()
msg.func_name = func_name
msg.args = args
msg.prev_msg_id = prev_msg_id
msg.sender = caller
return msg
def create_action_msg(self,action_name:str,args:dict,caller:str):
msg = AgentMsg(AgentMsgType.TYPE_ACTION)
msg.create_time = time.time()
msg.func_name = action_name
msg.args = args
msg.prev_msg_id = self.msg_id
msg.topic = self.topic
msg.sender = caller
return msg
def create_error_resp(self,error_msg:str):
resp_msg = AgentMsg(AgentMsgType.TYPE_SYSTEM)
resp_msg.create_time = time.time()
resp_msg.rely_msg_id = self.msg_id
resp_msg.body = error_msg
resp_msg.topic = self.topic
resp_msg.sender = self.target
resp_msg.target = self.sender
return resp_msg
def create_resp_msg(self,resp_body):
resp_msg = AgentMsg()
resp_msg.create_time = time.time()
resp_msg.rely_msg_id = self.msg_id
resp_msg.sender = self.target
resp_msg.target = self.sender
resp_msg.body = resp_body
resp_msg.topic = self.topic
return resp_msg
def create_group_resp_msg(self,sender_id,resp_body):
resp_msg = AgentMsg(AgentMsgType.TYPE_GROUPMSG)
resp_msg.create_time = time.time()
resp_msg.rely_msg_id = self.msg_id
resp_msg.target = self.target
resp_msg.sender = sender_id
resp_msg.body = resp_body
resp_msg.topic = self.topic
return resp_msg
def set(self,sender:str,target:str,body:str,topic:str=None) -> None:
self.sender = sender
self.target = target
self.body = body
self.create_time = time.time()
if topic:
self.topic = topic
def get_msg_id(self) -> str:
return self.msg_id
def get_sender(self) -> str:
return self.sender
def get_target(self) -> str:
return self.target
def get_prev_msg_id(self) -> str:
return self.prev_msg_id
def get_quote_msg_id(self) -> str:
return self.quote_msg_id
@classmethod
def parse_function_call(cls,func_string:str):
str_list = shlex.split(func_string)
func_name = str_list[0]
params = str_list[1:]
return func_name, params
class AgentPrompt:
def __init__(self,prompt_str = None) -> None:
@@ -597,7 +440,8 @@ class BaseAIAgent(abc.ABC):
inner_functions=None,
is_json_resp=False,
) -> ComputeTaskResult:
from .compute_kernel import ComputeKernel
from ..frame.compute_kernel import ComputeKernel
#logger.debug(f"Agent {self.agent_id} do llm token static system:{system_prompt_len},function:{function_token_len},history:{history_token_len},input:{input_len}, totoal prompt:{system_prompt_len + function_token_len + history_token_len} ")
if inner_functions is None and env is not None:
inner_functions,_ = BaseAIAgent.get_inner_functions(env)
@@ -633,7 +477,6 @@ class BaseAIAgent(abc.ABC):
org_msg:AgentMsg,
stack_limit = 5
) -> ComputeTaskResult:
from .compute_kernel import ComputeKernel
arguments = None
try:
func_name = inner_func_call_node.get("name")
+4
View File
@@ -0,0 +1,4 @@
# TODO: let agent develolp custmized behavior easily
class AgentBehavior:
def __init__(self) -> None:
pass
@@ -7,7 +7,7 @@ import datetime
import uuid
import json
from .agent_base import AgentMsgType, AgentMsg, AgentMsgStatus
from ..proto.agent_msg import AgentMsgType, AgentMsg, AgentMsgStatus
class ChatSessionDB:
def __init__(self, db_file):
@@ -7,15 +7,19 @@ from asyncio import Queue
from typing import Optional,Tuple,List
from abc import ABC, abstractmethod
from .environment import Environment,EnvironmentEvent
from .agent_base import AgentMsg,AgentMsgStatus,FunctionItem,LLMResult,AgentPrompt
from ..proto.compute_task import *
from ..proto.agent_msg import *
from .agent_base import *
from .chatsession import AIChatSession
from .role import AIRole,AIRoleGroup
from .ai_function import AIFunction,FunctionItem
from .compute_kernel import ComputeKernel
from .compute_task import ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskResultCode
from .bus import AIBus
from .workflow_env import WorkflowEnvironment
from ..frame.compute_kernel import ComputeKernel
from ..frame.bus import AIBus
from ..environment.environment import Environment,EnvironmentEvent
from ..environment.workflow_env import WorkflowEnvironment
logger = logging.getLogger(__name__)
@@ -1,8 +1,8 @@
import logging
from typing import Dict
from aios_kernel import ComputeKernel
from aios_kernel.ai_function import AIFunction
from ..frame.compute_kernel import ComputeKernel
from ..agent.ai_function import AIFunction
logger = logging.getLogger(__name__)
@@ -12,7 +12,7 @@ from hashlib import md5
from typing import Optional, Union, List, Tuple
from generic_escape import GenericEscape
from aios_kernel import AIStorage
from ..storage.storage import AIStorage
try:
import docker
@@ -1,7 +1,7 @@
from typing import Dict
from aios_kernel.ai_function import AIFunction
from aios_kernel.code_interpreter import execute_code
from ..agent.ai_function import AIFunction
from .code_interpreter import execute_code
class CodeInterpreterFunction(AIFunction):
@@ -1,7 +1,7 @@
import json
from typing import Dict
from aios_kernel.ai_function import AIFunction
from ..agent.ai_function import AIFunction
from duckduckgo_search import AsyncDDGS
@@ -5,7 +5,7 @@ from abc import ABC, abstractmethod
from typing import Any, Callable, Optional,Dict,Awaitable,List
import logging
from .ai_function import AIFunction
from ..agent.ai_function import AIFunction
logger = logging.getLogger(__name__)
@@ -1,8 +1,8 @@
import logging
from typing import Dict
from aios_kernel import ComputeKernel
from aios_kernel.ai_function import AIFunction
from ..frame.compute_kernel import ComputeKernel
from ..agent.ai_function import AIFunction
logger = logging.getLogger(__name__)
@@ -5,8 +5,10 @@ import random
from pathlib import Path
from typing import Dict
from aios_kernel import ComputeKernel, AIStorage
from aios_kernel.ai_function import AIFunction
from ..agent.ai_function import AIFunction
from ..frame.compute_kernel import ComputeKernel
from ..storage.storage import AIStorage
from pydub import AudioSegment
@@ -3,8 +3,8 @@ from typing import Dict
from cachetools import TLRUCache, cached
from aios_kernel.ai_function import AIFunction
from aios_kernel.sql_database import SQLDatabase, get_from_env
from ..agent.ai_function import AIFunction
from .sql_database import SQLDatabase, get_from_env
def _my_ttu(_key, _value, now):
@@ -5,8 +5,10 @@ import random
from pathlib import Path
from typing import Dict
from aios_kernel import ComputeKernel, AIStorage
from aios_kernel.ai_function import AIFunction
from ..agent.ai_function import AIFunction
from ..frame.compute_kernel import ComputeKernel
from ..storage.storage import AIStorage
from pydub import AudioSegment
@@ -7,19 +7,19 @@ from sqlite3 import Error
import threading
import logging
from typing import Optional
from .script_to_speech_function import ScriptToSpeechFunction
from .image_2_text_function import Image2TextFunction
from .compute_kernel import ComputeKernel, ComputeTaskResultCode
from .environment import Environment,EnvironmentEvent
from .ai_function import SimpleAIFunction
from .storage import AIStorage
from .contact_manager import ContactManager,Contact,FamilyMember
import aiosqlite
logger = logging.getLogger(__name__)
from ..proto.compute_task import *
from ..agent.ai_function import SimpleAIFunction
from ..frame.compute_kernel import ComputeKernel
from ..frame.contact_manager import ContactManager,Contact,FamilyMember
from ..storage.storage import AIStorage
from .environment import Environment,EnvironmentEvent
from .script_to_speech_function import ScriptToSpeechFunction
from .image_2_text_function import Image2TextFunction
logger = logging.getLogger(__name__)
class CalenderEvent(EnvironmentEvent):
def __init__(self,data) -> None:
@@ -17,14 +17,15 @@ import aiofiles
from typing import Any,List
import os
import chardet
from markdown import Markdown
import PyPDF2
from .agent_base import AgentMsg,AgentTodo,AgentPrompt,AgentTodoResult
from .environment import Environment,EnvironmentEvent
from .ai_function import AIFunction,SimpleAIFunction
from .storage import AIStorage,ResourceLocation
from ..proto.agent_msg import *
from ..agent.agent_base import AgentTodo,AgentPrompt,AgentTodoResult
from ..agent.ai_function import AIFunction,SimpleAIFunction
from ..storage.storage import AIStorage,ResourceLocation
from .simple_kb_db import SimpleKnowledgeDB
from .environment import Environment,EnvironmentEvent
logger = logging.getLogger(__name__)
@@ -1,10 +1,11 @@
from typing import Coroutine,Dict,Any
from .agent_base import AgentMsg,AgentMsgStatus,AgentMsgType
import asyncio
from asyncio import Queue
import logging
from ..proto.agent_msg import *
from ..agent.agent_base import *
logger = logging.getLogger(__name__)
class AIBusHandler:
@@ -4,13 +4,12 @@ from typing import Optional
import logging
import asyncio
import tiktoken
from asyncio import Queue
from knowledge import ObjectID
from .agent_base import AgentPrompt
from ..proto.compute_task import *
from ..knowledge import ObjectID
from ..agent.agent_base import AgentPrompt
from .compute_node import ComputeNode
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskResult, ComputeTaskType,ComputeTaskResultCode
logger = logging.getLogger(__name__)
@@ -18,7 +17,6 @@ logger = logging.getLogger(__name__)
# to suitable computing nodes, achieving a balance of speed, cost, and power consumption,
# is the CORE GOAL of the entire computing task schedule system (aios_kernel).
class ComputeKernel:
_instance = None
@classmethod
@@ -1,6 +1,6 @@
from abc import ABC, abstractmethod
from .compute_task import ComputeTask, ComputeTaskType
from ..proto.compute_task import ComputeTask, ComputeTaskType
class ComputeNode(ABC):
def __init__(self) -> None:
@@ -2,7 +2,7 @@ from typing import List
import logging
from datetime import datetime
from .agent_base import AgentMsg
from ..proto.agent_msg import AgentMsg
from .tunnel import AgentTunnel
@@ -1,11 +1,13 @@
from typing import List
import toml
import time
import logging
from datetime import datetime
from .agent_base import AgentMsg
from ..proto.agent_msg import AgentMsg
from .tunnel import AgentTunnel
from .contact import Contact,FamilyMember
import logging
logger = logging.getLogger(__name__)
@@ -4,8 +4,7 @@ from asyncio import Queue
import logging
from abc import abstractmethod
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType
from .compute_node import ComputeNode
from aios import ComputeTask, ComputeNode,ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType
logger = logging.getLogger(__name__)
@@ -1,7 +1,8 @@
from abc import ABC, abstractmethod
import logging
from typing import Coroutine
from .agent_base import AgentMsg
from ..proto.agent_msg import AgentMsg
from .bus import AIBus
logger = logging.getLogger(__name__)
@@ -1,4 +1,4 @@
from knowledge.object.object_id import ObjectType
from ..object.object_id import ObjectType
from ..object import KnowledgeObject
from ..data import ChunkList, ChunkListWriter
from ..object import ObjectType
@@ -1,13 +1,11 @@
import os
import json
import logging
from .object import ObjectStore, ObjectRelationStore, ObjectID, ObjectType, KnowledgeObject
from .core_object import DocumentObject, ImageObject, VideoObject, RichTextObject, EmailObject
from .data import ChunkStore, ChunkTracker, ChunkListWriter, ChunkReader
import json
import logging
from ..storage.storage import AIStorage
# KnowledgeStore class, which aggregates ChunkStore, ChunkTracker, and ObjectStore, and is a global singleton that makes it easy to use these three built-in store examples
class KnowledgeStore:
@@ -17,8 +15,7 @@ class KnowledgeStore:
if cls._instance is None:
cls._instance = super().__new__(cls)
import aios_kernel
knowledge_dir = aios_kernel.storage.AIStorage().get_myai_dir() / "knowledge" / "objects"
knowledge_dir = AIStorage.get_instance().get_myai_dir() / "knowledge" / "objects"
if not os.path.exists(knowledge_dir):
os.makedirs(knowledge_dir)
@@ -6,7 +6,8 @@ import aiofiles
import os
from typing import Tuple
from ndn_client import ContentId,NDN_Client
#from ndn_client import ContentId,NDN_Client
from ..net import ContentId,NDN_Client
from .pkg import PackageInfo,PackageMediaInfo
from .env import PackageEnv
+167
View File
@@ -0,0 +1,167 @@
import logging
import uuid
from enum import Enum
import time
logger = logging.getLogger(__name__)
class AgentMsgType(Enum):
TYPE_MSG = 0
TYPE_GROUPMSG = 1
TYPE_INTERNAL_CALL = 10
TYPE_ACTION = 20
TYPE_EVENT = 30
TYPE_SYSTEM = 40
class AgentMsgStatus(Enum):
RESPONSED = 0
INIT = 1
SENDING = 2
PROCESSING = 3
ERROR = 4
RECVED = 5
EXECUTED = 6
# msg is a msg / msg resp
# msg body可以有内容类型(MIME标签),text, image, voice, video, file,以及富文本(html)
# msg is a inner function call with result
# msg is a Action with result
# qutoe Msg
# forword msg
# reply msg
# 逻辑上的同一个Message在同一个session中看到的msgid相同
# 在不同的session中看到的msgid不同
class AgentMsg:
def __init__(self,msg_type=AgentMsgType.TYPE_MSG) -> None:
self.msg_id = "msg#" + uuid.uuid4().hex
self.msg_type:AgentMsgType = msg_type
self.prev_msg_id:str = None
self.quote_msg_id:str = None
self.rely_msg_id:str = None # if not none means this is a respone msg
self.session_id:str = None
#forword info
self.create_time = 0
self.done_time = 0
self.topic:str = None # topic is use to find session, not store in db
self.sender:str = None # obj_id.sub_objid@tunnel_id
self.target:str = None
self.mentions:[] = None #use in group chat only
#self.title:str = None
self.body:str = None
self.body_mime:str = None #//default is "text/plain",encode is utf8
#type is call / action
self.func_name = None
self.args = None
self.result_str = None
#type is event
self.event_name = None
self.event_args = None
self.status = AgentMsgStatus.INIT
self.inner_call_chain = []
self.resp_msg = None
@classmethod
def from_json(cls,json_obj:dict) -> 'AgentMsg':
msg = AgentMsg()
return msg
@classmethod
def create_internal_call_msg(self,func_name:str,args:dict,prev_msg_id:str,caller:str):
msg = AgentMsg(AgentMsgType.TYPE_INTERNAL_CALL)
msg.create_time = time.time()
msg.func_name = func_name
msg.args = args
msg.prev_msg_id = prev_msg_id
msg.sender = caller
return msg
def create_action_msg(self,action_name:str,args:dict,caller:str):
msg = AgentMsg(AgentMsgType.TYPE_ACTION)
msg.create_time = time.time()
msg.func_name = action_name
msg.args = args
msg.prev_msg_id = self.msg_id
msg.topic = self.topic
msg.sender = caller
return msg
def create_error_resp(self,error_msg:str):
resp_msg = AgentMsg(AgentMsgType.TYPE_SYSTEM)
resp_msg.create_time = time.time()
resp_msg.rely_msg_id = self.msg_id
resp_msg.body = error_msg
resp_msg.topic = self.topic
resp_msg.sender = self.target
resp_msg.target = self.sender
return resp_msg
def create_resp_msg(self,resp_body):
resp_msg = AgentMsg()
resp_msg.create_time = time.time()
resp_msg.rely_msg_id = self.msg_id
resp_msg.sender = self.target
resp_msg.target = self.sender
resp_msg.body = resp_body
resp_msg.topic = self.topic
return resp_msg
def create_group_resp_msg(self,sender_id,resp_body):
resp_msg = AgentMsg(AgentMsgType.TYPE_GROUPMSG)
resp_msg.create_time = time.time()
resp_msg.rely_msg_id = self.msg_id
resp_msg.target = self.target
resp_msg.sender = sender_id
resp_msg.body = resp_body
resp_msg.topic = self.topic
return resp_msg
def set(self,sender:str,target:str,body:str,topic:str=None) -> None:
self.sender = sender
self.target = target
self.body = body
self.create_time = time.time()
if topic:
self.topic = topic
def get_msg_id(self) -> str:
return self.msg_id
def get_sender(self) -> str:
return self.sender
def get_target(self) -> str:
return self.target
def get_prev_msg_id(self) -> str:
return self.prev_msg_id
def get_quote_msg_id(self) -> str:
return self.quote_msg_id
@classmethod
def parse_function_call(cls,func_string:str):
str_list = shlex.split(func_string)
func_name = str_list[0]
params = str_list[1:]
return func_name, params
@@ -3,8 +3,8 @@ from enum import Enum
import uuid
import time
from typing import Union
from knowledge import ObjectID
from .storage import AIStorage
from ..knowledge import ObjectID
from ..storage.storage import AIStorage
class ComputeTaskResultCode(Enum):
OK = 0
@@ -195,7 +195,7 @@ class AIStorage:
/opt/aios
"""
if self.is_dev_mode:
return os.path.abspath(_file_dir + "/../")
return os.path.abspath(_file_dir + "/../../")
else:
return "/opt/aios/"
@@ -206,7 +206,7 @@ class AIStorage:
/opt/aios/app
"""
if self.is_dev_mode:
return os.path.abspath(_file_dir + "/../../rootfs/")
return os.path.abspath(_file_dir + "/../../../rootfs/")
else:
return "/opt/aios/app/"
-32
View File
@@ -1,32 +0,0 @@
from .environment import Environment,EnvironmentEvent
from .agent_base import AgentMsg,AgentMsgStatus,AgentMsgType,AgentPrompt,CustomAIAgent
from .chatsession import AIChatSession
from .agent import AIAgent,AIAgentTemplete, BaseAIAgent
from .compute_kernel import ComputeKernel,ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskType
from .compute_node import ComputeNode,LocalComputeNode
from .open_ai_node import OpenAI_ComputeNode
from .role import AIRole,AIRoleGroup
from .storage import ResourceLocation,AIStorage,UserConfig,UserConfigItem
from .workflow import Workflow
from .bus import AIBus
from .workflow_env import WorkflowEnvironment,CalenderEnvironment,CalenderEvent,PaintEnvironment
from .local_llama_compute_node import LocalLlama_ComputeNode
from .whisper_node import WhisperComputeNode
from .google_text_to_speech_node import GoogleTextToSpeechNode
from .tunnel import AgentTunnel
from .tg_tunnel import TelegramTunnel
from .email_tunnel import EmailTunnel
from .contact_manager import ContactManager,Contact,FamilyMember
from .text_to_speech_function import TextToSpeechFunction
from .image_2_text_function import Image2TextFunction
from .workspace_env import ShellEnvironment
from .local_stability_node import Local_Stability_ComputeNode
from .stability_node import Stability_ComputeNode
from .local_st_compute_node import LocalSentenceTransformer_Text_ComputeNode,LocalSentenceTransformer_Image_ComputeNode
from .compute_node_config import ComputeNodeConfig
from .ai_function import SimpleAIFunction
from .workspace_env import WorkspaceEnvironment
from .openai_tts_node import OpenAITTSComputeNode
AIOS_Version = "0.5.2, build 2023-11-29"
+1 -3
View File
@@ -6,9 +6,7 @@ import sys
import runpy
from typing import Any, Callable, Dict, List, Optional, Union
from aios_kernel import AIAgent,AIAgentTemplete,AIStorage,Environment
from aios_kernel.agent_base import BaseAIAgent
from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
from aios import AIAgent,AIAgentTemplete,AIStorage,Environment,BaseAIAgent,PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
logger = logging.getLogger(__name__)
@@ -7,9 +7,8 @@ import mailparser
import logging
import time
import datetime
from .tunnel import AgentTunnel
from .agent_base import AgentMsg
from .contact_manager import ContactManager
from aios import AgentTunnel,AgentMsg,ContactManager
from email.message import EmailMessage
+1
View File
@@ -0,0 +1 @@
from .google_text_to_speech_node import *
@@ -7,9 +7,7 @@ from typing import Optional
from google.cloud import texttospeech
from .storage import AIStorage
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType
from .compute_node import ComputeNode
from aios import AIStorage,ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeNode
logger = logging.getLogger(__name__)
+1 -1
View File
@@ -2,7 +2,7 @@ import os
import runpy
import toml
import asyncio
from knowledge import KnowledgePipelineEnvironment, KnowledgePipeline
from aios import KnowledgePipelineEnvironment, KnowledgePipeline
class KnowledgePipelineManager:
+1
View File
@@ -0,0 +1 @@
from .local_llama_compute_node import LocalLlama_ComputeNode
@@ -5,9 +5,7 @@ import requests
from typing import Optional, List
from pydantic import BaseModel
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType
from .queue_compute_node import Queue_ComputeNode
from .storage import AIStorage,UserConfig
from aios import ComputeTask,Queue_ComputeNode, ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType,AIStorage,UserConfig
logger = logging.getLogger(__name__)
@@ -121,18 +119,18 @@ class LocalLlama_ComputeNode(Queue_ComputeNode):
"tool_choices": [],
"max_tokens": 4000
}
for fun in llm_inner_functions:
body["tools"].append({
"type": "function",
"function": fun,
})
body["tool_choices"].append({
"type": "function",
"function": {
"name": fun["name"]
}
})
if llm_inner_functions is not None:
for fun in llm_inner_functions:
body["tools"].append({
"type": "function",
"function": fun,
})
body["tool_choices"].append({
"type": "function",
"function": {
"name": fun["name"]
}
})
for prompt in prompts:
body["messages"].append({
+1 -2
View File
@@ -1,8 +1,7 @@
# define a knowledge base class
import json
import string
from aios_kernel import AIStorage, Environment, SimpleAIFunction, CustomAIAgent, AgentPrompt, AgentMsg
from knowledge import *
from aios import *
from .mail import MailStorage, Mail
class IssueState(Enum):
+1 -2
View File
@@ -2,8 +2,7 @@ import os
import logging
import json
import string
from knowledge import *
from aios_kernel.storage import AIStorage
from aios import *
from .mail import Mail, MailStorage
+1 -1
View File
@@ -7,7 +7,7 @@ import datetime
from bs4 import BeautifulSoup
import sqlite3
import html2text
from knowledge import *
from aios import *
class Mail:
def __init__(self, **kwargs) -> None:
+1 -2
View File
@@ -3,8 +3,7 @@ import logging
import json
import imaplib
import mailparser
from knowledge import *
from aios_kernel.storage import AIStorage
from aios import *
class EmailSpider:
+3
View File
@@ -0,0 +1,3 @@
from .open_ai_node import *
from .openai_tts_node import *
from .whisper_node import *
@@ -9,10 +9,7 @@ import aiohttp
import base64
import requests
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode
from .compute_node import ComputeNode
from .storage import AIStorage,UserConfig
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig
logger = logging.getLogger(__name__)
@@ -4,7 +4,7 @@ import logging
import os
from asyncio import Queue
from aios_kernel import ComputeNode, ComputeTask, ComputeTaskState, ComputeTaskResult, ComputeTaskType, AIStorage
from aios import ComputeNode, ComputeTask, ComputeTaskState, ComputeTaskResult, ComputeTaskType, AIStorage
logger = logging.getLogger(__name__)
@@ -13,9 +13,7 @@ from openai.cli._progress import BufferReader
from pydub import AudioSegment
from datetime import timedelta
from . import AIStorage
from .compute_node import ComputeNode
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType
from aios import AIStorage,ComputeNode,ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType
logger = logging.getLogger(__name__)
@@ -24,7 +22,6 @@ SECONDS_IN_MINUTE = 60
HOURS_IN_DAY = 24
MICROSECONDS_IN_MILLISECOND = 1000
def timedelta_to_vtt_timestamp(timedelta_timestamp):
hrs, secs_remainder = divmod(timedelta_timestamp.seconds, SECONDS_IN_HOUR)
hrs += timedelta_timestamp.days * HOURS_IN_DAY
+2
View File
@@ -0,0 +1,2 @@
from .local_stability_node import *
from .stability_node import *
@@ -9,9 +9,7 @@ import requests
from typing import Tuple
from pathlib import Path
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType, ComputeTaskResultCode
from .compute_node import ComputeNode
from .storage import AIStorage, UserConfig
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig
logger = logging.getLogger(__name__)
@@ -9,9 +9,7 @@ from PIL import Image
from stability_sdk import client
import stability_sdk.interfaces.gooseai.generation.generation_pb2 as generation
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType, ComputeTaskResultCode
from .compute_node import ComputeNode
from .storage import AIStorage, UserConfig
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig
logger = logging.getLogger(__name__)
+1
View File
@@ -0,0 +1 @@
from .local_st_compute_node import *
@@ -5,9 +5,8 @@ from pydantic import BaseModel
from typing import Union
from PIL import Image
import io
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskType,ComputeTaskResult,ComputeTaskResultCode
from .queue_compute_node import Queue_ComputeNode
from knowledge import ObjectID
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig,ObjectID,Queue_ComputeNode
logger = logging.getLogger(__name__)
@@ -10,13 +10,7 @@ from telegram import Bot
from telegram.ext import Updater
from telegram.error import Forbidden, NetworkError
from knowledge import ObjectType, KnowledgeStore
from .tunnel import AgentTunnel
from .storage import AIStorage
from .contact_manager import ContactManager,Contact,FamilyMember
from .agent_base import AgentMsg,AgentMsgType
from aios import ObjectType, KnowledgeStore,AgentTunnel,AIStorage,ContactManager,Contact,FamilyMember,AgentMsg,AgentMsgType
logger = logging.getLogger(__name__)
@@ -2,8 +2,7 @@ import logging
import toml
import os
from aios_kernel import Workflow,AIStorage
from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
from aios import Workflow,AIStorage,PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
from agent_manager import AgentManager
logger = logging.getLogger(__name__)
+1
View File
@@ -0,0 +1 @@
# might implement by Rust in the future
+34
View File
@@ -0,0 +1,34 @@
#目录说明
## aios
系统的主要内核部分
### agent
智能体相关目录(包括agent和workflow),也是aios的关键抽象
### frame
aios的核心框架
### proto
非系统内部的,承诺长期兼容的协议定义
### enviroment
enviroment定义
其它内置的基础环境实现,包含其它非LLM AI能力的function
### knowledge
知识库相关实现
### storage
传统的存储组件
### net
基础网络库(主要是NDN,NON网络)的基础组件
## node_daemon
运行在host_os上,通过传统os概念控制aios的各个基础组件的启动。可以看成是aios的bios
aios是一个network os, 因此这个组件里还包含了最为基础的仓库实现,以支持各个组件的在线发布\安装\更新
## component
可以按需加载的build-in组件
## service
内置的service
+12 -7
View File
@@ -11,7 +11,6 @@ from logging.handlers import RotatingFileHandler
from typing import Any, Optional, TypeVar, Tuple, Sequence
import argparse
from prompt_toolkit import HTML, PromptSession, prompt,print_formatted_text
from prompt_toolkit.formatted_text import FormattedText
from prompt_toolkit.selection import SelectionState
@@ -20,8 +19,6 @@ from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.styles import Style
directory = os.path.dirname(__file__)
sys.path.append(directory + '/../../')
@@ -30,15 +27,23 @@ sys.path.append(directory + '/../../')
# os.environ['HTTPS_PROXY'] = '127.0.0.1:10809'
import proxy
from aios_kernel import *
from knowledge import *
from aios import *
sys.path.append(directory + '/../../component/')
from google_node import *
from llama_node import *
from openai_node import *
from sd_node import *
from st_node import *
from agent_manager import AgentManager
from workflow_manager import WorkflowManager
from knowledge_manager import KnowledgePipelineManager
from tg_tunnel import TelegramTunnel
from email_tunnel import EmailTunnel
from compute_node_config import *
logger = logging.getLogger(__name__)
@@ -1,4 +1,5 @@
"""
compute node config
Configuration for nodes:
```
@@ -14,12 +15,18 @@ Configuration for nodes:
"""
import logging
from typing import List
import sys
import os
import toml
from .local_llama_compute_node import LocalLlama_ComputeNode
from .storage import AIStorage
from aios import AIStorage
directory = os.path.dirname(__file__)
sys.path.append(directory + '/../../component/')
from llama_node import LocalLlama_ComputeNode
# define singleton class knowledge pipline
class ComputeNodeConfig:
+1 -1
View File
@@ -9,7 +9,7 @@ import logging
directory = os.path.dirname(__file__)
sys.path.append(directory + '/../../')
from aios_kernel import AIStorage
from aios import AIStorage
logger = logging.getLogger(__name__)
-1
View File
@@ -1 +0,0 @@
TODO