mirror of https://github.com/Mai-with-u/MaiBot.git
🤖 自动格式化代码 [skip ci]
parent
7737a95e40
commit
741fa815c0
|
|
@ -341,7 +341,7 @@ class Conversation:
|
|||
conversation_info.last_reply_rejection_reason = check_reason
|
||||
conversation_info.last_rejected_reply_content = self.generated_reply
|
||||
else:
|
||||
# 如果检查通过,清空上次的拒绝原因
|
||||
# 如果检查通过,清空上次的拒绝原因
|
||||
conversation_info.last_reply_rejection_reason = None
|
||||
conversation_info.last_rejected_reply_content = None
|
||||
|
||||
|
|
@ -358,11 +358,10 @@ class Conversation:
|
|||
f"[私聊][{self.private_name}]第 {reply_attempt_count} 次调用 ReplyChecker (追问) 时出错: {check_err}"
|
||||
)
|
||||
check_reason = f"第 {reply_attempt_count} 次检查过程出错: {check_err}"
|
||||
conversation_info.last_reply_rejection_reason = f"检查过程出错: {check_err}" # 出错也记录原因
|
||||
conversation_info.last_reply_rejection_reason = f"检查过程出错: {check_err}" # 出错也记录原因
|
||||
conversation_info.last_rejected_reply_content = self.generated_reply
|
||||
break
|
||||
|
||||
|
||||
# 循环结束,处理最终结果
|
||||
if is_suitable:
|
||||
# 检查是否有新消息
|
||||
|
|
@ -485,7 +484,7 @@ class Conversation:
|
|||
await self._send_reply() # <--- 调用恢复后的函数
|
||||
# --- 新增:回复成功,清除拒绝原因 ---
|
||||
conversation_info.last_reply_rejection_reason = None
|
||||
conversation_info.last_rejected_reply_content = None # <-- 新增清空内容
|
||||
conversation_info.last_rejected_reply_content = None # <-- 新增清空内容
|
||||
# 更新状态: 标记上次成功是 direct_reply
|
||||
self.conversation_info.last_successful_reply_action = "direct_reply"
|
||||
action_successful = True # 标记动作成功
|
||||
|
|
@ -666,7 +665,7 @@ class Conversation:
|
|||
self.conversation_info.last_successful_reply_action = None
|
||||
# --- 新增:非回复动作成功,也清除拒绝原因 ---
|
||||
conversation_info.last_reply_rejection_reason = None
|
||||
conversation_info.last_rejected_reply_content = None # <-- 新增清空内容
|
||||
conversation_info.last_rejected_reply_content = None # <-- 新增清空内容
|
||||
logger.debug(f"[私聊][{self.private_name}]动作 {action} 成功完成,重置 last_successful_reply_action")
|
||||
# 如果动作是 recall 状态,在各自的处理逻辑中已经更新了 done_action
|
||||
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ class ConversationInfo:
|
|||
self.knowledge_list = []
|
||||
self.memory_list = []
|
||||
self.last_successful_reply_action: Optional[str] = None
|
||||
self.last_reply_rejection_reason: Optional[str] = None # 用于存储上次回复被拒原因
|
||||
self.last_rejected_reply_content: Optional[str] = None # 用于存储上次被拒的回复内容
|
||||
self.last_reply_rejection_reason: Optional[str] = None # 用于存储上次回复被拒原因
|
||||
self.last_rejected_reply_content: Optional[str] = None # 用于存储上次被拒的回复内容
|
||||
|
|
|
|||
|
|
@ -249,21 +249,23 @@ class ReplyGenerator:
|
|||
# --- 修改:构建上次回复失败原因和内容提示 ---
|
||||
last_rejection_info_str = ""
|
||||
# 检查 conversation_info 是否有上次拒绝的原因和内容,并且它们都不是 None
|
||||
last_reason = getattr(conversation_info, 'last_reply_rejection_reason', None)
|
||||
last_content = getattr(conversation_info, 'last_rejected_reply_content', None)
|
||||
last_reason = getattr(conversation_info, "last_reply_rejection_reason", None)
|
||||
last_content = getattr(conversation_info, "last_rejected_reply_content", None)
|
||||
|
||||
if last_reason and last_content:
|
||||
last_rejection_info_str = (
|
||||
f"\n------\n"
|
||||
f"【重要提示:你上一次尝试回复时失败了,以下是详细信息】\n"
|
||||
f"上次试图发送的消息内容: “{last_content}”\n" # <-- 显示上次内容
|
||||
f"上次试图发送的消息内容: “{last_content}”\n" # <-- 显示上次内容
|
||||
f"失败原因: “{last_reason}”\n"
|
||||
f"请根据【消息内容】和【失败原因】调整你的新回复,避免重复之前的错误。\n"
|
||||
f"------\n"
|
||||
)
|
||||
logger.info(f"[私聊][{self.private_name}]检测到上次回复失败信息,将加入 Prompt:\n"
|
||||
f" 内容: {last_content}\n"
|
||||
f" 原因: {last_reason}")
|
||||
logger.info(
|
||||
f"[私聊][{self.private_name}]检测到上次回复失败信息,将加入 Prompt:\n"
|
||||
f" 内容: {last_content}\n"
|
||||
f" 原因: {last_reason}"
|
||||
)
|
||||
|
||||
# --- 选择 Prompt ---
|
||||
if action_type == "send_new_message":
|
||||
|
|
@ -277,22 +279,24 @@ class ReplyGenerator:
|
|||
logger.info(f"[私聊][{self.private_name}]使用 PROMPT_DIRECT_REPLY (首次/非连续回复生成)")
|
||||
|
||||
# --- 格式化最终的 Prompt ---
|
||||
try: # <--- 增加 try-except 块处理可能的 format 错误
|
||||
try: # <--- 增加 try-except 块处理可能的 format 错误
|
||||
prompt = prompt_template.format(
|
||||
persona_text=persona_text,
|
||||
goals_str=goals_str,
|
||||
chat_history_text=chat_history_text,
|
||||
retrieved_memory_str=retrieved_memory_str if retrieved_memory_str else "无相关记忆。",
|
||||
retrieved_knowledge_str=retrieved_knowledge_str if retrieved_knowledge_str else "无相关知识。",
|
||||
last_rejection_info=last_rejection_info_str # <--- 新增传递上次拒绝原因
|
||||
last_rejection_info=last_rejection_info_str, # <--- 新增传递上次拒绝原因
|
||||
)
|
||||
except KeyError as e:
|
||||
logger.error(f"[私聊][{self.private_name}]格式化 Prompt 时出错,缺少键: {e}。请检查 Prompt 模板和传递的参数。")
|
||||
# 返回错误信息或默认回复
|
||||
return "抱歉,准备回复时出了点问题,请检查一下我的代码..."
|
||||
logger.error(
|
||||
f"[私聊][{self.private_name}]格式化 Prompt 时出错,缺少键: {e}。请检查 Prompt 模板和传递的参数。"
|
||||
)
|
||||
# 返回错误信息或默认回复
|
||||
return "抱歉,准备回复时出了点问题,请检查一下我的代码..."
|
||||
except Exception as fmt_err:
|
||||
logger.error(f"[私聊][{self.private_name}]格式化 Prompt 时发生未知错误: {fmt_err}")
|
||||
return "抱歉,准备回复时出了点内部错误,请检查一下我的代码..."
|
||||
logger.error(f"[私聊][{self.private_name}]格式化 Prompt 时发生未知错误: {fmt_err}")
|
||||
return "抱歉,准备回复时出了点内部错误,请检查一下我的代码..."
|
||||
|
||||
# --- 调用 LLM 生成 ---
|
||||
logger.debug(f"[私聊][{self.private_name}]发送到LLM的生成提示词:\n------\n{prompt}\n------")
|
||||
|
|
|
|||
Loading…
Reference in New Issue