fix: improve logger
This commit is contained in:
@@ -102,10 +102,28 @@ MOOD_STYLE_CONFIG = {
|
|||||||
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}"),
|
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}"),
|
||||||
},
|
},
|
||||||
"simple": {
|
"simple": {
|
||||||
"console_format": ("<green>{time:MM-DD HH:mm}</green> | <light-green>心情</light-green> | {message}"),
|
"console_format": ("<green>{time:MM-DD HH:mm}</green> | <magenta>心情</magenta> | {message}"),
|
||||||
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}"),
|
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
# tool use
|
||||||
|
TOOL_USE_STYLE_CONFIG = {
|
||||||
|
"advanced": {
|
||||||
|
"console_format": (
|
||||||
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
||||||
|
"<level>{level: <8}</level> | "
|
||||||
|
"<cyan>{extra[module]: <12}</cyan> | "
|
||||||
|
"<magenta>工具使用</magenta> | "
|
||||||
|
"<level>{message}</level>"
|
||||||
|
),
|
||||||
|
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}"),
|
||||||
|
},
|
||||||
|
"simple": {
|
||||||
|
"console_format": ("<green>{time:MM-DD HH:mm}</green> | <magenta>工具使用</magenta> | {message}"),
|
||||||
|
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# relationship
|
# relationship
|
||||||
RELATION_STYLE_CONFIG = {
|
RELATION_STYLE_CONFIG = {
|
||||||
@@ -308,6 +326,7 @@ SUB_HEARTFLOW_STYLE_CONFIG = (
|
|||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_STYLE_CONFIG["advanced"]
|
WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_STYLE_CONFIG["advanced"]
|
||||||
CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG_STYLE_CONFIG["advanced"]
|
CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG_STYLE_CONFIG["advanced"]
|
||||||
|
TOOL_USE_STYLE_CONFIG = TOOL_USE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TOOL_USE_STYLE_CONFIG["advanced"]
|
||||||
|
|
||||||
|
|
||||||
def is_registered_module(record: dict) -> bool:
|
def is_registered_module(record: dict) -> bool:
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool
|
|
||||||
from src.common.logger import get_module_logger
|
|
||||||
from typing import Dict, Any
|
|
||||||
|
|
||||||
logger = get_module_logger("fibonacci_sequence_tool")
|
|
||||||
|
|
||||||
|
|
||||||
class FibonacciSequenceTool(BaseTool):
|
|
||||||
"""生成斐波那契数列的工具"""
|
|
||||||
|
|
||||||
name = "fibonacci_sequence"
|
|
||||||
description = "生成指定长度的斐波那契数列"
|
|
||||||
parameters = {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {"n": {"type": "integer", "description": "斐波那契数列的长度", "minimum": 1}},
|
|
||||||
"required": ["n"],
|
|
||||||
}
|
|
||||||
|
|
||||||
async def execute(self, function_args: Dict[str, Any], message_txt: str = "") -> Dict[str, Any]:
|
|
||||||
"""执行工具功能
|
|
||||||
|
|
||||||
Args:
|
|
||||||
function_args: 工具参数
|
|
||||||
message_txt: 原始消息文本
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Dict: 工具执行结果
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
n = function_args.get("n")
|
|
||||||
if n <= 0:
|
|
||||||
raise ValueError("参数n必须大于0")
|
|
||||||
|
|
||||||
sequence = []
|
|
||||||
a, b = 0, 1
|
|
||||||
for _ in range(n):
|
|
||||||
sequence.append(a)
|
|
||||||
a, b = b, a + b
|
|
||||||
|
|
||||||
return {"name": self.name, "content": sequence}
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"fibonacci_sequence工具执行失败: {str(e)}")
|
|
||||||
return {"name": self.name, "content": f"执行失败: {str(e)}"}
|
|
||||||
|
|
||||||
|
|
||||||
# 注册工具
|
|
||||||
register_tool(FibonacciSequenceTool)
|
|
||||||
@@ -4,10 +4,15 @@ from src.plugins.chat.chat_stream import ChatStream
|
|||||||
from src.common.database import db
|
from src.common.database import db
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger, TOOL_USE_STYLE_CONFIG, LogConfig
|
||||||
from src.do_tool.tool_can_use import get_all_tool_definitions, get_tool_instance
|
from src.do_tool.tool_can_use import get_all_tool_definitions, get_tool_instance
|
||||||
|
|
||||||
logger = get_module_logger("tool_use")
|
tool_use_config = LogConfig(
|
||||||
|
# 使用消息发送专用样式
|
||||||
|
console_format=TOOL_USE_STYLE_CONFIG["console_format"],
|
||||||
|
file_format=TOOL_USE_STYLE_CONFIG["file_format"],
|
||||||
|
)
|
||||||
|
logger = get_module_logger("tool_use", config=tool_use_config)
|
||||||
|
|
||||||
|
|
||||||
class ToolUser:
|
class ToolUser:
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class ChatBot:
|
|||||||
async def _ensure_started(self):
|
async def _ensure_started(self):
|
||||||
"""确保所有任务已启动"""
|
"""确保所有任务已启动"""
|
||||||
if not self._started:
|
if not self._started:
|
||||||
logger.info("确保ChatBot所有任务已启动")
|
logger.trace("确保ChatBot所有任务已启动")
|
||||||
|
|
||||||
self._started = True
|
self._started = True
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ class ChatBot:
|
|||||||
message = MessageRecv(message_data)
|
message = MessageRecv(message_data)
|
||||||
groupinfo = message.message_info.group_info
|
groupinfo = message.message_info.group_info
|
||||||
userinfo = message.message_info.user_info
|
userinfo = message.message_info.user_info
|
||||||
logger.debug(f"处理消息:{str(message_data)[:120]}...")
|
logger.trace(f"处理消息:{str(message_data)[:120]}...")
|
||||||
|
|
||||||
if userinfo.user_id in global_config.ban_user_id:
|
if userinfo.user_id in global_config.ban_user_id:
|
||||||
logger.debug(f"用户{userinfo.user_id}被禁止回复")
|
logger.debug(f"用户{userinfo.user_id}被禁止回复")
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ class Message_Sender:
|
|||||||
thinking_start_time=message.thinking_start_time,
|
thinking_start_time=message.thinking_start_time,
|
||||||
is_emoji=message.is_emoji,
|
is_emoji=message.is_emoji,
|
||||||
)
|
)
|
||||||
logger.debug(f"{message.processed_plain_text},{typing_time},计算输入时间结束")
|
logger.trace(f"{message.processed_plain_text},{typing_time},计算输入时间结束")
|
||||||
await asyncio.sleep(typing_time)
|
await asyncio.sleep(typing_time)
|
||||||
logger.debug(f"{message.processed_plain_text},{typing_time},等待输入时间结束")
|
logger.trace(f"{message.processed_plain_text},{typing_time},等待输入时间结束")
|
||||||
|
|
||||||
message_json = message.to_dict()
|
message_json = message.to_dict()
|
||||||
|
|
||||||
|
|||||||
@@ -184,24 +184,24 @@ class ThinkFlowChat:
|
|||||||
heartflow.create_subheartflow(chat.stream_id)
|
heartflow.create_subheartflow(chat.stream_id)
|
||||||
|
|
||||||
await message.process()
|
await message.process()
|
||||||
logger.debug(f"消息处理成功{message.processed_plain_text}")
|
logger.trace(f"消息处理成功{message.processed_plain_text}")
|
||||||
|
|
||||||
# 过滤词/正则表达式过滤
|
# 过滤词/正则表达式过滤
|
||||||
if self._check_ban_words(message.processed_plain_text, chat, userinfo) or self._check_ban_regex(
|
if self._check_ban_words(message.processed_plain_text, chat, userinfo) or self._check_ban_regex(
|
||||||
message.raw_message, chat, userinfo
|
message.raw_message, chat, userinfo
|
||||||
):
|
):
|
||||||
return
|
return
|
||||||
logger.debug(f"过滤词/正则表达式过滤成功{message.processed_plain_text}")
|
logger.trace(f"过滤词/正则表达式过滤成功{message.processed_plain_text}")
|
||||||
|
|
||||||
await self.storage.store_message(message, chat)
|
await self.storage.store_message(message, chat)
|
||||||
logger.debug(f"存储成功{message.processed_plain_text}")
|
logger.trace(f"存储成功{message.processed_plain_text}")
|
||||||
|
|
||||||
# 记忆激活
|
# 记忆激活
|
||||||
with Timer("记忆激活", timing_results):
|
with Timer("记忆激活", timing_results):
|
||||||
interested_rate = await HippocampusManager.get_instance().get_activate_from_text(
|
interested_rate = await HippocampusManager.get_instance().get_activate_from_text(
|
||||||
message.processed_plain_text, fast_retrieval=True
|
message.processed_plain_text, fast_retrieval=True
|
||||||
)
|
)
|
||||||
logger.debug(f"记忆激活: {interested_rate}")
|
logger.trace(f"记忆激活: {interested_rate}")
|
||||||
|
|
||||||
# 查询缓冲器结果,会整合前面跳过的消息,改变processed_plain_text
|
# 查询缓冲器结果,会整合前面跳过的消息,改变processed_plain_text
|
||||||
buffer_result = await message_buffer.query_buffer_result(message)
|
buffer_result = await message_buffer.query_buffer_result(message)
|
||||||
|
|||||||
@@ -1301,7 +1301,7 @@ class Hippocampus:
|
|||||||
|
|
||||||
# 对每个关键词进行扩散式检索
|
# 对每个关键词进行扩散式检索
|
||||||
for keyword in valid_keywords:
|
for keyword in valid_keywords:
|
||||||
logger.debug(f"开始以关键词 '{keyword}' 为中心进行扩散检索 (最大深度: {max_depth}):")
|
logger.trace(f"开始以关键词 '{keyword}' 为中心进行扩散检索 (最大深度: {max_depth}):")
|
||||||
# 初始化激活值
|
# 初始化激活值
|
||||||
activation_values = {keyword: 1.0}
|
activation_values = {keyword: 1.0}
|
||||||
# 记录已访问的节点
|
# 记录已访问的节点
|
||||||
@@ -1352,7 +1352,7 @@ class Hippocampus:
|
|||||||
|
|
||||||
# 计算激活节点数与总节点数的比值
|
# 计算激活节点数与总节点数的比值
|
||||||
total_activation = sum(activate_map.values())
|
total_activation = sum(activate_map.values())
|
||||||
logger.info(f"总激活值: {total_activation:.2f}")
|
logger.trace(f"总激活值: {total_activation:.2f}")
|
||||||
total_nodes = len(self.memory_graph.G.nodes())
|
total_nodes = len(self.memory_graph.G.nodes())
|
||||||
# activated_nodes = len(activate_map)
|
# activated_nodes = len(activate_map)
|
||||||
activation_ratio = total_activation / total_nodes if total_nodes > 0 else 0
|
activation_ratio = total_activation / total_nodes if total_nodes > 0 else 0
|
||||||
|
|||||||
@@ -264,17 +264,17 @@ class PersonInfoManager:
|
|||||||
|
|
||||||
msg_interval = int(round(np.percentile(filtered, 80)))
|
msg_interval = int(round(np.percentile(filtered, 80)))
|
||||||
await self.update_one_field(person_id, "msg_interval", msg_interval)
|
await self.update_one_field(person_id, "msg_interval", msg_interval)
|
||||||
logger.debug(f"用户{person_id}的msg_interval已经被更新为{msg_interval}")
|
logger.trace(f"用户{person_id}的msg_interval已经被更新为{msg_interval}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug(f"用户{person_id}消息间隔计算失败: {type(e).__name__}: {str(e)}")
|
logger.trace(f"用户{person_id}消息间隔计算失败: {type(e).__name__}: {str(e)}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# 其他...
|
# 其他...
|
||||||
|
|
||||||
if msg_interval_map:
|
if msg_interval_map:
|
||||||
logger.info("已保存分布图到: logs/person_info")
|
logger.trace("已保存分布图到: logs/person_info")
|
||||||
current_time = datetime.datetime.now()
|
current_time = datetime.datetime.now()
|
||||||
logger.info(f"个人信息推断结束: {current_time.strftime('%Y-%m-%d %H:%M:%S')}")
|
logger.trace(f"个人信息推断结束: {current_time.strftime('%Y-%m-%d %H:%M:%S')}")
|
||||||
await asyncio.sleep(86400)
|
await asyncio.sleep(86400)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user