better:优化记忆生成

pull/1294/head
SengokuCola 2025-10-05 15:38:13 +08:00
parent a3009e0128
commit f44857d856
5 changed files with 38 additions and 10 deletions

View File

@ -49,6 +49,8 @@ reply
动作描述
1.你可以选择呼叫了你的名字但是你没有做出回应的消息进行回复
2.你可以自然的顺着正在进行的聊天内容进行回复或自然的提出一个问题
3.不要回复你自己发送的消息
4.不要单独对表情包进行回复
{{
"action": "reply",
"target_message_id":"想要回复的消息id",
@ -77,6 +79,7 @@ no_reply_until_call
{actions_before_now_block}
请选择**可选的**且符合使用条件的action并说明触发action的消息id(消息id格式:m+数字)
不要回复你自己发送的消息
先输出你的选择思考理由再输出你选择的action理由是一段平文本不要分点精简
**动作选择要求**
请你根据聊天内容,用户的最新消息和以下标准选择合适的动作:
@ -469,8 +472,8 @@ class ActionPlanner:
# 调用LLM
llm_content, (reasoning_content, _, _) = await self.planner_llm.generate_response_async(prompt=prompt)
logger.info(f"{self.log_prefix}规划器原始提示词: {prompt}")
logger.info(f"{self.log_prefix}规划器原始响应: {llm_content}")
# logger.info(f"{self.log_prefix}规划器原始提示词: {prompt}")
# logger.info(f"{self.log_prefix}规划器原始响应: {llm_content}")
if global_config.debug.show_prompt:
logger.info(f"{self.log_prefix}规划器原始提示词: {prompt}")

View File

@ -405,9 +405,14 @@ class DefaultReplyer:
if picid_matches:
pic_descriptions = []
for picid_match in picid_matches:
pic_id = picid_match[6:-1] # 提取picid:xxx中的xxx部分
pic_id = picid_match[7:-1] # 提取picid:xxx中的xxx部分从第7个字符开始
description = translate_pid_to_description(pic_id)
pic_descriptions.append(f"[图片:{description}]")
logger.info(f"图片ID: {pic_id}, 描述: {description}")
# 如果description已经是[图片]格式,直接使用;否则包装为[图片:描述]格式
if description == "[图片]":
pic_descriptions.append(description)
else:
pic_descriptions.append(f"[图片:{description}]")
pic_part = "".join(pic_descriptions)
return has_only_pics, has_text, pic_part, text_without_picids

View File

@ -409,9 +409,14 @@ class PrivateReplyer:
if picid_matches:
pic_descriptions = []
for picid_match in picid_matches:
pic_id = picid_match[6:-1] # 提取picid:xxx中的xxx部分
pic_id = picid_match[7:-1] # 提取picid:xxx中的xxx部分从第7个字符开始
description = translate_pid_to_description(pic_id)
pic_descriptions.append(f"[图片:{description}]")
logger.debug(f"图片ID: {pic_id}, 描述: {description}")
# 如果description已经是[图片]格式,直接使用;否则包装为[图片:描述]格式
if description == "[图片]":
pic_descriptions.append(description)
else:
pic_descriptions.append(f"[图片:{description}]")
pic_part = "".join(pic_descriptions)
return has_only_pics, has_text, pic_part, text_without_picids

View File

@ -141,11 +141,26 @@ class MemoryChest:
聊天记录中可能包含有效信息也可能信息密度很低请你根据聊天记录中的信息修改<part1>中的内容与<part2>中的内容
--------------------------------
请将上面的新聊天记录内的有用的信息进行整合到现有的记忆中
[图片]的处理
1.除非与文本有关不要将[图片]的内容整合到记忆中
2.如果图片与某个概念相关将图片中的关键内容也整合到记忆中不要写入图片原文例如
聊天记录与图片有关
用户说[图片1这是一个黄色的龙形状玩偶被一只手拿着]
用户说这个玩偶看起来很可爱是我新买的奶龙
总结的记忆内容
黄色的龙形状玩偶 奶龙
聊天记录概念与图片无关
用户说[图片1这是一个台电脑屏幕上显示了某种游戏]
用户说使命召唤今天发售了新一代有没有人玩
总结的记忆内容
使命召唤新一代 最新发售的游戏
请主要关注概念和知识或者时效性较强的信息而不是聊天的琐事
1.不要关注诸如某个用户做了什么说了什么不要关注某个用户的行为而是关注其中的概念性信息
2.概念要求精确不啰嗦像科普读物或教育课本那样
3.如果有图片请只关注图片和文本结合的知识和概念性内容
4.记忆为一段纯文本逻辑清晰指出概念的含义并说明关系
3.记忆为一段纯文本逻辑清晰指出概念的含义并说明关系
记忆内容的格式你必须仿照下面的格式但不一定全部使用:
{format_section}

View File

@ -500,8 +500,8 @@ def filter_mai_messages(messages: List[DatabaseMessages]) -> List[DatabaseMessag
def translate_pid_to_description(pid: str) -> str:
image = Images.get_or_none(Images.image_id == pid)
description = ""
if image and image.description:
description = image.description
if image and image.description and image.description.strip():
description = image.description.strip()
else:
description = "[图片]"
return description