Skip to content

Commit

Permalink
fix bugs~
Browse files Browse the repository at this point in the history
  • Loading branch information
waterflier committed Sep 27, 2023
1 parent 6d63c3e commit 857a7ed
Show file tree
Hide file tree
Showing 10 changed files with 183 additions and 178 deletions.
10 changes: 6 additions & 4 deletions rootfs/agents/Jarvis/agent.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ instance_id = "Jarvis"
fullname = "Jarvis"
llm_model_name = "gpt-3.5-turbo-16k-0613"
max_token_size = 16000
#enable_function =["add_event"]
#enable_kb = "true"
enable_timestamp = "true"
owner_prompt = "我是你的主人{name}"
Expand All @@ -26,7 +25,10 @@ David,私人画家
消息内容
```
2.你可以访问我的Calender,查看我的日程安排。如果你在处理信息的过程中需要修改我的日程安排,请直接用合适的方法修改。
3.你可以访问我的个人信息库,当你处理我的信息时,如果需要用到我的个人信息,请先用合适的方法进行查询,然后再基于查询的结果进行进一步处理后再将结果发给我。
4.你能根据我的需要对系统进行配置,但在修改任何配置前,请先和我确认。
5.不符合上述规则的信息,请尽力处理。
3.不符合上述规则的信息,请尽力处理。
"""


#3.你可以访问我的个人信息库,当你处理我的信息时,如果需要用到我的个人信息,请先用合适的方法进行查询,然后再基于查询的结果进行进一步处理后再将结果发给我。
#4.你能根据我的需要对系统进行配置,但在修改任何配置前,请先和我确认。

6 changes: 3 additions & 3 deletions src/aios_kernel/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from .environment import Environment,EnvironmentEvent
from .agent_message import AgentMsg,AgentMsgStatus
from .agent_message import AgentMsg,AgentMsgStatus,AgentMsgType
from .chatsession import AIChatSession
from .agent import AIAgent,AIAgentTemplete,AgentPrompt
from .compute_kernel import ComputeKernel,ComputeTask
from .compute_kernel import ComputeKernel,ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskType
from .compute_node import ComputeNode,LocalComputeNode
from .open_ai_node import OpenAI_ComputeNode
from .knowledge_base import KnowledgeBase
Expand All @@ -24,5 +24,5 @@
from .local_stability_node import Local_Stability_ComputeNode
from .stability_node import Stability_ComputeNode

AIOS_Version = "0.5.1, build 2023-9-17"
AIOS_Version = "0.5.1, build 2023-9-26"

1 change: 1 addition & 0 deletions src/aios_kernel/agent_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class AgentMsgType(Enum):
TYPE_INTERNAL_CALL = 1
TYPE_ACTION = 2
TYPE_EVENT = 3
TYPE_SYSTEM = 4

class AgentMsgStatus(Enum):
RESPONSED = 0
Expand Down
2 changes: 1 addition & 1 deletion src/aios_kernel/bus.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ async def send_message(self,msg:AgentMsg) -> AgentMsg:

retry_times = 0
while True:
resp = sender_handler.results.get(msg.msg_id)
resp : AgentMsg = sender_handler.results.get(msg.msg_id)
if resp is not None:
msg.resp_msg = resp
msg.status = AgentMsgStatus.RESPONSED
Expand Down
77 changes: 19 additions & 58 deletions src/aios_kernel/compute_kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from .agent import AgentPrompt
from .compute_node import ComputeNode
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskResult, ComputeTaskType
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskResult, ComputeTaskType,ComputeTaskResultCode

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -105,10 +105,8 @@ def llm_completion(self, prompt: AgentPrompt, mode_name: Optional[str] = None, m
task_req.set_llm_params(prompt, mode_name, max_token,inner_functions)
self.run(task_req)
return task_req

async def do_llm_completion(self, prompt: AgentPrompt, mode_name: Optional[str] = None, max_token: int = 0, inner_functions = None) -> str:
task_req = self.llm_completion(prompt, mode_name, max_token,inner_functions)


async def _send_task(self,task_req:ComputeTask)->ComputeTaskResult:
async def check_timer():
check_times = 0
while True:
Expand All @@ -126,10 +124,18 @@ async def check_timer():
check_times += 1

await asyncio.create_task(check_timer())
if task_req.state == ComputeTaskState.DONE:
if task_req.result:
return task_req.result
else:
time_out_result = ComputeTaskResult()
time_out_result.result_code = ComputeTaskResultCode.TIMEOUT
time_out_result.set_from_task(task_req)
## craete timeout task_result

async def do_llm_completion(self, prompt: AgentPrompt, mode_name: Optional[str] = None, max_token: int = 0, inner_functions = None) -> str:
task_req = self.llm_completion(prompt, mode_name, max_token,inner_functions)
return await self._send_task(task_req)

raise Exception("error!")


def text_embedding(self,input:str,model_name:Optional[str] = None):
Expand All @@ -140,25 +146,10 @@ def text_embedding(self,input:str,model_name:Optional[str] = None):

async def do_text_embedding(self,input:str,model_name:Optional[str] = None) -> [float]:
task_req = self.text_embedding(input,model_name)
async def check_timer():
check_times = 0
while True:
if task_req.state == ComputeTaskState.DONE:
break
task_result = await self._send_task(task_req)

if task_req.state == ComputeTaskState.ERROR:
break

if check_times >= 20:
task_req.state = ComputeTaskState.ERROR
break

await asyncio.sleep(0.5)
check_times += 1

await asyncio.create_task(check_timer())
if task_req.state == ComputeTaskState.DONE:
return task_req.result.result
return task_result.result

return "error!"

Expand All @@ -179,22 +170,10 @@ async def do_text_to_speech(self,
task_req.task_type = ComputeTaskType.TEXT_2_VOICE
self.run(task_req)

check_times = 0
while True:
if task_req.state == ComputeTaskState.DONE:
break
if task_req.state == ComputeTaskState.ERROR:
break
if check_times >= 60:
task_req.state = ComputeTaskState.ERROR
break
await asyncio.sleep(0.5)
check_times += 1
task_result = await self._send_task(task_req)

if task_req.state == ComputeTaskState.DONE:
return task_req.result.result
else:
raise Exception("do_text_to_speech failed!")
return task_result.result


def text_2_image(self, prompt:str, model_name:Optional[str] = None):
Expand All @@ -205,27 +184,9 @@ def text_2_image(self, prompt:str, model_name:Optional[str] = None):

async def do_text_2_image(self, prompt:str, model_name:Optional[str] = None) -> [str, ComputeTaskResult]:
task_req = self.text_2_image(prompt,model_name)
async def check_timer():
check_times = 0
while True:
if task_req.state == ComputeTaskState.DONE:
break

if task_req.state == ComputeTaskState.ERROR:
break

#may be it will take a long time to generate a image
if check_times >= 60:
task_req.state = ComputeTaskState.ERROR
break

await asyncio.sleep(0.5)
check_times += 1

await asyncio.create_task(check_timer())

task_result = self._send_task(task_req)
if task_req.state == ComputeTaskState.DONE:
return None, task_req.result
return None, task_result

return task_req.error_str, None

6 changes: 6 additions & 0 deletions src/aios_kernel/compute_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
import uuid
import time

class ComputeTaskResultCode(Enum):
OK = 0
TIMEOUT = 1
NO_WORK = 2


class ComputeTaskState(Enum):
DONE = 0
Expand Down Expand Up @@ -95,3 +100,4 @@ def __init__(self) -> None:
def set_from_task(self, task: ComputeTask):
self.task_id = task.task_id
self.callchain_id = task.callchain_id
task.result = self
6 changes: 4 additions & 2 deletions src/aios_kernel/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,16 @@ async def save_to_user_config(self) -> None:
def get_config_item(self,key:str) -> Any:
config_item = self.config_table.get(key)
if config_item is None:
raise Exception("user config key %s not exist",key)
logger.warning(f"user config key {key} not exist")
return None

return config_item

def get_value(self,key:str)->Any:
config_item = self.config_table.get(key)
if config_item is None:
raise Exception("user config key %s not exist",key)
logger.warning(f"user config key {key} not exist")
return None

if config_item.value is None:
return config_item.default_value
Expand Down
20 changes: 19 additions & 1 deletion src/aios_kernel/tg_tunnel.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,13 @@ async def load_tg_tunnel(config:dict) -> AgentTunnel:


async def load_from_config(self,config:dict)->bool:
self.type = "TelegramTunnel"
self.tg_token = config["token"]
self.target_id = config["target"]
self.tunnel_id = config["tunnel_id"]
self.type = "TelegramTunnel"
if config.get("allow") is not None:
self.allow_group = config["allow"]

return True

def dump_to_config(self) -> dict:
Expand All @@ -47,6 +50,7 @@ def __init__(self,tg_token:str) -> None:
self.tg_token = tg_token
self.bot:Bot = None
self.update_queue = None
self.allow_group = "contact"

async def _do_process_raw_message(self,bot: Bot, update_id: int) -> int:
# Request updates after the last update_id
Expand Down Expand Up @@ -88,6 +92,11 @@ async def _run_app():
except Forbidden:
# The user has removed or blocked the bot.
update_id += 1
except Exception as e:
logger.error(f"tg_tunnel error:{e}")
await asyncio.sleep(1)



asyncio.create_task(_run_app())
logger.info(f"tunnel {self.tunnel_id} started.")
Expand Down Expand Up @@ -130,7 +139,16 @@ async def on_message(self, bot:Bot, update: Update) -> None:

if contact is not None:
reomte_user_name = contact.name
if not contact.is_family_member:
if self.allow_group != "contact" and self.allow_group !="guest":
await update.message.reply_text(f"You are not allowed to talk to me! Please contact my father~")
return

else:
if self.allow_group != "guest":
await update.message.reply_text(f"You are not allowed to talk to me! Please contact my father~")
return

if cm.is_auto_create_contact_from_telegram:
contact_name = update.effective_user.first_name
if update.effective_user.last_name is not None:
Expand Down
Loading

0 comments on commit 857a7ed

Please sign in to comment.