Add chat history limit for Agent and Role.
Fix bugs.
This commit is contained in:
@@ -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.不符合上述规则的信息,请尽力处理。
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
instance_id = "agent:xxxxxxabcde"
|
||||
fullname = "jackma"
|
||||
[[prompt]]
|
||||
role = "system"
|
||||
content = "你擅长处理商务电子邮件"
|
||||
@@ -5,4 +5,4 @@ enable_function = []
|
||||
|
||||
[[prompt]]
|
||||
role = "system"
|
||||
content = "你是一个童话做作家,能够写出各种有趣的童话。"
|
||||
content = "你是一个童话作家,能够写出各种有趣的童话。"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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"]
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user