fix:修复好感prompt没启用
This commit is contained in:
@@ -29,7 +29,7 @@ def init_prompt():
|
|||||||
现在请你根据现有的信息,总结你和群里的人的关系
|
现在请你根据现有的信息,总结你和群里的人的关系
|
||||||
1. 当聊天记录中提到你时,请输出你和这个人之间的关系
|
1. 当聊天记录中提到你时,请输出你和这个人之间的关系
|
||||||
2. 当聊天记录中提到其他人时,请输出你和这个人之间的关系
|
2. 当聊天记录中提到其他人时,请输出你和这个人之间的关系
|
||||||
3. 如果没有特别需要提及的关系,请输出“没有特别在意的人”
|
3. 如果没有特别需要提及的关系,就不用输出这个人
|
||||||
|
|
||||||
输出内容平淡一些,说中文。
|
输出内容平淡一些,说中文。
|
||||||
请注意不要输出多余内容(包括前后缀,括号(),表情包,at或 @等 )。只输出关系内容,记得明确说明这是你的关系。
|
请注意不要输出多余内容(包括前后缀,括号(),表情包,at或 @等 )。只输出关系内容,记得明确说明这是你的关系。
|
||||||
@@ -93,18 +93,6 @@ class RelationshipProcessor(BaseProcessor):
|
|||||||
tuple: (current_mind, past_mind, prompt) 当前想法、过去的想法列表和使用的prompt
|
tuple: (current_mind, past_mind, prompt) 当前想法、过去的想法列表和使用的prompt
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for observation in observations:
|
|
||||||
if isinstance(observation, ChattingObservation):
|
|
||||||
is_group_chat = observation.is_group_chat
|
|
||||||
chat_target_info = observation.chat_target_info
|
|
||||||
chat_target_name = "对方" # 私聊默认名称
|
|
||||||
person_list = observation.person_list
|
|
||||||
|
|
||||||
relation_prompt = ""
|
|
||||||
for person in person_list:
|
|
||||||
if len(person) >= 3 and person[0] and person[1]:
|
|
||||||
relation_prompt += await relationship_manager.build_relationship_info(person, is_id=True)
|
|
||||||
|
|
||||||
if observations is None:
|
if observations is None:
|
||||||
observations = []
|
observations = []
|
||||||
for observation in observations:
|
for observation in observations:
|
||||||
@@ -131,9 +119,11 @@ class RelationshipProcessor(BaseProcessor):
|
|||||||
relation_prompt_init = "你对群聊里的人的印象是:\n"
|
relation_prompt_init = "你对群聊里的人的印象是:\n"
|
||||||
else:
|
else:
|
||||||
relation_prompt_init = "你对对方的印象是:\n"
|
relation_prompt_init = "你对对方的印象是:\n"
|
||||||
|
|
||||||
|
relation_prompt = ""
|
||||||
for person in person_list:
|
for person in person_list:
|
||||||
relation_prompt += await relationship_manager.build_relationship_info(person, is_id=True)
|
relation_prompt += f"{await relationship_manager.build_relationship_info(person, is_id=True)}\n"
|
||||||
|
|
||||||
if relation_prompt:
|
if relation_prompt:
|
||||||
relation_prompt = relation_prompt_init + relation_prompt
|
relation_prompt = relation_prompt_init + relation_prompt
|
||||||
else:
|
else:
|
||||||
@@ -162,7 +152,7 @@ class RelationshipProcessor(BaseProcessor):
|
|||||||
if content == "None":
|
if content == "None":
|
||||||
content = ""
|
content = ""
|
||||||
# 记录初步思考结果
|
# 记录初步思考结果
|
||||||
logger.debug(f"{self.log_prefix} 关系识别prompt: \n{prompt}\n")
|
logger.info(f"{self.log_prefix} 关系识别prompt: \n{prompt}\n")
|
||||||
logger.info(f"{self.log_prefix} 关系识别: {content}")
|
logger.info(f"{self.log_prefix} 关系识别: {content}")
|
||||||
|
|
||||||
return content
|
return content
|
||||||
|
|||||||
@@ -104,12 +104,6 @@ class SelfProcessor(BaseProcessor):
|
|||||||
chat_target_name = "对方" # 私聊默认名称
|
chat_target_name = "对方" # 私聊默认名称
|
||||||
person_list = observation.person_list
|
person_list = observation.person_list
|
||||||
|
|
||||||
|
|
||||||
relation_prompt = ""
|
|
||||||
for person in person_list:
|
|
||||||
if len(person) >= 3 and person[0] and person[1]:
|
|
||||||
relation_prompt += await relationship_manager.build_relationship_info(person, is_id=True)
|
|
||||||
|
|
||||||
if observations is None:
|
if observations is None:
|
||||||
observations = []
|
observations = []
|
||||||
for observation in observations:
|
for observation in observations:
|
||||||
|
|||||||
@@ -128,15 +128,6 @@ class ToolProcessor(BaseProcessor):
|
|||||||
for running_memory in running_memorys:
|
for running_memory in running_memorys:
|
||||||
memory_str += f"{running_memory['topic']}: {running_memory['content']}\n"
|
memory_str += f"{running_memory['topic']}: {running_memory['content']}\n"
|
||||||
|
|
||||||
# 构建关系信息
|
|
||||||
relation_prompt = "【关系信息】\n"
|
|
||||||
for person in person_list:
|
|
||||||
relation_prompt += await relationship_manager.build_relationship_info(person, is_id=True)
|
|
||||||
|
|
||||||
# 获取个性信息
|
|
||||||
|
|
||||||
# prompt_personality = individuality.get_prompt(x_person=2, level=2)
|
|
||||||
|
|
||||||
# 获取时间信息
|
# 获取时间信息
|
||||||
time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ from src.config.config import global_config
|
|||||||
from src.chat.focus_chat.info.info_base import InfoBase
|
from src.chat.focus_chat.info.info_base import InfoBase
|
||||||
from src.chat.focus_chat.info.obs_info import ObsInfo
|
from src.chat.focus_chat.info.obs_info import ObsInfo
|
||||||
from src.chat.focus_chat.info.cycle_info import CycleInfo
|
from src.chat.focus_chat.info.cycle_info import CycleInfo
|
||||||
from src.chat.focus_chat.info.mind_info import MindInfo
|
|
||||||
from src.chat.focus_chat.info.action_info import ActionInfo
|
from src.chat.focus_chat.info.action_info import ActionInfo
|
||||||
from src.chat.focus_chat.info.structured_info import StructuredInfo
|
from src.chat.focus_chat.info.structured_info import StructuredInfo
|
||||||
from src.chat.focus_chat.info.self_info import SelfInfo
|
from src.chat.focus_chat.info.self_info import SelfInfo
|
||||||
@@ -129,8 +128,6 @@ class ActionPlanner(BasePlanner):
|
|||||||
observed_messages_str = info.get_talking_message_str_truncate()
|
observed_messages_str = info.get_talking_message_str_truncate()
|
||||||
chat_type = info.get_chat_type()
|
chat_type = info.get_chat_type()
|
||||||
is_group_chat = chat_type == "group"
|
is_group_chat = chat_type == "group"
|
||||||
elif isinstance(info, MindInfo):
|
|
||||||
current_mind = info.get_current_mind()
|
|
||||||
elif isinstance(info, CycleInfo):
|
elif isinstance(info, CycleInfo):
|
||||||
cycle_info = info.get_observe_info()
|
cycle_info = info.get_observe_info()
|
||||||
elif isinstance(info, SelfInfo):
|
elif isinstance(info, SelfInfo):
|
||||||
@@ -171,7 +168,6 @@ class ActionPlanner(BasePlanner):
|
|||||||
is_group_chat=is_group_chat, # <-- Pass HFC state
|
is_group_chat=is_group_chat, # <-- Pass HFC state
|
||||||
chat_target_info=None,
|
chat_target_info=None,
|
||||||
observed_messages_str=observed_messages_str, # <-- Pass local variable
|
observed_messages_str=observed_messages_str, # <-- Pass local variable
|
||||||
current_mind=current_mind, # <-- Pass argument
|
|
||||||
structured_info=structured_info, # <-- Pass SubMind info
|
structured_info=structured_info, # <-- Pass SubMind info
|
||||||
current_available_actions=current_available_actions, # <-- Pass determined actions
|
current_available_actions=current_available_actions, # <-- Pass determined actions
|
||||||
cycle_info=cycle_info, # <-- Pass cycle info
|
cycle_info=cycle_info, # <-- Pass cycle info
|
||||||
@@ -284,7 +280,6 @@ class ActionPlanner(BasePlanner):
|
|||||||
is_group_chat: bool, # Now passed as argument
|
is_group_chat: bool, # Now passed as argument
|
||||||
chat_target_info: Optional[dict], # Now passed as argument
|
chat_target_info: Optional[dict], # Now passed as argument
|
||||||
observed_messages_str: str,
|
observed_messages_str: str,
|
||||||
current_mind: Optional[str],
|
|
||||||
structured_info: Optional[str],
|
structured_info: Optional[str],
|
||||||
current_available_actions: Dict[str, ActionInfo],
|
current_available_actions: Dict[str, ActionInfo],
|
||||||
cycle_info: Optional[str],
|
cycle_info: Optional[str],
|
||||||
|
|||||||
@@ -278,8 +278,9 @@ class ChattingObservation(Observation):
|
|||||||
show_actions=True,
|
show_actions=True,
|
||||||
)
|
)
|
||||||
# print(f"构建中:self.talking_message_str_truncate: {self.talking_message_str_truncate}")
|
# print(f"构建中:self.talking_message_str_truncate: {self.talking_message_str_truncate}")
|
||||||
|
|
||||||
self.person_list = await get_person_id_list(self.talking_message)
|
self.person_list = await get_person_id_list(self.talking_message)
|
||||||
|
|
||||||
# print(f"构建中:self.person_list: {self.person_list}")
|
# print(f"构建中:self.person_list: {self.person_list}")
|
||||||
|
|
||||||
logger.trace(
|
logger.trace(
|
||||||
|
|||||||
@@ -114,8 +114,7 @@ class PromptBuilder:
|
|||||||
|
|
||||||
relation_prompt = ""
|
relation_prompt = ""
|
||||||
for person in who_chat_in_group:
|
for person in who_chat_in_group:
|
||||||
if len(person) >= 3 and person[0] and person[1]:
|
relation_prompt += await relationship_manager.build_relationship_info(person)
|
||||||
relation_prompt += await relationship_manager.build_relationship_info(person)
|
|
||||||
|
|
||||||
mood_prompt = mood_manager.get_mood_prompt()
|
mood_prompt = mood_manager.get_mood_prompt()
|
||||||
|
|
||||||
|
|||||||
@@ -673,9 +673,8 @@ async def get_person_id_list(messages: List[Dict[str, Any]]) -> List[str]:
|
|||||||
person_ids_set = set() # 使用集合来自动去重
|
person_ids_set = set() # 使用集合来自动去重
|
||||||
|
|
||||||
for msg in messages:
|
for msg in messages:
|
||||||
user_info = msg.get("user_info", {})
|
platform = msg.get("user_platform")
|
||||||
platform = user_info.get("platform")
|
user_id = msg.get("user_id")
|
||||||
user_id = user_info.get("user_id")
|
|
||||||
|
|
||||||
# 检查必要信息是否存在 且 不是机器人自己
|
# 检查必要信息是否存在 且 不是机器人自己
|
||||||
if not all([platform, user_id]) or user_id == global_config.bot.qq_account:
|
if not all([platform, user_id]) or user_id == global_config.bot.qq_account:
|
||||||
|
|||||||
@@ -22,9 +22,19 @@ class ImpressionUpdateTask(AsyncTask):
|
|||||||
|
|
||||||
async def run(self):
|
async def run(self):
|
||||||
try:
|
try:
|
||||||
# 获取最近10分钟的消息
|
if random.random() < 0.5:
|
||||||
current_time = int(time.time())
|
# 获取最近10分钟的消息
|
||||||
start_time = current_time - 6000 # 10分钟前
|
current_time = int(time.time())
|
||||||
|
start_time = current_time - 6000 # 10分钟前
|
||||||
|
# 取一个月内任意一个小时的时间段
|
||||||
|
else:
|
||||||
|
now = int(time.time())
|
||||||
|
# 30天前的时间戳
|
||||||
|
month_ago = now - 30 * 24 * 60 * 60
|
||||||
|
# 随机选择一个小时的起点
|
||||||
|
random_start = random.randint(month_ago, now - 3600)
|
||||||
|
start_time = random_start
|
||||||
|
current_time = random_start + 3600 # 一个小时后
|
||||||
|
|
||||||
# 获取所有消息
|
# 获取所有消息
|
||||||
messages = get_raw_msg_by_timestamp(timestamp_start=start_time, timestamp_end=current_time, limit=100)
|
messages = get_raw_msg_by_timestamp(timestamp_start=start_time, timestamp_end=current_time, limit=100)
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ class RelationshipManager:
|
|||||||
gender_list = json.loads(gender)
|
gender_list = json.loads(gender)
|
||||||
gender = random.choice(gender_list)
|
gender = random.choice(gender_list)
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
|
logger.error(f"性别解析错误: {gender}")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if gender and "女" in gender:
|
if gender and "女" in gender:
|
||||||
@@ -146,34 +147,39 @@ class RelationshipManager:
|
|||||||
|
|
||||||
nickname_str = await person_info_manager.get_value(person_id, "nickname")
|
nickname_str = await person_info_manager.get_value(person_id, "nickname")
|
||||||
platform = await person_info_manager.get_value(person_id, "platform")
|
platform = await person_info_manager.get_value(person_id, "platform")
|
||||||
relation_prompt = f"你认识 {person_name} ,{gender_prompt}在{platform}上的昵称是{nickname_str}。你对{gender_prompt}的印象是"
|
relation_prompt = f"'{person_name}' ,{gender_prompt}在{platform}上的昵称是{nickname_str}。"
|
||||||
|
|
||||||
# person_impression = await person_info_manager.get_value(person_id, "person_impression")
|
# person_impression = await person_info_manager.get_value(person_id, "person_impression")
|
||||||
# if person_impression:
|
# if person_impression:
|
||||||
# relation_prompt += f"你对ta的印象是:{person_impression}。"
|
# relation_prompt += f"你对ta的印象是:{person_impression}。"
|
||||||
|
|
||||||
traits = await person_info_manager.get_value(person_id, "traits")
|
traits = await person_info_manager.get_value(person_id, "traits")
|
||||||
|
gender = await person_info_manager.get_value(person_id, "gender")
|
||||||
|
relation = await person_info_manager.get_value(person_id, "relation")
|
||||||
|
identity = await person_info_manager.get_value(person_id, "identity")
|
||||||
|
meme = await person_info_manager.get_value(person_id, "meme")
|
||||||
|
|
||||||
|
if traits or gender or relation or identity or meme:
|
||||||
|
relation_prompt += f"你对{gender_prompt}的印象是:"
|
||||||
|
|
||||||
if traits:
|
if traits:
|
||||||
relation_prompt += f"{gender_prompt}的性格特征是:{traits}。"
|
relation_prompt += f"{gender_prompt}的性格特征是:{traits}。"
|
||||||
|
|
||||||
gender = await person_info_manager.get_value(person_id, "gender")
|
|
||||||
if gender:
|
if gender:
|
||||||
relation_prompt += f"{gender_prompt}的性别是:{gender}。"
|
relation_prompt += f"{gender_prompt}的性别是:{gender}。"
|
||||||
|
|
||||||
relation = await person_info_manager.get_value(person_id, "relation")
|
|
||||||
if relation:
|
if relation:
|
||||||
relation_prompt += f"你与{gender_prompt}的关系是:{relation}。"
|
relation_prompt += f"你与{gender_prompt}的关系是:{relation}。"
|
||||||
|
|
||||||
identity = await person_info_manager.get_value(person_id, "identity")
|
|
||||||
if identity:
|
if identity:
|
||||||
relation_prompt += f"{gender_prompt}的身份是:{identity}。"
|
relation_prompt += f"{gender_prompt}的身份是:{identity}。"
|
||||||
|
|
||||||
meme = await person_info_manager.get_value(person_id, "meme")
|
|
||||||
if meme:
|
if meme:
|
||||||
relation_prompt += f"你与{gender_prompt}之间的梗是:{meme}。"
|
relation_prompt += f"你与{gender_prompt}之间的梗是:{meme}。"
|
||||||
|
|
||||||
|
|
||||||
print(f"relation_prompt: {relation_prompt}")
|
# print(f"relation_prompt: {relation_prompt}")
|
||||||
return relation_prompt
|
return relation_prompt
|
||||||
|
|
||||||
async def update_person_impression(self, person_id, chat_id, reason, timestamp):
|
async def update_person_impression(self, person_id, chat_id, reason, timestamp):
|
||||||
|
|||||||
Reference in New Issue
Block a user