diff --git a/rootfs/agents/Jarvis/agent.toml b/rootfs/agents/Jarvis/agent.toml index c27f3bb..9318890 100644 --- a/rootfs/agents/Jarvis/agent.toml +++ b/rootfs/agents/Jarvis/agent.toml @@ -5,27 +5,28 @@ max_token_size = 16000 #enable_kb = "true" enable_timestamp = "true" owner_prompt = "我是你的主人{name}" -contact_prompt = "我是你的朋友{name}" +contact_prompt = "我是你的主人的朋友{name}" owner_env = "calender" [[prompt]] role = "system" content = """ -你叫Jarvis,是我的超级私人助理。 -你领导一个团队为我服务,团队的成员有: +你叫Jarvis,是主人的超级私人助理。 +你领导一个团队为主人服务,团队的成员有: Tracy,私人英语老师 -David,私人画家 +Mia,主人的私人文档管理专家 *** -你看到的信息里有的有时会带上时间标签,这是为了让你更好的理解时间。你回复的信息不用创建这个时间标签。 -你在收到我的信息后,按如下规则处理 +你看到的信息里有的有时会带上时间,这是为了让你更好的理解消息的创建。你回复信息时不带这个时间标签。 +你在收到的信息后,按如下规则处理 1. 如果你认为团队里有人更适合处理该信息,用下面方法转发消息给他们处理 ``` ##/send_msg 成员名字 消息内容 ``` -2.你可以访问我的Calender,查看我的日程安排。如果你在处理信息的过程中需要修改我的日程安排,请直接用合适的方法修改。 -3.不符合上述规则的信息,请尽力处理。 +2.你可以访问主人的Calender,查看主人的日程安排。如果你在处理信息的过程中需要修改主人的日程安排,请直接用合适的方法修改。 +3.你要注意和你聊天的人的身份,并根据其身份给予适当的服务。 +4.不符合上述规则的信息,请尽力处理。 """ diff --git a/rootfs/agents/email_reader/agent.toml b/rootfs/agents/email_reader/agent.toml deleted file mode 100644 index a6baba9..0000000 --- a/rootfs/agents/email_reader/agent.toml +++ /dev/null @@ -1,5 +0,0 @@ -instance_id = "agent:xxxxxxabcde" -fullname = "jackma" -[[prompt]] -role = "system" -content = "你擅长处理商务电子邮件" diff --git a/rootfs/agents/fairy_tale_writer/agent.toml b/rootfs/agents/fairy_tale_writer/agent.toml index 7955df6..cb18802 100644 --- a/rootfs/agents/fairy_tale_writer/agent.toml +++ b/rootfs/agents/fairy_tale_writer/agent.toml @@ -5,4 +5,4 @@ enable_function = [] [[prompt]] role = "system" -content = "你是一个童话做作家,能够写出各种有趣的童话。" +content = "你是一个童话作家,能够写出各种有趣的童话。" diff --git a/src/aios_kernel/agent.py b/src/aios_kernel/agent.py index 269ba85..bbebc16 100644 --- a/src/aios_kernel/agent.py +++ b/src/aios_kernel/agent.py @@ -118,6 +118,7 @@ class AIAgent: self.guest_prompt_str = None self.owner_promp_str = None self.contact_prompt_str = None + self.history_len = 10 self.chat_db = None self.unread_msg = Queue() # msg from other agent @@ -179,6 +180,8 @@ class AIAgent: self.enable_kb = bool(config["enable_kb"]) if config.get("enable_timestamp") is not None: self.enable_timestamp = bool(config["enable_timestamp"]) + if config.get("history_len"): + self.history_len = int(config.get("history_len")) return True @@ -459,7 +462,7 @@ class AIAgent: async def _get_prompt_from_session(self,chatsession:AIChatSession,system_token_len,input_token_len,is_groupchat=False) -> AgentPrompt: # TODO: get prompt from group chat is different from single chat history_len = (self.max_token_size * 0.7) - system_token_len - input_token_len - messages = chatsession.read_history() # read + messages = chatsession.read_history(self.history_len) # read result_token_len = 0 result_prompt = AgentPrompt() read_history_msg = 0 diff --git a/src/aios_kernel/knowledge_pipeline.py b/src/aios_kernel/knowledge_pipeline.py index b8c7677..9b6b111 100644 --- a/src/aios_kernel/knowledge_pipeline.py +++ b/src/aios_kernel/knowledge_pipeline.py @@ -401,3 +401,5 @@ class KnowledgePipline: # await source.run_once() for source in self.source_queue: await source.run_once() + + logging.info(f"knowledge pipeline finished") \ No newline at end of file diff --git a/src/aios_kernel/role.py b/src/aios_kernel/role.py index 2f58894..83d64d6 100644 --- a/src/aios_kernel/role.py +++ b/src/aios_kernel/role.py @@ -13,6 +13,7 @@ class AIRole: self.introduce : str = None self.agent = None self.enable_function_list : list[str] = None + self.history_len = 10 def load_from_config(self,config:dict) -> bool: name_node = config.get("name") @@ -39,6 +40,10 @@ class AIRole: if intro_node is not None: self.introduce = intro_node + history_node = config.get("history_len") + if history_node: + self.history_len = int(history_node) + if config.get("enable_function") is not None: self.enable_function_list = config["enable_function"] diff --git a/src/aios_kernel/workflow.py b/src/aios_kernel/workflow.py index ee95d21..69dcbdd 100644 --- a/src/aios_kernel/workflow.py +++ b/src/aios_kernel/workflow.py @@ -446,7 +446,7 @@ class Workflow: # prompt.append(self._get_knowlege_prompt(the_role.get_name())) #support group chat, user content include sender name! - prompt.append(await self._get_prompt_from_session(workflow_chat_session)) + prompt.append(await self._get_prompt_from_session(the_role,workflow_chat_session)) msg_prompt = AgentPrompt() msg_prompt.messages = [{"role":"user","content":f"user name is {msg.sender}, his question is :{msg.body}"}] @@ -536,8 +536,8 @@ class Workflow: return await _do_process_msg() - async def _get_prompt_from_session(self,chatsession:AIChatSession) -> AgentPrompt: - messages = chatsession.read_history() # read last 10 message + async def _get_prompt_from_session(self,the_role:AIRole,chatsession:AIChatSession) -> AgentPrompt: + messages = chatsession.read_history(the_role.history_len) # read last 10 message result_prompt = AgentPrompt() for msg in reversed(messages): if msg.sender == chatsession.owner_id: diff --git a/src/service/aios_shell/aios_shell.py b/src/service/aios_shell/aios_shell.py index ad1cb8c..aeb0dca 100644 --- a/src/service/aios_shell/aios_shell.py +++ b/src/service/aios_shell/aios_shell.py @@ -111,7 +111,7 @@ class AIOS_Shell: owenr.email = AIStorage.get_instance().get_user_config().get_value("email") owenr.telegram = AIStorage.get_instance().get_user_config().get_value("telegram") - cm.add_contact(self.username,owenr) + cm.add_family_member(self.username,owenr) knowledge_env = KnowledgeEnvironment("knowledge")