fix bugs~
This commit is contained in:
@@ -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
|
||||
@@ -24,5 +24,5 @@ from .workspace_env import WorkspaceEnvironment
|
||||
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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -78,7 +78,7 @@ class AIBus:
|
||||
|
||||
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
|
||||
|
||||
@@ -7,7 +7,7 @@ from asyncio import Queue
|
||||
|
||||
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__)
|
||||
|
||||
@@ -105,10 +105,8 @@ class ComputeKernel:
|
||||
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:
|
||||
@@ -126,10 +124,18 @@ class ComputeKernel:
|
||||
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):
|
||||
@@ -140,25 +146,10 @@ class ComputeKernel:
|
||||
|
||||
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!"
|
||||
|
||||
@@ -179,22 +170,10 @@ class ComputeKernel:
|
||||
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):
|
||||
@@ -205,27 +184,9 @@ class ComputeKernel:
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -3,6 +3,11 @@ from enum import Enum
|
||||
import uuid
|
||||
import time
|
||||
|
||||
class ComputeTaskResultCode(Enum):
|
||||
OK = 0
|
||||
TIMEOUT = 1
|
||||
NO_WORK = 2
|
||||
|
||||
|
||||
class ComputeTaskState(Enum):
|
||||
DONE = 0
|
||||
@@ -95,3 +100,4 @@ class ComputeTaskResult:
|
||||
def set_from_task(self, task: ComputeTask):
|
||||
self.task_id = task.task_id
|
||||
self.callchain_id = task.callchain_id
|
||||
task.result = self
|
||||
|
||||
@@ -92,14 +92,16 @@ class UserConfig:
|
||||
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
|
||||
|
||||
@@ -32,10 +32,13 @@ class TelegramTunnel(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:
|
||||
@@ -47,6 +50,7 @@ class TelegramTunnel(AgentTunnel):
|
||||
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
|
||||
@@ -88,6 +92,11 @@ class TelegramTunnel(AgentTunnel):
|
||||
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.")
|
||||
@@ -130,7 +139,16 @@ class TelegramTunnel(AgentTunnel):
|
||||
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user