fix:优化表达方式log和最大表达数量,优化配置文件注释
This commit is contained in:
@@ -7,10 +7,11 @@ from src.config.config import global_config
|
|||||||
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_random, build_anonymous_messages
|
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_random, build_anonymous_messages
|
||||||
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
|
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
|
||||||
import os
|
import os
|
||||||
|
from src.chat.message_receive.chat_stream import chat_manager
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
|
||||||
MAX_EXPRESSION_COUNT = 100
|
MAX_EXPRESSION_COUNT = 300
|
||||||
|
|
||||||
logger = get_logger("expressor")
|
logger = get_logger("expressor")
|
||||||
|
|
||||||
@@ -129,9 +130,19 @@ class ExpressionLearner:
|
|||||||
type_str = "句法特点"
|
type_str = "句法特点"
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Invalid type: {type}")
|
raise ValueError(f"Invalid type: {type}")
|
||||||
logger.info(f"开始学习{type_str}...")
|
# logger.info(f"开始学习{type_str}...")
|
||||||
learnt_expressions: Optional[List[Tuple[str, str, str]]] = await self.learn_expression(type, num)
|
learnt_expressions,chat_id = await self.learn_expression(type, num)
|
||||||
logger.info(f"学习到{len(learnt_expressions) if learnt_expressions else 0}条{type_str}")
|
|
||||||
|
chat_stream = chat_manager.get_stream(chat_id)
|
||||||
|
if chat_stream.group_info:
|
||||||
|
group_name = chat_stream.group_info.group_name
|
||||||
|
else:
|
||||||
|
group_name = f"{chat_stream.user_info.user_nickname}的私聊"
|
||||||
|
learnt_expressions_str = ""
|
||||||
|
for _chat_id, situation, style in learnt_expressions:
|
||||||
|
|
||||||
|
learnt_expressions_str += f"{situation}->{style}\n"
|
||||||
|
logger.info(f"在 {group_name} 学习到{type_str}:\n{learnt_expressions_str}")
|
||||||
# learnt_expressions: List[(chat_id, situation, style)]
|
# learnt_expressions: List[(chat_id, situation, style)]
|
||||||
|
|
||||||
if not learnt_expressions:
|
if not learnt_expressions:
|
||||||
@@ -188,7 +199,7 @@ class ExpressionLearner:
|
|||||||
json.dump(old_data, f, ensure_ascii=False, indent=2)
|
json.dump(old_data, f, ensure_ascii=False, indent=2)
|
||||||
return learnt_expressions
|
return learnt_expressions
|
||||||
|
|
||||||
async def learn_expression(self, type: str, num: int = 10) -> Optional[List[Tuple[str, str, str]]]:
|
async def learn_expression(self, type: str, num: int = 10) -> Optional[Tuple[List[Tuple[str, str, str]], str]]:
|
||||||
"""选择从当前到最近1小时内的随机num条消息,然后学习这些消息的表达方式
|
"""选择从当前到最近1小时内的随机num条消息,然后学习这些消息的表达方式
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -233,7 +244,7 @@ class ExpressionLearner:
|
|||||||
|
|
||||||
expressions: List[Tuple[str, str, str]] = self.parse_expression_response(response, chat_id)
|
expressions: List[Tuple[str, str, str]] = self.parse_expression_response(response, chat_id)
|
||||||
|
|
||||||
return expressions
|
return expressions,chat_id
|
||||||
|
|
||||||
def parse_expression_response(self, response: str, chat_id: str) -> List[Tuple[str, str, str]]:
|
def parse_expression_response(self, response: str, chat_id: str) -> List[Tuple[str, str, str]]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -75,9 +75,9 @@ class SubHeartflow:
|
|||||||
self.log_prefix = (
|
self.log_prefix = (
|
||||||
chat_manager.get_stream_name(self.subheartflow_id) or self.subheartflow_id
|
chat_manager.get_stream_name(self.subheartflow_id) or self.subheartflow_id
|
||||||
) # Keep this line or adjust if utils provides name
|
) # Keep this line or adjust if utils provides name
|
||||||
logger.debug(
|
# logger.debug(
|
||||||
f"SubHeartflow {self.chat_id} initialized: is_group={self.is_group_chat}, target_info={self.chat_target_info}"
|
# f"SubHeartflow {self.chat_id} initialized: is_group={self.is_group_chat}, target_info={self.chat_target_info}"
|
||||||
)
|
# )
|
||||||
|
|
||||||
# 根据配置决定初始状态
|
# 根据配置决定初始状态
|
||||||
if global_config.chat.chat_mode == "focus":
|
if global_config.chat.chat_mode == "focus":
|
||||||
|
|||||||
@@ -109,7 +109,6 @@ planner_type = "simple" # 规划器类型,可选值:complex(复杂规划
|
|||||||
self_identify_processor = true # 是否启用自我识别处理器
|
self_identify_processor = true # 是否启用自我识别处理器
|
||||||
relation_processor = true # 是否启用关系识别处理器
|
relation_processor = true # 是否启用关系识别处理器
|
||||||
tool_use_processor = false # 是否启用工具使用处理器
|
tool_use_processor = false # 是否启用工具使用处理器
|
||||||
mind_processor = false # 是否启用思维处理器
|
|
||||||
working_memory_processor = false # 是否启用工作记忆处理器,消耗量大
|
working_memory_processor = false # 是否启用工作记忆处理器,消耗量大
|
||||||
|
|
||||||
[emoji]
|
[emoji]
|
||||||
@@ -135,7 +134,7 @@ consolidate_memory_interval = 2000 # 记忆整合间隔 单位秒 间隔越低
|
|||||||
consolidation_similarity_threshold = 0.7 # 相似度阈值
|
consolidation_similarity_threshold = 0.7 # 相似度阈值
|
||||||
consolidation_check_percentage = 0.01 # 检查节点比例
|
consolidation_check_percentage = 0.01 # 检查节点比例
|
||||||
|
|
||||||
#不希望记忆的词,已经记忆的不会受到影响
|
#不希望记忆的词,已经记忆的不会受到影响,需要手动清理
|
||||||
memory_ban_words = [ "表情包", "图片", "回复", "聊天记录" ]
|
memory_ban_words = [ "表情包", "图片", "回复", "聊天记录" ]
|
||||||
|
|
||||||
[mood] # 仅在 普通聊天 有效
|
[mood] # 仅在 普通聊天 有效
|
||||||
@@ -143,11 +142,17 @@ mood_update_interval = 1.0 # 情绪更新间隔 单位秒
|
|||||||
mood_decay_rate = 0.95 # 情绪衰减率
|
mood_decay_rate = 0.95 # 情绪衰减率
|
||||||
mood_intensity_factor = 1.0 # 情绪强度因子
|
mood_intensity_factor = 1.0 # 情绪强度因子
|
||||||
|
|
||||||
# 规则
|
|
||||||
|
# keyword_rules 用于设置关键词触发的额外回复知识
|
||||||
|
# 添加新规则方法:在 keyword_rules 数组中增加一项,格式如下:
|
||||||
|
# { keywords = ["关键词1", "关键词2"], reaction = "触发这些关键词时的回复内容" }
|
||||||
|
# 例如,添加一个新规则:当检测到“你好”或“hello”时回复“你好,有什么可以帮你?”
|
||||||
|
# { keywords = ["你好", "hello"], reaction = "你好,有什么可以帮你?" }
|
||||||
[keyword_reaction]
|
[keyword_reaction]
|
||||||
keyword_rules = [
|
keyword_rules = [
|
||||||
{ keywords = ["人机", "bot", "机器", "入机", "robot", "机器人", "ai", "AI"], reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" },
|
{ keywords = ["人机", "bot", "机器", "入机", "robot", "机器人", "ai", "AI"], reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" },
|
||||||
{ keywords = ["测试关键词回复", "test"], reaction = "回答测试成功" }
|
{ keywords = ["测试关键词回复", "test"], reaction = "回答测试成功" }
|
||||||
|
# 在此处添加更多规则,格式同上
|
||||||
]
|
]
|
||||||
|
|
||||||
regex_rules = [
|
regex_rules = [
|
||||||
@@ -164,7 +169,7 @@ word_replace_rate=0.006 # 整词替换概率
|
|||||||
[response_splitter]
|
[response_splitter]
|
||||||
enable = true # 是否启用回复分割器
|
enable = true # 是否启用回复分割器
|
||||||
max_length = 512 # 回复允许的最大长度
|
max_length = 512 # 回复允许的最大长度
|
||||||
max_sentence_num = 7 # 回复允许的最大句子数
|
max_sentence_num = 8 # 回复允许的最大句子数
|
||||||
enable_kaomoji_protection = false # 是否启用颜文字保护
|
enable_kaomoji_protection = false # 是否启用颜文字保护
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user