better:可选是否加入reaon到replyer

pull/1359/head
SengokuCola 2025-11-16 13:00:14 +08:00
parent 68916d1fcb
commit e9cd9c0bff
6 changed files with 20 additions and 14 deletions

View File

@ -332,7 +332,8 @@ class HeartFChatting:
self.questioned = False self.questioned = False
# 重置连续 no_reply 计数 # 重置连续 no_reply 计数
self.consecutive_no_reply_count = 0 self.consecutive_no_reply_count = 0
reason = "有人提到了你,进行回复" reason = ""
await database_api.store_action_info( await database_api.store_action_info(
chat_stream=self.chat_stream, chat_stream=self.chat_stream,

View File

@ -56,7 +56,6 @@ class DefaultReplyer:
self.chat_stream = chat_stream self.chat_stream = chat_stream
self.is_group_chat, self.chat_target_info = get_chat_type_and_target_info(self.chat_stream.stream_id) self.is_group_chat, self.chat_target_info = get_chat_type_and_target_info(self.chat_stream.stream_id)
self.heart_fc_sender = UniversalMessageSender() self.heart_fc_sender = UniversalMessageSender()
# self.memory_activator = MemoryActivator()
from src.plugin_system.core.tool_use import ToolExecutor # 延迟导入ToolExecutor不然会循环依赖 from src.plugin_system.core.tool_use import ToolExecutor # 延迟导入ToolExecutor不然会循环依赖
@ -848,7 +847,7 @@ class DefaultReplyer:
# 从 chosen_actions 中提取 planner 的整体思考理由 # 从 chosen_actions 中提取 planner 的整体思考理由
planner_reasoning = "" planner_reasoning = ""
if reply_reason: if global_config.chat.include_planner_reasoning and reply_reason:
# 如果没有 chosen_actions使用 reply_reason 作为备选 # 如果没有 chosen_actions使用 reply_reason 作为备选
planner_reasoning = f"你的想法是:{reply_reason}" planner_reasoning = f"你的想法是:{reply_reason}"

View File

@ -768,7 +768,7 @@ class PrivateReplyer:
# 从 chosen_actions 中提取 planner 的整体思考理由 # 从 chosen_actions 中提取 planner 的整体思考理由
planner_reasoning = "" planner_reasoning = ""
if reply_reason: if global_config.chat.include_planner_reasoning and reply_reason:
# 如果没有 chosen_actions使用 reply_reason 作为备选 # 如果没有 chosen_actions使用 reply_reason 作为备选
planner_reasoning = f"你的想法是:{reply_reason}" planner_reasoning = f"你的想法是:{reply_reason}"

View File

@ -117,6 +117,9 @@ class ChatConfig(ConfigBase):
时间区间支持跨夜例如 "23:00-02:00" 时间区间支持跨夜例如 "23:00-02:00"
""" """
include_planner_reasoning: bool = False
"""是否将planner推理加入replyer默认关闭不加入"""
def _parse_stream_config_to_chat_id(self, stream_config_str: str) -> Optional[str]: def _parse_stream_config_to_chat_id(self, stream_config_str: str) -> Optional[str]:
"""与 ChatStream.get_stream_id 一致地从 "platform:id:type" 生成 chat_id。""" """与 ChatStream.get_stream_id 一致地从 "platform:id:type" 生成 chat_id。"""
try: try:

View File

@ -16,11 +16,10 @@ logger = get_logger("expression_selector")
def init_prompt(): def init_prompt():
expression_evaluation_prompt = """ expression_evaluation_prompt = """{chat_observe_info}
以下是正在进行的聊天内容
{chat_observe_info}
你的名字是{bot_name}{target_message} 你的名字是{bot_name}{target_message}
{reply_reason_block}
以下是可选的表达情境 以下是可选的表达情境
{all_situations} {all_situations}
@ -31,7 +30,6 @@ def init_prompt():
2.话题类型日常技术游戏情感等 2.话题类型日常技术游戏情感等
3.情境与当前语境的匹配度 3.情境与当前语境的匹配度
{target_message_extra_block} {target_message_extra_block}
{reply_reason_block}
请以JSON格式输出只需要输出选中的情境编号 请以JSON格式输出只需要输出选中的情境编号
例如 例如
@ -234,22 +232,25 @@ class ExpressionSelector:
all_situations_str = "\n".join(all_situations) all_situations_str = "\n".join(all_situations)
if target_message: if target_message:
target_message_str = f",现在你想要对上面的这条消息进行恢复:“{target_message}" target_message_str = f",现在你想要对这条消息进行回复:“{target_message}"
target_message_extra_block = "4.考虑你要回复的目标消息" target_message_extra_block = "4.考虑你要回复的目标消息"
else: else:
target_message_str = "" target_message_str = ""
target_message_extra_block = "" target_message_extra_block = ""
chat_context = f"以下是正在进行的聊天内容:{chat_info}"
# 构建reply_reason块 # 构建reply_reason块
if reply_reason: if reply_reason:
reply_reason_block = f"5.考虑你的回复理由:{reply_reason}" reply_reason_block = f"你的回复理由是:{reply_reason}"
chat_context = ""
else: else:
reply_reason_block = "" reply_reason_block = ""
# 3. 构建prompt只包含情境不包含完整的表达方式 # 3. 构建prompt只包含情境不包含完整的表达方式
prompt = (await global_prompt_manager.get_prompt_async("expression_evaluation_prompt")).format( prompt = (await global_prompt_manager.get_prompt_async("expression_evaluation_prompt")).format(
bot_name=global_config.bot.nickname, bot_name=global_config.bot.nickname,
chat_observe_info=chat_info, chat_observe_info=chat_context,
all_situations=all_situations_str, all_situations=all_situations_str,
max_num=max_num, max_num=max_num,
target_message=target_message_str, target_message=target_message_str,
@ -261,7 +262,7 @@ class ExpressionSelector:
content, (reasoning_content, model_name, _) = await self.llm_model.generate_response_async(prompt=prompt) content, (reasoning_content, model_name, _) = await self.llm_model.generate_response_async(prompt=prompt)
print(prompt) # print(prompt)
if not content: if not content:
logger.warning("LLM返回空结果") logger.warning("LLM返回空结果")

View File

@ -1,5 +1,5 @@
[inner] [inner]
version = "6.21.3" version = "6.21.4"
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读---- #----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
#如果你想要修改配置文件请递增version的值 #如果你想要修改配置文件请递增version的值
@ -101,6 +101,8 @@ talk_value_rules = [
{ target = "qq:114514:private", time = "00:00-23:59", value = 0.3 }, { target = "qq:114514:private", time = "00:00-23:59", value = 0.3 },
] ]
include_planner_reasoning = false # 是否将planner推理加入replyer默认关闭不加入
[memory] [memory]
max_agent_iterations = 5 # 记忆思考深度最低为1不深入思考 max_agent_iterations = 5 # 记忆思考深度最低为1不深入思考