mirror of https://github.com/Mai-with-u/MaiBot.git
初步修复PFC的导入错误
parent
a8c25cdc15
commit
a72bcc4759
|
|
@ -1,14 +1,14 @@
|
||||||
import time
|
import time
|
||||||
from typing import Tuple, Optional # 增加了 Optional
|
from typing import Tuple, Optional # 增加了 Optional
|
||||||
from src.common.logger_manager import get_logger
|
from src.common.logger import get_logger
|
||||||
from ..models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
from ...config.config import global_config
|
from src.config.config import global_config
|
||||||
|
import random
|
||||||
from .chat_observer import ChatObserver
|
from .chat_observer import ChatObserver
|
||||||
from .pfc_utils import get_items_from_json
|
from .pfc_utils import get_items_from_json
|
||||||
from src.individuality.individuality import Individuality
|
|
||||||
from .observation_info import ObservationInfo
|
from .observation_info import ObservationInfo
|
||||||
from .conversation_info import ConversationInfo
|
from .conversation_info import ConversationInfo
|
||||||
from src.plugins.utils.chat_message_builder import build_readable_messages
|
from src.chat.utils.chat_message_builder import build_readable_messages
|
||||||
|
|
||||||
|
|
||||||
logger = get_logger("pfc_action_planner")
|
logger = get_logger("pfc_action_planner")
|
||||||
|
|
@ -113,12 +113,27 @@ class ActionPlanner:
|
||||||
max_tokens=1500,
|
max_tokens=1500,
|
||||||
request_type="action_planning",
|
request_type="action_planning",
|
||||||
)
|
)
|
||||||
self.personality_info = Individuality.get_instance().get_prompt(x_person=2, level=3)
|
self.personality_info = self._get_personality_prompt()
|
||||||
self.name = global_config.BOT_NICKNAME
|
self.name = global_config.BOT_NICKNAME
|
||||||
self.private_name = private_name
|
self.private_name = private_name
|
||||||
self.chat_observer = ChatObserver.get_instance(stream_id, private_name)
|
self.chat_observer = ChatObserver.get_instance(stream_id, private_name)
|
||||||
# self.action_planner_info = ActionPlannerInfo() # 移除未使用的变量
|
# self.action_planner_info = ActionPlannerInfo() # 移除未使用的变量
|
||||||
|
|
||||||
|
def _get_personality_prompt(self) -> str:
|
||||||
|
"""获取个性提示信息"""
|
||||||
|
prompt_personality = global_config.personality.personality
|
||||||
|
|
||||||
|
# 检查是否需要随机替换为状态
|
||||||
|
if (
|
||||||
|
global_config.personality.states
|
||||||
|
and global_config.personality.state_probability > 0
|
||||||
|
and random.random() < global_config.personality.state_probability
|
||||||
|
):
|
||||||
|
prompt_personality = random.choice(global_config.personality.states)
|
||||||
|
|
||||||
|
bot_name = global_config.BOT_NICKNAME
|
||||||
|
return f"你的名字是{bot_name},你{prompt_personality};"
|
||||||
|
|
||||||
# 修改 plan 方法签名,增加 last_successful_reply_action 参数
|
# 修改 plan 方法签名,增加 last_successful_reply_action 参数
|
||||||
async def plan(
|
async def plan(
|
||||||
self,
|
self,
|
||||||
|
|
|
||||||
|
|
@ -3,22 +3,22 @@ import asyncio
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
# from .message_storage import MongoDBMessageStorage
|
# from .message_storage import MongoDBMessageStorage
|
||||||
from src.plugins.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat
|
from src.chat.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat
|
||||||
|
|
||||||
# from ...config.config import global_config
|
# from src.config.config import global_config
|
||||||
from typing import Dict, Any, Optional
|
from typing import Dict, Any, Optional
|
||||||
from ..chat.message import Message
|
from src.chat.message_receive.message import Message
|
||||||
from .pfc_types import ConversationState
|
from .pfc_types import ConversationState
|
||||||
from .pfc import ChatObserver, GoalAnalyzer
|
from .pfc import ChatObserver, GoalAnalyzer
|
||||||
from .message_sender import DirectMessageSender
|
from .message_sender import DirectMessageSender
|
||||||
from src.common.logger_manager import get_logger
|
from src.common.logger import get_logger
|
||||||
from .action_planner import ActionPlanner
|
from .action_planner import ActionPlanner
|
||||||
from .observation_info import ObservationInfo
|
from .observation_info import ObservationInfo
|
||||||
from .conversation_info import ConversationInfo # 确保导入 ConversationInfo
|
from .conversation_info import ConversationInfo # 确保导入 ConversationInfo
|
||||||
from .reply_generator import ReplyGenerator
|
from .reply_generator import ReplyGenerator
|
||||||
from ..chat.chat_stream import ChatStream
|
from src.chat.message_receive.chat_stream import ChatStream
|
||||||
from maim_message import UserInfo
|
from maim_message import UserInfo
|
||||||
from src.plugins.chat.chat_stream import chat_manager
|
from src.chat.message_receive.chat_stream import get_chat_manager
|
||||||
from .pfc_KnowledgeFetcher import KnowledgeFetcher
|
from .pfc_KnowledgeFetcher import KnowledgeFetcher
|
||||||
from .waiter import Waiter
|
from .waiter import Waiter
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ class Conversation:
|
||||||
self.direct_sender = DirectMessageSender(self.private_name)
|
self.direct_sender = DirectMessageSender(self.private_name)
|
||||||
|
|
||||||
# 获取聊天流信息
|
# 获取聊天流信息
|
||||||
self.chat_stream = chat_manager.get_stream(self.stream_id)
|
self.chat_stream = get_chat_manager().get_stream(self.stream_id)
|
||||||
|
|
||||||
self.stop_action_planner = False
|
self.stop_action_planner = False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -248,14 +248,14 @@ class Conversation:
|
||||||
def _convert_to_message(self, msg_dict: Dict[str, Any]) -> Message:
|
def _convert_to_message(self, msg_dict: Dict[str, Any]) -> Message:
|
||||||
"""将消息字典转换为Message对象"""
|
"""将消息字典转换为Message对象"""
|
||||||
try:
|
try:
|
||||||
# 尝试从 msg_dict 直接获取 chat_stream,如果失败则从全局 chat_manager 获取
|
# 尝试从 msg_dict 直接获取 chat_stream,如果失败则从全局 get_chat_manager 获取
|
||||||
chat_info = msg_dict.get("chat_info")
|
chat_info = msg_dict.get("chat_info")
|
||||||
if chat_info and isinstance(chat_info, dict):
|
if chat_info and isinstance(chat_info, dict):
|
||||||
chat_stream = ChatStream.from_dict(chat_info)
|
chat_stream = ChatStream.from_dict(chat_info)
|
||||||
elif self.chat_stream: # 使用实例变量中的 chat_stream
|
elif self.chat_stream: # 使用实例变量中的 chat_stream
|
||||||
chat_stream = self.chat_stream
|
chat_stream = self.chat_stream
|
||||||
else: # Fallback: 尝试从 manager 获取 (可能需要 stream_id)
|
else: # Fallback: 尝试从 manager 获取 (可能需要 stream_id)
|
||||||
chat_stream = chat_manager.get_stream(self.stream_id)
|
chat_stream = get_chat_manager().get_stream(self.stream_id)
|
||||||
if not chat_stream:
|
if not chat_stream:
|
||||||
raise ValueError(f"无法确定 ChatStream for stream_id {self.stream_id}")
|
raise ValueError(f"无法确定 ChatStream for stream_id {self.stream_id}")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger
|
||||||
from ..chat.chat_stream import ChatStream
|
from src.chat.message_receive.chat_stream import ChatStream
|
||||||
from ..chat.message import Message
|
from src.chat.message_receive.message import Message, MessageSending
|
||||||
from maim_message import UserInfo, Seg
|
from maim_message import UserInfo, Seg
|
||||||
from src.plugins.chat.message import MessageSending, MessageSet
|
from src.chat.message_receive.storage import MessageStorage
|
||||||
from src.plugins.chat.message_sender import message_manager
|
from src.config.config import global_config
|
||||||
from ..storage.storage import MessageStorage
|
|
||||||
from ...config.config import global_config
|
|
||||||
from rich.traceback import install
|
from rich.traceback import install
|
||||||
|
|
||||||
install(extra_lines=3)
|
install(extra_lines=3)
|
||||||
|
|
@ -66,15 +64,18 @@ class DirectMessageSender:
|
||||||
# 处理消息
|
# 处理消息
|
||||||
await message.process()
|
await message.process()
|
||||||
|
|
||||||
# 不知道有什么用,先留下来了,和之前那套sender一样
|
# 发送消息(直接调用底层 API)
|
||||||
_message_json = message.to_dict()
|
from src.chat.message_receive.uni_message_sender import _send_message
|
||||||
|
|
||||||
# 发送消息
|
sent = await _send_message(message, show_log=True)
|
||||||
message_set = MessageSet(chat_stream, message_id)
|
|
||||||
message_set.add_message(message)
|
if sent:
|
||||||
await message_manager.add_message(message_set)
|
# 存储消息
|
||||||
await self.storage.store_message(message, chat_stream)
|
await self.storage.store_message(message, chat_stream)
|
||||||
logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
|
logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
|
||||||
|
else:
|
||||||
|
logger.error(f"[私聊][{self.private_name}]PFC消息发送失败")
|
||||||
|
raise RuntimeError("消息发送失败")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")
|
logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import time
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger
|
||||||
from .chat_observer import ChatObserver
|
from .chat_observer import ChatObserver
|
||||||
from .chat_states import NotificationHandler, NotificationType, Notification
|
from .chat_states import NotificationHandler, NotificationType, Notification
|
||||||
from src.plugins.utils.chat_message_builder import build_readable_messages
|
from src.chat.utils.chat_message_builder import build_readable_messages
|
||||||
import traceback # 导入 traceback 用于调试
|
import traceback # 导入 traceback 用于调试
|
||||||
|
|
||||||
logger = get_module_logger("observation_info")
|
logger = get_module_logger("observation_info")
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
from typing import List, Tuple, TYPE_CHECKING
|
from typing import List, Tuple, TYPE_CHECKING
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger
|
||||||
from ..models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
from ...config.config import global_config
|
from src.config.config import global_config
|
||||||
|
import random
|
||||||
from .chat_observer import ChatObserver
|
from .chat_observer import ChatObserver
|
||||||
from .pfc_utils import get_items_from_json
|
from .pfc_utils import get_items_from_json
|
||||||
from src.individuality.individuality import Individuality
|
|
||||||
from .conversation_info import ConversationInfo
|
from .conversation_info import ConversationInfo
|
||||||
from .observation_info import ObservationInfo
|
from .observation_info import ObservationInfo
|
||||||
from src.plugins.utils.chat_message_builder import build_readable_messages
|
from src.chat.utils.chat_message_builder import build_readable_messages
|
||||||
from rich.traceback import install
|
from rich.traceback import install
|
||||||
|
|
||||||
install(extra_lines=3)
|
install(extra_lines=3)
|
||||||
|
|
@ -46,7 +46,7 @@ class GoalAnalyzer:
|
||||||
model=global_config.llm_normal, temperature=0.7, max_tokens=1000, request_type="conversation_goal"
|
model=global_config.llm_normal, temperature=0.7, max_tokens=1000, request_type="conversation_goal"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.personality_info = Individuality.get_instance().get_prompt(x_person=2, level=3)
|
self.personality_info = self._get_personality_prompt()
|
||||||
self.name = global_config.BOT_NICKNAME
|
self.name = global_config.BOT_NICKNAME
|
||||||
self.nick_name = global_config.BOT_ALIAS_NAMES
|
self.nick_name = global_config.BOT_ALIAS_NAMES
|
||||||
self.private_name = private_name
|
self.private_name = private_name
|
||||||
|
|
@ -57,6 +57,21 @@ class GoalAnalyzer:
|
||||||
self.max_goals = 3 # 同时保持的最大目标数量
|
self.max_goals = 3 # 同时保持的最大目标数量
|
||||||
self.current_goal_and_reason = None
|
self.current_goal_and_reason = None
|
||||||
|
|
||||||
|
def _get_personality_prompt(self) -> str:
|
||||||
|
"""获取个性提示信息"""
|
||||||
|
prompt_personality = global_config.personality.personality
|
||||||
|
|
||||||
|
# 检查是否需要随机替换为状态
|
||||||
|
if (
|
||||||
|
global_config.personality.states
|
||||||
|
and global_config.personality.state_probability > 0
|
||||||
|
and random.random() < global_config.personality.state_probability
|
||||||
|
):
|
||||||
|
prompt_personality = random.choice(global_config.personality.states)
|
||||||
|
|
||||||
|
bot_name = global_config.bot.nickname
|
||||||
|
return f"你的名字是{bot_name},你{prompt_personality};"
|
||||||
|
|
||||||
async def analyze_goal(self, conversation_info: ConversationInfo, observation_info: ObservationInfo):
|
async def analyze_goal(self, conversation_info: ConversationInfo, observation_info: ObservationInfo):
|
||||||
"""分析对话历史并设定目标
|
"""分析对话历史并设定目标
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
from typing import List, Tuple
|
from typing import List, Tuple
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger
|
||||||
from src.plugins.memory_system.Hippocampus import HippocampusManager
|
from src.plugins.memory_system.Hippocampus import HippocampusManager
|
||||||
from ..models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
from ...config.config import global_config
|
from src.config.config import global_config
|
||||||
from ..chat.message import Message
|
from src.chat.message_receive.message import Message
|
||||||
from ..knowledge.knowledge_lib import qa_manager
|
from src.chat.knowledge.knowledge_lib import qa_manager
|
||||||
from ..utils.chat_message_builder import build_readable_messages
|
from src.chat.utils.chat_message_builder import build_readable_messages
|
||||||
|
|
||||||
logger = get_module_logger("knowledge_fetcher")
|
logger = get_module_logger("knowledge_fetcher")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import json
|
import json
|
||||||
from typing import Tuple, List, Dict, Any
|
from typing import Tuple, List, Dict, Any
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger
|
||||||
from ..models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
from ...config.config import global_config
|
from src.config.config import global_config
|
||||||
from .chat_observer import ChatObserver
|
from .chat_observer import ChatObserver
|
||||||
from maim_message import UserInfo
|
from maim_message import UserInfo
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
from typing import Tuple, List, Dict, Any
|
from typing import Tuple, List, Dict, Any
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_logger
|
||||||
from ..models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
from ...config.config import global_config
|
from src.config.config import global_config
|
||||||
|
import random
|
||||||
from .chat_observer import ChatObserver
|
from .chat_observer import ChatObserver
|
||||||
from .reply_checker import ReplyChecker
|
from .reply_checker import ReplyChecker
|
||||||
from src.individuality.individuality import Individuality
|
|
||||||
from .observation_info import ObservationInfo
|
from .observation_info import ObservationInfo
|
||||||
from .conversation_info import ConversationInfo
|
from .conversation_info import ConversationInfo
|
||||||
from src.plugins.utils.chat_message_builder import build_readable_messages
|
from src.chat.utils.chat_message_builder import build_readable_messages
|
||||||
|
|
||||||
logger = get_module_logger("reply_generator")
|
logger = get_logger("reply_generator")
|
||||||
|
|
||||||
# --- 定义 Prompt 模板 ---
|
# --- 定义 Prompt 模板 ---
|
||||||
|
|
||||||
|
|
@ -92,12 +92,27 @@ class ReplyGenerator:
|
||||||
max_tokens=300,
|
max_tokens=300,
|
||||||
request_type="reply_generation",
|
request_type="reply_generation",
|
||||||
)
|
)
|
||||||
self.personality_info = Individuality.get_instance().get_prompt(x_person=2, level=3)
|
self.personality_info = self._get_personality_prompt()
|
||||||
self.name = global_config.BOT_NICKNAME
|
self.name = global_config.BOT_NICKNAME
|
||||||
self.private_name = private_name
|
self.private_name = private_name
|
||||||
self.chat_observer = ChatObserver.get_instance(stream_id, private_name)
|
self.chat_observer = ChatObserver.get_instance(stream_id, private_name)
|
||||||
self.reply_checker = ReplyChecker(stream_id, private_name)
|
self.reply_checker = ReplyChecker(stream_id, private_name)
|
||||||
|
|
||||||
|
def _get_personality_prompt(self) -> str:
|
||||||
|
"""获取个性提示信息"""
|
||||||
|
prompt_personality = global_config.personality.personality
|
||||||
|
|
||||||
|
# 检查是否需要随机替换为状态
|
||||||
|
if (
|
||||||
|
global_config.personality.states
|
||||||
|
and global_config.personality.state_probability > 0
|
||||||
|
and random.random() < global_config.personality.state_probability
|
||||||
|
):
|
||||||
|
prompt_personality = random.choice(global_config.personality.states)
|
||||||
|
|
||||||
|
bot_name = global_config.BOT_NICKNAME
|
||||||
|
return f"你的名字是{bot_name},你{prompt_personality};"
|
||||||
|
|
||||||
# 修改 generate 方法签名,增加 action_type 参数
|
# 修改 generate 方法签名,增加 action_type 参数
|
||||||
async def generate(
|
async def generate(
|
||||||
self, observation_info: ObservationInfo, conversation_info: ConversationInfo, action_type: str
|
self, observation_info: ObservationInfo, conversation_info: ConversationInfo, action_type: str
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from .chat_observer import ChatObserver
|
||||||
from .conversation_info import ConversationInfo
|
from .conversation_info import ConversationInfo
|
||||||
|
|
||||||
# from src.individuality.individuality import Individuality # 不再需要
|
# from src.individuality.individuality import Individuality # 不再需要
|
||||||
from ...config.config import global_config
|
from src.config.config import global_config
|
||||||
import time
|
import time
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue