Refactor the code directory structure to better suit the current complexity
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
from knowledge import KnowledgePipelineEnvironment
|
from aios import KnowledgePipelineEnvironment
|
||||||
directory = os.path.dirname(__file__)
|
directory = os.path.dirname(__file__)
|
||||||
sys.path.append(directory + '/../../../../src/component/')
|
sys.path.append(directory + '/../../../../src/component/')
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
from knowledge import *
|
from aios import *
|
||||||
directory = os.path.dirname(__file__)
|
directory = os.path.dirname(__file__)
|
||||||
|
|
||||||
sys.path.append(directory + '/../../../../src/component/')
|
sys.path.append(directory + '/../../../../src/component/')
|
||||||
|
|||||||
@@ -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 copy
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from .agent_base import AgentMsg, AgentMsgStatus, AgentMsgType, FunctionItem, LLMResult, AgentPrompt, AgentReport, \
|
from ..proto.agent_msg import AgentMsg
|
||||||
AgentTodo, AgentTodoResult, AgentWorkLog, BaseAIAgent
|
from ..proto.compute_task import ComputeTaskResult,ComputeTaskResultCode
|
||||||
|
|
||||||
from .chatsession import AIChatSession
|
from .agent_base import *
|
||||||
from .compute_task import ComputeTaskResult,ComputeTaskResultCode
|
from .chatsession import *
|
||||||
from .ai_function import AIFunction
|
from .ai_function import *
|
||||||
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 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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -12,170 +12,13 @@ import json
|
|||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from .ai_function import FunctionItem, AIFunction
|
from .ai_function import FunctionItem, AIFunction
|
||||||
from .compute_task import ComputeTaskResult,ComputeTaskResultCode
|
from ..proto.agent_msg import AgentMsg, AgentMsgType
|
||||||
from .environment import Environment
|
from ..proto.compute_task import ComputeTaskResult,ComputeTaskResultCode
|
||||||
|
from ..environment.environment import Environment
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
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:
|
class AgentPrompt:
|
||||||
def __init__(self,prompt_str = None) -> None:
|
def __init__(self,prompt_str = None) -> None:
|
||||||
@@ -597,7 +440,8 @@ class BaseAIAgent(abc.ABC):
|
|||||||
inner_functions=None,
|
inner_functions=None,
|
||||||
is_json_resp=False,
|
is_json_resp=False,
|
||||||
) -> ComputeTaskResult:
|
) -> 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} ")
|
#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:
|
if inner_functions is None and env is not None:
|
||||||
inner_functions,_ = BaseAIAgent.get_inner_functions(env)
|
inner_functions,_ = BaseAIAgent.get_inner_functions(env)
|
||||||
@@ -633,7 +477,6 @@ class BaseAIAgent(abc.ABC):
|
|||||||
org_msg:AgentMsg,
|
org_msg:AgentMsg,
|
||||||
stack_limit = 5
|
stack_limit = 5
|
||||||
) -> ComputeTaskResult:
|
) -> ComputeTaskResult:
|
||||||
from .compute_kernel import ComputeKernel
|
|
||||||
arguments = None
|
arguments = None
|
||||||
try:
|
try:
|
||||||
func_name = inner_func_call_node.get("name")
|
func_name = inner_func_call_node.get("name")
|
||||||
@@ -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 uuid
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from .agent_base import AgentMsgType, AgentMsg, AgentMsgStatus
|
from ..proto.agent_msg import AgentMsgType, AgentMsg, AgentMsgStatus
|
||||||
|
|
||||||
class ChatSessionDB:
|
class ChatSessionDB:
|
||||||
def __init__(self, db_file):
|
def __init__(self, db_file):
|
||||||
@@ -7,15 +7,19 @@ from asyncio import Queue
|
|||||||
from typing import Optional,Tuple,List
|
from typing import Optional,Tuple,List
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
from .environment import Environment,EnvironmentEvent
|
from ..proto.compute_task import *
|
||||||
from .agent_base import AgentMsg,AgentMsgStatus,FunctionItem,LLMResult,AgentPrompt
|
from ..proto.agent_msg import *
|
||||||
|
|
||||||
|
from .agent_base import *
|
||||||
from .chatsession import AIChatSession
|
from .chatsession import AIChatSession
|
||||||
from .role import AIRole,AIRoleGroup
|
from .role import AIRole,AIRoleGroup
|
||||||
from .ai_function import AIFunction,FunctionItem
|
from .ai_function import AIFunction,FunctionItem
|
||||||
from .compute_kernel import ComputeKernel
|
|
||||||
from .compute_task import ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskResultCode
|
from ..frame.compute_kernel import ComputeKernel
|
||||||
from .bus import AIBus
|
from ..frame.bus import AIBus
|
||||||
from .workflow_env import WorkflowEnvironment
|
|
||||||
|
from ..environment.environment import Environment,EnvironmentEvent
|
||||||
|
from ..environment.workflow_env import WorkflowEnvironment
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from aios_kernel import ComputeKernel
|
from ..frame.compute_kernel import ComputeKernel
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..agent.ai_function import AIFunction
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ from hashlib import md5
|
|||||||
from typing import Optional, Union, List, Tuple
|
from typing import Optional, Union, List, Tuple
|
||||||
from generic_escape import GenericEscape
|
from generic_escape import GenericEscape
|
||||||
|
|
||||||
from aios_kernel import AIStorage
|
from ..storage.storage import AIStorage
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import docker
|
import docker
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..agent.ai_function import AIFunction
|
||||||
from aios_kernel.code_interpreter import execute_code
|
from .code_interpreter import execute_code
|
||||||
|
|
||||||
|
|
||||||
class CodeInterpreterFunction(AIFunction):
|
class CodeInterpreterFunction(AIFunction):
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..agent.ai_function import AIFunction
|
||||||
from duckduckgo_search import AsyncDDGS
|
from duckduckgo_search import AsyncDDGS
|
||||||
|
|
||||||
|
|
||||||
@@ -5,7 +5,7 @@ from abc import ABC, abstractmethod
|
|||||||
from typing import Any, Callable, Optional,Dict,Awaitable,List
|
from typing import Any, Callable, Optional,Dict,Awaitable,List
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from .ai_function import AIFunction
|
from ..agent.ai_function import AIFunction
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from aios_kernel import ComputeKernel
|
from ..frame.compute_kernel import ComputeKernel
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..agent.ai_function import AIFunction
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
+4
-2
@@ -5,8 +5,10 @@ import random
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from aios_kernel import ComputeKernel, AIStorage
|
from ..agent.ai_function import AIFunction
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..frame.compute_kernel import ComputeKernel
|
||||||
|
from ..storage.storage import AIStorage
|
||||||
|
|
||||||
|
|
||||||
from pydub import AudioSegment
|
from pydub import AudioSegment
|
||||||
|
|
||||||
+2
-2
@@ -3,8 +3,8 @@ from typing import Dict
|
|||||||
|
|
||||||
from cachetools import TLRUCache, cached
|
from cachetools import TLRUCache, cached
|
||||||
|
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..agent.ai_function import AIFunction
|
||||||
from aios_kernel.sql_database import SQLDatabase, get_from_env
|
from .sql_database import SQLDatabase, get_from_env
|
||||||
|
|
||||||
|
|
||||||
def _my_ttu(_key, _value, now):
|
def _my_ttu(_key, _value, now):
|
||||||
+4
-2
@@ -5,8 +5,10 @@ import random
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from aios_kernel import ComputeKernel, AIStorage
|
from ..agent.ai_function import AIFunction
|
||||||
from aios_kernel.ai_function import AIFunction
|
from ..frame.compute_kernel import ComputeKernel
|
||||||
|
from ..storage.storage import AIStorage
|
||||||
|
|
||||||
|
|
||||||
from pydub import AudioSegment
|
from pydub import AudioSegment
|
||||||
|
|
||||||
@@ -7,19 +7,19 @@ from sqlite3 import Error
|
|||||||
import threading
|
import threading
|
||||||
import logging
|
import logging
|
||||||
from typing import Optional
|
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
|
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):
|
class CalenderEvent(EnvironmentEvent):
|
||||||
def __init__(self,data) -> None:
|
def __init__(self,data) -> None:
|
||||||
@@ -17,14 +17,15 @@ import aiofiles
|
|||||||
from typing import Any,List
|
from typing import Any,List
|
||||||
import os
|
import os
|
||||||
import chardet
|
import chardet
|
||||||
|
|
||||||
from markdown import Markdown
|
from markdown import Markdown
|
||||||
import PyPDF2
|
import PyPDF2
|
||||||
from .agent_base import AgentMsg,AgentTodo,AgentPrompt,AgentTodoResult
|
|
||||||
from .environment import Environment,EnvironmentEvent
|
from ..proto.agent_msg import *
|
||||||
from .ai_function import AIFunction,SimpleAIFunction
|
from ..agent.agent_base import AgentTodo,AgentPrompt,AgentTodoResult
|
||||||
from .storage import AIStorage,ResourceLocation
|
from ..agent.ai_function import AIFunction,SimpleAIFunction
|
||||||
|
from ..storage.storage import AIStorage,ResourceLocation
|
||||||
from .simple_kb_db import SimpleKnowledgeDB
|
from .simple_kb_db import SimpleKnowledgeDB
|
||||||
|
from .environment import Environment,EnvironmentEvent
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
from typing import Coroutine,Dict,Any
|
from typing import Coroutine,Dict,Any
|
||||||
from .agent_base import AgentMsg,AgentMsgStatus,AgentMsgType
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from asyncio import Queue
|
from asyncio import Queue
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from ..proto.agent_msg import *
|
||||||
|
from ..agent.agent_base import *
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class AIBusHandler:
|
class AIBusHandler:
|
||||||
@@ -4,13 +4,12 @@ from typing import Optional
|
|||||||
import logging
|
import logging
|
||||||
import asyncio
|
import asyncio
|
||||||
import tiktoken
|
import tiktoken
|
||||||
|
|
||||||
from asyncio import Queue
|
from asyncio import Queue
|
||||||
|
|
||||||
from knowledge import ObjectID
|
from ..proto.compute_task import *
|
||||||
from .agent_base import AgentPrompt
|
from ..knowledge import ObjectID
|
||||||
|
from ..agent.agent_base import AgentPrompt
|
||||||
from .compute_node import ComputeNode
|
from .compute_node import ComputeNode
|
||||||
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskResult, ComputeTaskType,ComputeTaskResultCode
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
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,
|
# 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).
|
# is the CORE GOAL of the entire computing task schedule system (aios_kernel).
|
||||||
|
|
||||||
|
|
||||||
class ComputeKernel:
|
class ComputeKernel:
|
||||||
_instance = None
|
_instance = None
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from .compute_task import ComputeTask, ComputeTaskType
|
|
||||||
|
|
||||||
|
from ..proto.compute_task import ComputeTask, ComputeTaskType
|
||||||
|
|
||||||
class ComputeNode(ABC):
|
class ComputeNode(ABC):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
@@ -2,7 +2,7 @@ from typing import List
|
|||||||
import logging
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from .agent_base import AgentMsg
|
from ..proto.agent_msg import AgentMsg
|
||||||
from .tunnel import AgentTunnel
|
from .tunnel import AgentTunnel
|
||||||
|
|
||||||
|
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
import toml
|
import toml
|
||||||
import time
|
import time
|
||||||
|
import logging
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from .agent_base import AgentMsg
|
from ..proto.agent_msg import AgentMsg
|
||||||
from .tunnel import AgentTunnel
|
from .tunnel import AgentTunnel
|
||||||
from .contact import Contact,FamilyMember
|
from .contact import Contact,FamilyMember
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -4,8 +4,7 @@ from asyncio import Queue
|
|||||||
import logging
|
import logging
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType
|
from aios import ComputeTask, ComputeNode,ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType
|
||||||
from .compute_node import ComputeNode
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
import logging
|
import logging
|
||||||
from typing import Coroutine
|
from typing import Coroutine
|
||||||
from .agent_base import AgentMsg
|
|
||||||
|
from ..proto.agent_msg import AgentMsg
|
||||||
from .bus import AIBus
|
from .bus import AIBus
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from knowledge.object.object_id import ObjectType
|
from ..object.object_id import ObjectType
|
||||||
from ..object import KnowledgeObject
|
from ..object import KnowledgeObject
|
||||||
from ..data import ChunkList, ChunkListWriter
|
from ..data import ChunkList, ChunkListWriter
|
||||||
from ..object import ObjectType
|
from ..object import ObjectType
|
||||||
@@ -1,13 +1,11 @@
|
|||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
from .object import ObjectStore, ObjectRelationStore, ObjectID, ObjectType, KnowledgeObject
|
from .object import ObjectStore, ObjectRelationStore, ObjectID, ObjectType, KnowledgeObject
|
||||||
from .core_object import DocumentObject, ImageObject, VideoObject, RichTextObject, EmailObject
|
from .core_object import DocumentObject, ImageObject, VideoObject, RichTextObject, EmailObject
|
||||||
from .data import ChunkStore, ChunkTracker, ChunkListWriter, ChunkReader
|
from .data import ChunkStore, ChunkTracker, ChunkListWriter, ChunkReader
|
||||||
import json
|
from ..storage.storage import AIStorage
|
||||||
import logging
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 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
|
# 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:
|
class KnowledgeStore:
|
||||||
@@ -17,8 +15,7 @@ class KnowledgeStore:
|
|||||||
if cls._instance is None:
|
if cls._instance is None:
|
||||||
cls._instance = super().__new__(cls)
|
cls._instance = super().__new__(cls)
|
||||||
|
|
||||||
import aios_kernel
|
knowledge_dir = AIStorage.get_instance().get_myai_dir() / "knowledge" / "objects"
|
||||||
knowledge_dir = aios_kernel.storage.AIStorage().get_myai_dir() / "knowledge" / "objects"
|
|
||||||
|
|
||||||
if not os.path.exists(knowledge_dir):
|
if not os.path.exists(knowledge_dir):
|
||||||
os.makedirs(knowledge_dir)
|
os.makedirs(knowledge_dir)
|
||||||
@@ -6,7 +6,8 @@ import aiofiles
|
|||||||
import os
|
import os
|
||||||
from typing import Tuple
|
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 .pkg import PackageInfo,PackageMediaInfo
|
||||||
from .env import PackageEnv
|
from .env import PackageEnv
|
||||||
|
|
||||||
@@ -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 uuid
|
||||||
import time
|
import time
|
||||||
from typing import Union
|
from typing import Union
|
||||||
from knowledge import ObjectID
|
from ..knowledge import ObjectID
|
||||||
from .storage import AIStorage
|
from ..storage.storage import AIStorage
|
||||||
|
|
||||||
class ComputeTaskResultCode(Enum):
|
class ComputeTaskResultCode(Enum):
|
||||||
OK = 0
|
OK = 0
|
||||||
@@ -195,7 +195,7 @@ class AIStorage:
|
|||||||
/opt/aios
|
/opt/aios
|
||||||
"""
|
"""
|
||||||
if self.is_dev_mode:
|
if self.is_dev_mode:
|
||||||
return os.path.abspath(_file_dir + "/../")
|
return os.path.abspath(_file_dir + "/../../")
|
||||||
else:
|
else:
|
||||||
return "/opt/aios/"
|
return "/opt/aios/"
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ class AIStorage:
|
|||||||
/opt/aios/app
|
/opt/aios/app
|
||||||
"""
|
"""
|
||||||
if self.is_dev_mode:
|
if self.is_dev_mode:
|
||||||
return os.path.abspath(_file_dir + "/../../rootfs/")
|
return os.path.abspath(_file_dir + "/../../../rootfs/")
|
||||||
else:
|
else:
|
||||||
return "/opt/aios/app/"
|
return "/opt/aios/app/"
|
||||||
|
|
||||||
@@ -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"
|
|
||||||
|
|
||||||
@@ -6,9 +6,7 @@ import sys
|
|||||||
import runpy
|
import runpy
|
||||||
from typing import Any, Callable, Dict, List, Optional, Union
|
from typing import Any, Callable, Dict, List, Optional, Union
|
||||||
|
|
||||||
from aios_kernel import AIAgent,AIAgentTemplete,AIStorage,Environment
|
from aios import AIAgent,AIAgentTemplete,AIStorage,Environment,BaseAIAgent,PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
|
||||||
from aios_kernel.agent_base import BaseAIAgent
|
|
||||||
from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,8 @@ import mailparser
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
import datetime
|
import datetime
|
||||||
from .tunnel import AgentTunnel
|
|
||||||
from .agent_base import AgentMsg
|
from aios import AgentTunnel,AgentMsg,ContactManager
|
||||||
from .contact_manager import ContactManager
|
|
||||||
|
|
||||||
from email.message import EmailMessage
|
from email.message import EmailMessage
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
from .google_text_to_speech_node import *
|
||||||
+1
-3
@@ -7,9 +7,7 @@ from typing import Optional
|
|||||||
|
|
||||||
from google.cloud import texttospeech
|
from google.cloud import texttospeech
|
||||||
|
|
||||||
from .storage import AIStorage
|
from aios import AIStorage,ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeNode
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType
|
|
||||||
from .compute_node import ComputeNode
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@ import os
|
|||||||
import runpy
|
import runpy
|
||||||
import toml
|
import toml
|
||||||
import asyncio
|
import asyncio
|
||||||
from knowledge import KnowledgePipelineEnvironment, KnowledgePipeline
|
from aios import KnowledgePipelineEnvironment, KnowledgePipeline
|
||||||
|
|
||||||
|
|
||||||
class KnowledgePipelineManager:
|
class KnowledgePipelineManager:
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
from .local_llama_compute_node import LocalLlama_ComputeNode
|
||||||
+13
-15
@@ -5,9 +5,7 @@ import requests
|
|||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType
|
from aios import ComputeTask,Queue_ComputeNode, ComputeTaskResult, ComputeTaskResultCode, ComputeTaskState, ComputeTaskType,AIStorage,UserConfig
|
||||||
from .queue_compute_node import Queue_ComputeNode
|
|
||||||
from .storage import AIStorage,UserConfig
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -121,18 +119,18 @@ class LocalLlama_ComputeNode(Queue_ComputeNode):
|
|||||||
"tool_choices": [],
|
"tool_choices": [],
|
||||||
"max_tokens": 4000
|
"max_tokens": 4000
|
||||||
}
|
}
|
||||||
|
if llm_inner_functions is not None:
|
||||||
for fun in llm_inner_functions:
|
for fun in llm_inner_functions:
|
||||||
body["tools"].append({
|
body["tools"].append({
|
||||||
"type": "function",
|
"type": "function",
|
||||||
"function": fun,
|
"function": fun,
|
||||||
})
|
})
|
||||||
body["tool_choices"].append({
|
body["tool_choices"].append({
|
||||||
"type": "function",
|
"type": "function",
|
||||||
"function": {
|
"function": {
|
||||||
"name": fun["name"]
|
"name": fun["name"]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
for prompt in prompts:
|
for prompt in prompts:
|
||||||
body["messages"].append({
|
body["messages"].append({
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
# define a knowledge base class
|
# define a knowledge base class
|
||||||
import json
|
import json
|
||||||
import string
|
import string
|
||||||
from aios_kernel import AIStorage, Environment, SimpleAIFunction, CustomAIAgent, AgentPrompt, AgentMsg
|
from aios import *
|
||||||
from knowledge import *
|
|
||||||
from .mail import MailStorage, Mail
|
from .mail import MailStorage, Mail
|
||||||
|
|
||||||
class IssueState(Enum):
|
class IssueState(Enum):
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ import os
|
|||||||
import logging
|
import logging
|
||||||
import json
|
import json
|
||||||
import string
|
import string
|
||||||
from knowledge import *
|
from aios import *
|
||||||
from aios_kernel.storage import AIStorage
|
|
||||||
from .mail import Mail, MailStorage
|
from .mail import Mail, MailStorage
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import datetime
|
|||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import html2text
|
import html2text
|
||||||
from knowledge import *
|
from aios import *
|
||||||
|
|
||||||
class Mail:
|
class Mail:
|
||||||
def __init__(self, **kwargs) -> None:
|
def __init__(self, **kwargs) -> None:
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ import logging
|
|||||||
import json
|
import json
|
||||||
import imaplib
|
import imaplib
|
||||||
import mailparser
|
import mailparser
|
||||||
from knowledge import *
|
from aios import *
|
||||||
from aios_kernel.storage import AIStorage
|
|
||||||
|
|
||||||
|
|
||||||
class EmailSpider:
|
class EmailSpider:
|
||||||
|
|||||||
@@ -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 base64
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode
|
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig
|
||||||
from .compute_node import ComputeNode
|
|
||||||
from .storage import AIStorage,UserConfig
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
from asyncio import Queue
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -13,9 +13,7 @@ from openai.cli._progress import BufferReader
|
|||||||
from pydub import AudioSegment
|
from pydub import AudioSegment
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from . import AIStorage
|
from aios import AIStorage,ComputeNode,ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType
|
||||||
from .compute_node import ComputeNode
|
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -24,7 +22,6 @@ SECONDS_IN_MINUTE = 60
|
|||||||
HOURS_IN_DAY = 24
|
HOURS_IN_DAY = 24
|
||||||
MICROSECONDS_IN_MILLISECOND = 1000
|
MICROSECONDS_IN_MILLISECOND = 1000
|
||||||
|
|
||||||
|
|
||||||
def timedelta_to_vtt_timestamp(timedelta_timestamp):
|
def timedelta_to_vtt_timestamp(timedelta_timestamp):
|
||||||
hrs, secs_remainder = divmod(timedelta_timestamp.seconds, SECONDS_IN_HOUR)
|
hrs, secs_remainder = divmod(timedelta_timestamp.seconds, SECONDS_IN_HOUR)
|
||||||
hrs += timedelta_timestamp.days * HOURS_IN_DAY
|
hrs += timedelta_timestamp.days * HOURS_IN_DAY
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
from .local_stability_node import *
|
||||||
|
from .stability_node import *
|
||||||
+1
-3
@@ -9,9 +9,7 @@ import requests
|
|||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType, ComputeTaskResultCode
|
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig
|
||||||
from .compute_node import ComputeNode
|
|
||||||
from .storage import AIStorage, UserConfig
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -9,9 +9,7 @@ from PIL import Image
|
|||||||
from stability_sdk import client
|
from stability_sdk import client
|
||||||
import stability_sdk.interfaces.gooseai.generation.generation_pb2 as generation
|
import stability_sdk.interfaces.gooseai.generation.generation_pb2 as generation
|
||||||
|
|
||||||
from .compute_task import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType, ComputeTaskResultCode
|
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig
|
||||||
from .compute_node import ComputeNode
|
|
||||||
from .storage import AIStorage, UserConfig
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
from .local_st_compute_node import *
|
||||||
+2
-3
@@ -5,9 +5,8 @@ from pydantic import BaseModel
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
import io
|
import io
|
||||||
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskType,ComputeTaskResult,ComputeTaskResultCode
|
|
||||||
from .queue_compute_node import Queue_ComputeNode
|
from aios import ComputeTask, ComputeTaskResult, ComputeTaskState, ComputeTaskType,ComputeTaskResultCode,ComputeNode,AIStorage,UserConfig,ObjectID,Queue_ComputeNode
|
||||||
from knowledge import ObjectID
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -10,13 +10,7 @@ from telegram import Bot
|
|||||||
from telegram.ext import Updater
|
from telegram.ext import Updater
|
||||||
from telegram.error import Forbidden, NetworkError
|
from telegram.error import Forbidden, NetworkError
|
||||||
|
|
||||||
from knowledge import ObjectType, KnowledgeStore
|
from aios import ObjectType, KnowledgeStore,AgentTunnel,AIStorage,ContactManager,Contact,FamilyMember,AgentMsg,AgentMsgType
|
||||||
|
|
||||||
from .tunnel import AgentTunnel
|
|
||||||
from .storage import AIStorage
|
|
||||||
from .contact_manager import ContactManager,Contact,FamilyMember
|
|
||||||
from .agent_base import AgentMsg,AgentMsgType
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -2,8 +2,7 @@ import logging
|
|||||||
import toml
|
import toml
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from aios_kernel import Workflow,AIStorage
|
from aios import Workflow,AIStorage,PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
|
||||||
from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask
|
|
||||||
from agent_manager import AgentManager
|
from agent_manager import AgentManager
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
# might implement by Rust in the future
|
||||||
@@ -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
|
||||||
@@ -11,7 +11,6 @@ from logging.handlers import RotatingFileHandler
|
|||||||
from typing import Any, Optional, TypeVar, Tuple, Sequence
|
from typing import Any, Optional, TypeVar, Tuple, Sequence
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
|
|
||||||
from prompt_toolkit import HTML, PromptSession, prompt,print_formatted_text
|
from prompt_toolkit import HTML, PromptSession, prompt,print_formatted_text
|
||||||
from prompt_toolkit.formatted_text import FormattedText
|
from prompt_toolkit.formatted_text import FormattedText
|
||||||
from prompt_toolkit.selection import SelectionState
|
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.completion import WordCompleter
|
||||||
from prompt_toolkit.styles import Style
|
from prompt_toolkit.styles import Style
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
directory = os.path.dirname(__file__)
|
directory = os.path.dirname(__file__)
|
||||||
sys.path.append(directory + '/../../')
|
sys.path.append(directory + '/../../')
|
||||||
|
|
||||||
@@ -30,15 +27,23 @@ sys.path.append(directory + '/../../')
|
|||||||
# os.environ['HTTPS_PROXY'] = '127.0.0.1:10809'
|
# os.environ['HTTPS_PROXY'] = '127.0.0.1:10809'
|
||||||
|
|
||||||
import proxy
|
import proxy
|
||||||
from aios_kernel import *
|
from aios import *
|
||||||
from knowledge import *
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sys.path.append(directory + '/../../component/')
|
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 agent_manager import AgentManager
|
||||||
from workflow_manager import WorkflowManager
|
from workflow_manager import WorkflowManager
|
||||||
from knowledge_manager import KnowledgePipelineManager
|
from knowledge_manager import KnowledgePipelineManager
|
||||||
|
from tg_tunnel import TelegramTunnel
|
||||||
|
from email_tunnel import EmailTunnel
|
||||||
|
|
||||||
|
from compute_node_config import *
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
+9
-2
@@ -1,4 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
|
compute node config
|
||||||
Configuration for nodes:
|
Configuration for nodes:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -14,12 +15,18 @@ Configuration for nodes:
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
from typing import List
|
from typing import List
|
||||||
|
import sys
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import toml
|
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
|
# define singleton class knowledge pipline
|
||||||
class ComputeNodeConfig:
|
class ComputeNodeConfig:
|
||||||
@@ -9,7 +9,7 @@ import logging
|
|||||||
directory = os.path.dirname(__file__)
|
directory = os.path.dirname(__file__)
|
||||||
sys.path.append(directory + '/../../')
|
sys.path.append(directory + '/../../')
|
||||||
|
|
||||||
from aios_kernel import AIStorage
|
from aios import AIStorage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
TODO
|
|
||||||
Reference in New Issue
Block a user