🤖 自动格式化代码 [skip ci]
This commit is contained in:
4
bot.py
4
bot.py
@@ -16,8 +16,6 @@ from pathlib import Path
|
|||||||
from rich.traceback import install
|
from rich.traceback import install
|
||||||
|
|
||||||
# maim_message imports for console input
|
# maim_message imports for console input
|
||||||
from maim_message import Seg, UserInfo, BaseMessageInfo, MessageBase
|
|
||||||
from src.chat.message_receive.bot import chat_bot
|
|
||||||
|
|
||||||
# 最早期初始化日志系统,确保所有后续模块都使用正确的日志格式
|
# 最早期初始化日志系统,确保所有后续模块都使用正确的日志格式
|
||||||
from src.common.logger import initialize_logging, get_logger, shutdown_logging
|
from src.common.logger import initialize_logging, get_logger, shutdown_logging
|
||||||
@@ -236,7 +234,6 @@ def raw_main():
|
|||||||
return MainSystem()
|
return MainSystem()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
exit_code = 0 # 用于记录程序最终的退出状态
|
exit_code = 0 # 用于记录程序最终的退出状态
|
||||||
try:
|
try:
|
||||||
@@ -265,7 +262,6 @@ if __name__ == "__main__":
|
|||||||
logger.error(f"优雅关闭时发生错误: {ge}")
|
logger.error(f"优雅关闭时发生错误: {ge}")
|
||||||
# 新增:检测外部请求关闭
|
# 新增:检测外部请求关闭
|
||||||
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"主程序发生异常: {str(e)} {str(traceback.format_exc())}")
|
logger.error(f"主程序发生异常: {str(e)} {str(traceback.format_exc())}")
|
||||||
exit_code = 1 # 标记发生错误
|
exit_code = 1 # 标记发生错误
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
from src.mood.mood_manager import mood_manager
|
|
||||||
import enum
|
import enum
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import numpy as np
|
|||||||
from maim_message import UserInfo
|
from maim_message import UserInfo
|
||||||
|
|
||||||
from src.common.logger import get_logger
|
from src.common.logger import get_logger
|
||||||
|
|
||||||
# from src.mood.mood_manager import mood_manager
|
# from src.mood.mood_manager import mood_manager
|
||||||
from ..message_receive.message import MessageRecv
|
from ..message_receive.message import MessageRecv
|
||||||
from src.llm_models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ class S4UStreamGenerator:
|
|||||||
raise ValueError("`replyer_1` 在配置文件中缺少 `model_name` 字段")
|
raise ValueError("`replyer_1` 在配置文件中缺少 `model_name` 字段")
|
||||||
self.replyer_1_config = replyer_1_config
|
self.replyer_1_config = replyer_1_config
|
||||||
|
|
||||||
|
|
||||||
self.current_model_name = "unknown model"
|
self.current_model_name = "unknown model"
|
||||||
self.partial_response = ""
|
self.partial_response = ""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import math
|
import math
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
import asyncio
|
|
||||||
|
|
||||||
from src.chat.message_receive.message import MessageRecv
|
from src.chat.message_receive.message import MessageRecv
|
||||||
from src.llm_models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
@@ -10,8 +9,10 @@ from src.chat.utils.chat_message_builder import build_readable_messages, get_raw
|
|||||||
from src.config.config import global_config
|
from src.config.config import global_config
|
||||||
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
|
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
|
||||||
from src.manager.async_task_manager import AsyncTask, async_task_manager
|
from src.manager.async_task_manager import AsyncTask, async_task_manager
|
||||||
|
|
||||||
logger = get_logger("mood")
|
logger = get_logger("mood")
|
||||||
|
|
||||||
|
|
||||||
def init_prompt():
|
def init_prompt():
|
||||||
Prompt(
|
Prompt(
|
||||||
"""
|
"""
|
||||||
@@ -40,12 +41,13 @@ def init_prompt():
|
|||||||
"regress_mood_prompt",
|
"regress_mood_prompt",
|
||||||
)
|
)
|
||||||
|
|
||||||
class ChatMood:
|
|
||||||
def __init__(self,chat_id:str):
|
|
||||||
self.chat_id:str = chat_id
|
|
||||||
self.mood_state:str = "感觉很平静"
|
|
||||||
|
|
||||||
self.regression_count:int = 0
|
class ChatMood:
|
||||||
|
def __init__(self, chat_id: str):
|
||||||
|
self.chat_id: str = chat_id
|
||||||
|
self.mood_state: str = "感觉很平静"
|
||||||
|
|
||||||
|
self.regression_count: int = 0
|
||||||
|
|
||||||
self.mood_model = LLMRequest(
|
self.mood_model = LLMRequest(
|
||||||
model=global_config.model.emotion,
|
model=global_config.model.emotion,
|
||||||
@@ -55,7 +57,7 @@ class ChatMood:
|
|||||||
|
|
||||||
self.last_change_time = 0
|
self.last_change_time = 0
|
||||||
|
|
||||||
async def update_mood_by_message(self,message:MessageRecv,interested_rate:float):
|
async def update_mood_by_message(self, message: MessageRecv, interested_rate: float):
|
||||||
self.regression_count = 0
|
self.regression_count = 0
|
||||||
|
|
||||||
during_last_time = message.message_info.time - self.last_change_time
|
during_last_time = message.message_info.time - self.last_change_time
|
||||||
@@ -68,14 +70,14 @@ class ChatMood:
|
|||||||
else:
|
else:
|
||||||
interest_multiplier = 3 * math.pow(interested_rate, 0.25)
|
interest_multiplier = 3 * math.pow(interested_rate, 0.25)
|
||||||
|
|
||||||
logger.info(f"base_probability: {base_probability}, time_multiplier: {time_multiplier}, interest_multiplier: {interest_multiplier}")
|
logger.info(
|
||||||
|
f"base_probability: {base_probability}, time_multiplier: {time_multiplier}, interest_multiplier: {interest_multiplier}"
|
||||||
|
)
|
||||||
update_probability = min(1.0, base_probability * time_multiplier * interest_multiplier)
|
update_probability = min(1.0, base_probability * time_multiplier * interest_multiplier)
|
||||||
|
|
||||||
if random.random() > update_probability:
|
if random.random() > update_probability:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
message_time = message.message_info.time
|
message_time = message.message_info.time
|
||||||
message_list_before_now = get_raw_msg_by_timestamp_with_chat_inclusive(
|
message_list_before_now = get_raw_msg_by_timestamp_with_chat_inclusive(
|
||||||
chat_id=self.chat_id,
|
chat_id=self.chat_id,
|
||||||
@@ -94,7 +96,6 @@ class ChatMood:
|
|||||||
show_actions=True,
|
show_actions=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
bot_name = global_config.bot.nickname
|
bot_name = global_config.bot.nickname
|
||||||
if global_config.bot.alias_names:
|
if global_config.bot.alias_names:
|
||||||
bot_nickname = f",也有人叫你{','.join(global_config.bot.alias_names)}"
|
bot_nickname = f",也有人叫你{','.join(global_config.bot.alias_names)}"
|
||||||
@@ -116,14 +117,11 @@ class ChatMood:
|
|||||||
logger.info(f"response: {response}")
|
logger.info(f"response: {response}")
|
||||||
logger.info(f"reasoning_content: {reasoning_content}")
|
logger.info(f"reasoning_content: {reasoning_content}")
|
||||||
|
|
||||||
|
|
||||||
self.mood_state = response
|
self.mood_state = response
|
||||||
|
|
||||||
|
|
||||||
self.last_change_time = message_time
|
self.last_change_time = message_time
|
||||||
|
|
||||||
async def regress_mood(self):
|
async def regress_mood(self):
|
||||||
|
|
||||||
message_time = time.time()
|
message_time = time.time()
|
||||||
message_list_before_now = get_raw_msg_by_timestamp_with_chat_inclusive(
|
message_list_before_now = get_raw_msg_by_timestamp_with_chat_inclusive(
|
||||||
chat_id=self.chat_id,
|
chat_id=self.chat_id,
|
||||||
@@ -142,7 +140,6 @@ class ChatMood:
|
|||||||
show_actions=True,
|
show_actions=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
bot_name = global_config.bot.nickname
|
bot_name = global_config.bot.nickname
|
||||||
if global_config.bot.alias_names:
|
if global_config.bot.alias_names:
|
||||||
bot_nickname = f",也有人叫你{','.join(global_config.bot.alias_names)}"
|
bot_nickname = f",也有人叫你{','.join(global_config.bot.alias_names)}"
|
||||||
@@ -164,14 +161,13 @@ class ChatMood:
|
|||||||
logger.info(f"response: {response}")
|
logger.info(f"response: {response}")
|
||||||
logger.info(f"reasoning_content: {reasoning_content}")
|
logger.info(f"reasoning_content: {reasoning_content}")
|
||||||
|
|
||||||
|
|
||||||
self.mood_state = response
|
self.mood_state = response
|
||||||
|
|
||||||
|
|
||||||
self.regression_count += 1
|
self.regression_count += 1
|
||||||
|
|
||||||
|
|
||||||
class MoodRegressionTask(AsyncTask):
|
class MoodRegressionTask(AsyncTask):
|
||||||
def __init__(self, mood_manager: 'MoodManager'):
|
def __init__(self, mood_manager: "MoodManager"):
|
||||||
super().__init__(task_name="MoodRegressionTask", run_interval=30)
|
super().__init__(task_name="MoodRegressionTask", run_interval=30)
|
||||||
self.mood_manager = mood_manager
|
self.mood_manager = mood_manager
|
||||||
|
|
||||||
@@ -179,24 +175,20 @@ class MoodRegressionTask(AsyncTask):
|
|||||||
logger.debug("Running mood regression task...")
|
logger.debug("Running mood regression task...")
|
||||||
now = time.time()
|
now = time.time()
|
||||||
for mood in self.mood_manager.mood_list:
|
for mood in self.mood_manager.mood_list:
|
||||||
|
|
||||||
if mood.last_change_time == 0:
|
if mood.last_change_time == 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
if now - mood.last_change_time > 180:
|
if now - mood.last_change_time > 180:
|
||||||
|
|
||||||
if mood.regression_count >= 3:
|
if mood.regression_count >= 3:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
logger.info(f"chat {mood.chat_id} 开始情绪回归, 这是第 {mood.regression_count + 1} 次")
|
||||||
logger.info(f"chat {mood.chat_id} 开始情绪回归, 这是第 {mood.regression_count+1} 次")
|
|
||||||
await mood.regress_mood()
|
await mood.regress_mood()
|
||||||
|
|
||||||
class MoodManager:
|
|
||||||
|
|
||||||
|
class MoodManager:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mood_list:list[ChatMood] = []
|
self.mood_list: list[ChatMood] = []
|
||||||
"""当前情绪状态"""
|
"""当前情绪状态"""
|
||||||
self.task_started: bool = False
|
self.task_started: bool = False
|
||||||
|
|
||||||
@@ -211,7 +203,7 @@ class MoodManager:
|
|||||||
self.task_started = True
|
self.task_started = True
|
||||||
logger.info("情绪回归任务已启动")
|
logger.info("情绪回归任务已启动")
|
||||||
|
|
||||||
def get_mood_by_chat_id(self, chat_id:str) -> ChatMood:
|
def get_mood_by_chat_id(self, chat_id: str) -> ChatMood:
|
||||||
for mood in self.mood_list:
|
for mood in self.mood_list:
|
||||||
if mood.chat_id == chat_id:
|
if mood.chat_id == chat_id:
|
||||||
return mood
|
return mood
|
||||||
@@ -220,7 +212,7 @@ class MoodManager:
|
|||||||
self.mood_list.append(new_mood)
|
self.mood_list.append(new_mood)
|
||||||
return new_mood
|
return new_mood
|
||||||
|
|
||||||
def reset_mood_by_chat_id(self, chat_id:str):
|
def reset_mood_by_chat_id(self, chat_id: str):
|
||||||
for mood in self.mood_list:
|
for mood in self.mood_list:
|
||||||
if mood.chat_id == chat_id:
|
if mood.chat_id == chat_id:
|
||||||
mood.mood_state = "感觉很平静"
|
mood.mood_state = "感觉很平静"
|
||||||
@@ -229,7 +221,6 @@ class MoodManager:
|
|||||||
self.mood_list.append(ChatMood(chat_id))
|
self.mood_list.append(ChatMood(chat_id))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
init_prompt()
|
init_prompt()
|
||||||
|
|
||||||
mood_manager = MoodManager()
|
mood_manager = MoodManager()
|
||||||
|
|||||||
Reference in New Issue
Block a user