feat: 完全分离回复 兴趣和 消息阅读;添加概率回复机制,优化兴趣监控逻辑,重构相关功能以支持更灵活的回复触发条件
This commit is contained in:
@@ -26,13 +26,12 @@ class ToolUser:
|
||||
|
||||
@staticmethod
|
||||
async def _build_tool_prompt(
|
||||
message_txt: str, sender_name: str, chat_stream: ChatStream, subheartflow: SubHeartflow = None
|
||||
self, message_txt: str, chat_stream: ChatStream, subheartflow: SubHeartflow = None
|
||||
):
|
||||
"""构建工具使用的提示词
|
||||
|
||||
Args:
|
||||
message_txt: 用户消息文本
|
||||
sender_name: 发送者名称
|
||||
chat_stream: 聊天流对象
|
||||
|
||||
Returns:
|
||||
@@ -44,28 +43,28 @@ class ToolUser:
|
||||
else:
|
||||
mid_memory_info = ""
|
||||
|
||||
stream_id = chat_stream.stream_id
|
||||
chat_talking_prompt = ""
|
||||
if stream_id:
|
||||
chat_talking_prompt = get_recent_group_detailed_plain_text(
|
||||
stream_id, limit=global_config.MAX_CONTEXT_SIZE, combine=True
|
||||
)
|
||||
new_messages = list(
|
||||
db.messages.find({"chat_id": chat_stream.stream_id, "time": {"$gt": time.time()}}).sort("time", 1).limit(15)
|
||||
)
|
||||
new_messages_str = ""
|
||||
for msg in new_messages:
|
||||
if "detailed_plain_text" in msg:
|
||||
new_messages_str += f"{msg['detailed_plain_text']}"
|
||||
# stream_id = chat_stream.stream_id
|
||||
# chat_talking_prompt = ""
|
||||
# if stream_id:
|
||||
# chat_talking_prompt = get_recent_group_detailed_plain_text(
|
||||
# stream_id, limit=global_config.MAX_CONTEXT_SIZE, combine=True
|
||||
# )
|
||||
# new_messages = list(
|
||||
# db.messages.find({"chat_id": chat_stream.stream_id, "time": {"$gt": time.time()}}).sort("time", 1).limit(15)
|
||||
# )
|
||||
# new_messages_str = ""
|
||||
# for msg in new_messages:
|
||||
# if "detailed_plain_text" in msg:
|
||||
# new_messages_str += f"{msg['detailed_plain_text']}"
|
||||
|
||||
# 这些信息应该从调用者传入,而不是从self获取
|
||||
bot_name = global_config.BOT_NICKNAME
|
||||
prompt = ""
|
||||
prompt += mid_memory_info
|
||||
prompt += "你正在思考如何回复群里的消息。\n"
|
||||
prompt += "之前群里进行了如下讨论:\n"
|
||||
prompt += chat_talking_prompt
|
||||
prompt += f"你注意到{sender_name}刚刚说:{message_txt}\n"
|
||||
prompt += f"之前群里进行了如下讨论:\n"
|
||||
prompt += message_txt
|
||||
# prompt += f"你注意到{sender_name}刚刚说:{message_txt}\n"
|
||||
prompt += f"注意你就是{bot_name},{bot_name}是你的名字。根据之前的聊天记录补充问题信息,搜索时避开你的名字。\n"
|
||||
prompt += "你现在需要对群里的聊天内容进行回复,现在选择工具来对消息和你的回复进行处理,你是否需要额外的信息,比如回忆或者搜寻已有的知识,改变关系和情感,或者了解你现在正在做什么。"
|
||||
return prompt
|
||||
@@ -119,7 +118,7 @@ class ToolUser:
|
||||
return None
|
||||
|
||||
async def use_tool(
|
||||
self, message_txt: str, sender_name: str, chat_stream: ChatStream, sub_heartflow: SubHeartflow = None
|
||||
self, message_txt: str, chat_stream: ChatStream, sub_heartflow: SubHeartflow = None
|
||||
):
|
||||
"""使用工具辅助思考,判断是否需要额外信息
|
||||
|
||||
@@ -134,7 +133,7 @@ class ToolUser:
|
||||
"""
|
||||
try:
|
||||
# 构建提示词
|
||||
prompt = await self._build_tool_prompt(message_txt, sender_name, chat_stream, sub_heartflow)
|
||||
prompt = await self._build_tool_prompt(message_txt, chat_stream, sub_heartflow)
|
||||
|
||||
# 定义可用工具
|
||||
tools = self._define_tools()
|
||||
|
||||
Reference in New Issue
Block a user