Merge branch 'dev' of https://github.com/MaiM-with-u/MaiBot into dev
This commit is contained in:
@@ -16,6 +16,7 @@ from src.chat.focus_chat.info.info_base import InfoBase
|
|||||||
from src.chat.focus_chat.info_processors.chattinginfo_processor import ChattingInfoProcessor
|
from src.chat.focus_chat.info_processors.chattinginfo_processor import ChattingInfoProcessor
|
||||||
from src.chat.focus_chat.info_processors.mind_processor import MindProcessor
|
from src.chat.focus_chat.info_processors.mind_processor import MindProcessor
|
||||||
from src.chat.focus_chat.info_processors.working_memory_processor import WorkingMemoryProcessor
|
from src.chat.focus_chat.info_processors.working_memory_processor import WorkingMemoryProcessor
|
||||||
|
|
||||||
# from src.chat.focus_chat.info_processors.action_processor import ActionProcessor
|
# from src.chat.focus_chat.info_processors.action_processor import ActionProcessor
|
||||||
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
|
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
|
||||||
from src.chat.heart_flow.observation.working_observation import WorkingMemoryObservation
|
from src.chat.heart_flow.observation.working_observation import WorkingMemoryObservation
|
||||||
@@ -481,7 +482,7 @@ class HeartFChatting:
|
|||||||
await self.action_modifier.modify_actions(observations=observations, running_memorys=running_memorys)
|
await self.action_modifier.modify_actions(observations=observations, running_memorys=running_memorys)
|
||||||
await self.action_observation.observe()
|
await self.action_observation.observe()
|
||||||
observations.append(self.action_observation)
|
observations.append(self.action_observation)
|
||||||
|
|
||||||
with Timer("执行 信息处理器", cycle_timers):
|
with Timer("执行 信息处理器", cycle_timers):
|
||||||
all_plan_info, processor_time_costs = await self._process_processors(
|
all_plan_info, processor_time_costs = await self._process_processors(
|
||||||
observations, running_memorys, cycle_timers
|
observations, running_memorys, cycle_timers
|
||||||
|
|||||||
@@ -29,7 +29,10 @@ class ChattingInfoProcessor(BaseProcessor):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
# TODO: API-Adapter修改标记
|
# TODO: API-Adapter修改标记
|
||||||
self.model_summary = LLMRequest(
|
self.model_summary = LLMRequest(
|
||||||
model=global_config.model.utils_small, temperature=0.7, max_tokens=300, request_type="focus.observation.chat"
|
model=global_config.model.utils_small,
|
||||||
|
temperature=0.7,
|
||||||
|
max_tokens=300,
|
||||||
|
request_type="focus.observation.chat",
|
||||||
)
|
)
|
||||||
|
|
||||||
async def process_info(
|
async def process_info(
|
||||||
|
|||||||
@@ -70,7 +70,10 @@ class MemoryActivator:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
# TODO: API-Adapter修改标记
|
# TODO: API-Adapter修改标记
|
||||||
self.summary_model = LLMRequest(
|
self.summary_model = LLMRequest(
|
||||||
model=global_config.model.memory_summary, temperature=0.7, max_tokens=50, request_type="focus.memory_activator"
|
model=global_config.model.memory_summary,
|
||||||
|
temperature=0.7,
|
||||||
|
max_tokens=50,
|
||||||
|
request_type="focus.memory_activator",
|
||||||
)
|
)
|
||||||
self.running_memory = []
|
self.running_memory = []
|
||||||
self.cached_keywords = set() # 用于缓存历史关键词
|
self.cached_keywords = set() # 用于缓存历史关键词
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
from typing import List, Optional, Any
|
from typing import List, Optional, Any
|
||||||
from src.chat.heart_flow.observation.observation import Observation
|
from src.chat.heart_flow.observation.observation import Observation
|
||||||
from src.chat.focus_chat.info.info_base import InfoBase
|
|
||||||
from src.chat.focus_chat.info.action_info import ActionInfo
|
|
||||||
from ..info_processors.base_processor import BaseProcessor
|
|
||||||
from src.common.logger_manager import get_logger
|
from src.common.logger_manager import get_logger
|
||||||
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
|
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
|
||||||
from src.chat.heart_flow.observation.chatting_observation import ChattingObservation
|
from src.chat.heart_flow.observation.chatting_observation import ChattingObservation
|
||||||
@@ -15,14 +12,13 @@ from src.chat.focus_chat.planners.action_manager import ActionManager
|
|||||||
logger = get_logger("action_manager")
|
logger = get_logger("action_manager")
|
||||||
|
|
||||||
|
|
||||||
class ActionModifier():
|
class ActionModifier:
|
||||||
"""动作处理器
|
"""动作处理器
|
||||||
|
|
||||||
用于处理Observation对象,将其转换为ObsInfo对象。
|
用于处理Observation对象,将其转换为ObsInfo对象。
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log_prefix = "动作处理"
|
log_prefix = "动作处理"
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, action_manager: ActionManager):
|
def __init__(self, action_manager: ActionManager):
|
||||||
"""初始化观察处理器"""
|
"""初始化观察处理器"""
|
||||||
@@ -73,7 +69,7 @@ class ActionModifier():
|
|||||||
# reasons.append(f"移除动作{action_changes['remove']}因为检测到连续回复")
|
# reasons.append(f"移除动作{action_changes['remove']}因为检测到连续回复")
|
||||||
|
|
||||||
# 处理ChattingObservation
|
# 处理ChattingObservation
|
||||||
if chat_obs :
|
if chat_obs:
|
||||||
obs = chat_obs
|
obs = chat_obs
|
||||||
# 检查动作的关联类型
|
# 检查动作的关联类型
|
||||||
chat_context = chat_manager.get_stream(obs.chat_id).context
|
chat_context = chat_manager.get_stream(obs.chat_id).context
|
||||||
|
|||||||
@@ -101,24 +101,6 @@ class ActionPlanner:
|
|||||||
# 获取观察信息
|
# 获取观察信息
|
||||||
extra_info: list[str] = []
|
extra_info: list[str] = []
|
||||||
|
|
||||||
# # 首先处理动作变更
|
|
||||||
# for info in all_plan_info:
|
|
||||||
# if isinstance(info, ActionInfo) and info.has_changes():
|
|
||||||
# add_actions = info.get_add_actions()
|
|
||||||
# remove_actions = info.get_remove_actions()
|
|
||||||
# reason = info.get_reason()
|
|
||||||
# print(f"{self.log_prefix} 动作变更: {add_actions} {remove_actions} {reason}")
|
|
||||||
|
|
||||||
# # 处理动作的增加
|
|
||||||
# for action_name in add_actions:
|
|
||||||
# if action_name in self.action_manager.get_registered_actions():
|
|
||||||
# self.action_manager.add_action_to_using(action_name)
|
|
||||||
# logger.debug(f"{self.log_prefix}添加动作: {action_name}, 原因: {reason}")
|
|
||||||
|
|
||||||
# # 处理动作的移除
|
|
||||||
# for action_name in remove_actions:
|
|
||||||
# self.action_manager.remove_action_from_using(action_name)
|
|
||||||
# logger.debug(f"{self.log_prefix}移除动作: {action_name}, 原因: {reason}")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -134,6 +116,7 @@ class ActionPlanner:
|
|||||||
|
|
||||||
self_info = name_block + personality_block + identity_block
|
self_info = name_block + personality_block + identity_block
|
||||||
current_mind = "你思考了很久,没有想清晰要做什么"
|
current_mind = "你思考了很久,没有想清晰要做什么"
|
||||||
|
|
||||||
cycle_info = ""
|
cycle_info = ""
|
||||||
structured_info = ""
|
structured_info = ""
|
||||||
extra_info = []
|
extra_info = []
|
||||||
@@ -157,7 +140,7 @@ class ActionPlanner:
|
|||||||
structured_info = info.get_processed_info()
|
structured_info = info.get_processed_info()
|
||||||
# print(f"structured_info: {structured_info}")
|
# print(f"structured_info: {structured_info}")
|
||||||
# elif not isinstance(info, ActionInfo): # 跳过已处理的ActionInfo
|
# elif not isinstance(info, ActionInfo): # 跳过已处理的ActionInfo
|
||||||
# extra_info.append(info.get_processed_info())
|
# extra_info.append(info.get_processed_info())
|
||||||
|
|
||||||
# 获取当前可用的动作
|
# 获取当前可用的动作
|
||||||
current_available_actions = self.action_manager.get_using_actions()
|
current_available_actions = self.action_manager.get_using_actions()
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from src.chat.focus_chat.planners.action_manager import ActionManager
|
|||||||
|
|
||||||
logger = get_logger("observation")
|
logger = get_logger("observation")
|
||||||
|
|
||||||
|
|
||||||
# 特殊的观察,专门用于观察动作
|
# 特殊的观察,专门用于观察动作
|
||||||
# 所有观察的基类
|
# 所有观察的基类
|
||||||
class ActionObservation:
|
class ActionObservation:
|
||||||
@@ -21,7 +22,6 @@ class ActionObservation:
|
|||||||
def get_observe_info(self):
|
def get_observe_info(self):
|
||||||
return self.observe_info
|
return self.observe_info
|
||||||
|
|
||||||
|
|
||||||
def set_action_manager(self, action_manager: ActionManager):
|
def set_action_manager(self, action_manager: ActionManager):
|
||||||
self.action_manager = action_manager
|
self.action_manager = action_manager
|
||||||
self.all_actions = self.action_manager.get_registered_actions()
|
self.all_actions = self.action_manager.get_registered_actions()
|
||||||
@@ -31,6 +31,6 @@ class ActionObservation:
|
|||||||
self.all_using_actions = self.action_manager.get_using_actions()
|
self.all_using_actions = self.action_manager.get_using_actions()
|
||||||
for action_name, action_info in self.all_using_actions.items():
|
for action_name, action_info in self.all_using_actions.items():
|
||||||
action_info_block += f"\n{action_name}: {action_info.get('description', '')}"
|
action_info_block += f"\n{action_name}: {action_info.get('description', '')}"
|
||||||
action_info_block += f"\n注意,除了上面动作选项之外,你在群聊里不能做其他任何事情,这是你能力的边界\n"
|
action_info_block += "\n注意,除了上面动作选项之外,你在群聊里不能做其他任何事情,这是你能力的边界\n"
|
||||||
|
|
||||||
self.observe_info = action_info_block
|
self.observe_info = action_info_block
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from src.common.logger_manager import get_logger
|
from src.common.logger_manager import get_logger
|
||||||
from src.chat.focus_chat.heartFC_Cycleinfo import CycleDetail
|
from src.chat.focus_chat.heartFC_Cycleinfo import CycleDetail
|
||||||
from src.chat.focus_chat.planners.action_manager import ActionManager
|
|
||||||
from typing import List
|
from typing import List
|
||||||
# Import the new utility function
|
# Import the new utility function
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from src.tools.tool_can_use.base_tool import BaseTool
|
from src.tools.tool_can_use.base_tool import BaseTool
|
||||||
from src.chat.utils.utils import get_embedding
|
|
||||||
|
|
||||||
# from src.common.database import db
|
# from src.common.database import db
|
||||||
from src.common.logger_manager import get_logger
|
from src.common.logger_manager import get_logger
|
||||||
@@ -40,9 +39,9 @@ class SearchKnowledgeFromLPMMTool(BaseTool):
|
|||||||
# 调用知识库搜索
|
# 调用知识库搜索
|
||||||
|
|
||||||
knowledge_info = qa_manager.get_knowledge(query)
|
knowledge_info = qa_manager.get_knowledge(query)
|
||||||
|
|
||||||
logger.debug(f"知识库查询结果: {knowledge_info}")
|
logger.debug(f"知识库查询结果: {knowledge_info}")
|
||||||
|
|
||||||
if knowledge_info:
|
if knowledge_info:
|
||||||
content = f"你知道这些知识: {knowledge_info}"
|
content = f"你知道这些知识: {knowledge_info}"
|
||||||
else:
|
else:
|
||||||
@@ -54,6 +53,3 @@ class SearchKnowledgeFromLPMMTool(BaseTool):
|
|||||||
# 在其他异常情况下,确保 id 仍然是 query (如果它被定义了)
|
# 在其他异常情况下,确保 id 仍然是 query (如果它被定义了)
|
||||||
query_id = query if "query" in locals() else "unknown_query"
|
query_id = query if "query" in locals() else "unknown_query"
|
||||||
return {"type": "info", "id": query_id, "content": f"lpmm知识库搜索失败,炸了: {str(e)}"}
|
return {"type": "info", "id": query_id, "content": f"lpmm知识库搜索失败,炸了: {str(e)}"}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user