Merge branch 'PFC-test' of https://github.com/Dax233/MaiMBot into PFC-test

This commit is contained in:
Bakadax
2025-04-30 15:08:39 +08:00
2 changed files with 14 additions and 13 deletions

View File

@@ -243,10 +243,10 @@ class ActionPlanner:
knowledge_info_str += f"{i+1}. 关于 '{query}' 的知识 (来源: {source}):\n {knowledge_snippet}\n" knowledge_info_str += f"{i+1}. 关于 '{query}' 的知识 (来源: {source}):\n {knowledge_snippet}\n"
else: else:
# 处理列表里不是字典的异常情况 # 处理列表里不是字典的异常情况
knowledge_info_str += f"{i+1}. 发现一条格式不正确的知识记录。\n" knowledge_info_str += f"{i + 1}. 发现一条格式不正确的知识记录。\n"
if not recent_knowledge: # 如果 knowledge_list 存在但为空 if not recent_knowledge: # 如果 knowledge_list 存在但为空
knowledge_info_str += "- 暂无相关知识和记忆。\n" knowledge_info_str += "- 暂无相关知识和记忆。\n"
else: else:
# 如果 conversation_info 没有 knowledge_list 属性,或者列表为空 # 如果 conversation_info 没有 knowledge_list 属性,或者列表为空
@@ -259,7 +259,6 @@ class ActionPlanner:
knowledge_info_str += "- 处理知识列表时出错。\n" knowledge_info_str += "- 处理知识列表时出错。\n"
# --- 知识信息字符串构建结束 --- # --- 知识信息字符串构建结束 ---
# 获取聊天历史记录 (chat_history_text) # 获取聊天历史记录 (chat_history_text)
chat_history_text = "" chat_history_text = ""
try: try:
@@ -385,7 +384,7 @@ class ActionPlanner:
time_since_last_bot_message_info=time_since_last_bot_message_info, time_since_last_bot_message_info=time_since_last_bot_message_info,
timeout_context=timeout_context, timeout_context=timeout_context,
chat_history_text=chat_history_text if chat_history_text.strip() else "还没有聊天记录。", chat_history_text=chat_history_text if chat_history_text.strip() else "还没有聊天记录。",
knowledge_info_str=knowledge_info_str knowledge_info_str=knowledge_info_str,
) )
logger.debug(f"[私聊][{self.private_name}]发送到LLM的最终提示词:\n------\n{prompt}\n------") logger.debug(f"[私聊][{self.private_name}]发送到LLM的最终提示词:\n------\n{prompt}\n------")

View File

@@ -146,14 +146,16 @@ class ReplyGenerator:
recent_knowledge = conversation_info.knowledge_list[-3:] recent_knowledge = conversation_info.knowledge_list[-3:]
for i, knowledge_item in enumerate(recent_knowledge): for i, knowledge_item in enumerate(recent_knowledge):
if isinstance(knowledge_item, dict): if isinstance(knowledge_item, dict):
query = knowledge_item.get('query', '未知查询') query = knowledge_item.get("query", "未知查询")
knowledge = knowledge_item.get('knowledge', '无知识内容') knowledge = knowledge_item.get("knowledge", "无知识内容")
source = knowledge_item.get('source', '未知来源') source = knowledge_item.get("source", "未知来源")
# 只取知识内容的前 150 个字 # 只取知识内容的前 150 个字
knowledge_snippet = knowledge[:150] + "..." if len(knowledge) > 150 else knowledge knowledge_snippet = knowledge[:150] + "..." if len(knowledge) > 150 else knowledge
knowledge_info_str += f"{i+1}. 关于 '{query}' (来源: {source}): {knowledge_snippet}\n" # 格式微调,更简洁 knowledge_info_str += (
f"{i + 1}. 关于 '{query}' (来源: {source}): {knowledge_snippet}\n" # 格式微调,更简洁
)
else: else:
knowledge_info_str += f"{i+1}. 发现一条格式不正确的知识记录。\n" knowledge_info_str += f"{i + 1}. 发现一条格式不正确的知识记录。\n"
if not recent_knowledge: if not recent_knowledge:
knowledge_info_str += "- 暂无。\n" # 更简洁的提示 knowledge_info_str += "- 暂无。\n" # 更简洁的提示
@@ -165,7 +167,7 @@ class ReplyGenerator:
knowledge_info_str += "- 获取知识列表时出错。\n" knowledge_info_str += "- 获取知识列表时出错。\n"
except Exception as e: except Exception as e:
logger.error(f"[私聊][{self.private_name}]构建知识信息字符串时出错: {e}") logger.error(f"[私聊][{self.private_name}]构建知识信息字符串时出错: {e}")
knowledge_info_str += "- 处理知识列表时出错。\n" knowledge_info_str += "- 处理知识列表时出错。\n"
# 获取聊天历史记录 (chat_history_text) # 获取聊天历史记录 (chat_history_text)
chat_history_text = observation_info.chat_history_str chat_history_text = observation_info.chat_history_str
@@ -199,9 +201,9 @@ class ReplyGenerator:
# --- 格式化最终的 Prompt --- # --- 格式化最终的 Prompt ---
prompt = prompt_template.format( prompt = prompt_template.format(
persona_text=persona_text, persona_text=persona_text,
goals_str=goals_str, goals_str=goals_str,
chat_history_text=chat_history_text, chat_history_text=chat_history_text,
knowledge_info_str=knowledge_info_str knowledge_info_str=knowledge_info_str,
) )
# --- 调用 LLM 生成 --- # --- 调用 LLM 生成 ---