fix: 懒加载单例以修复环境变量加载问题
This commit is contained in:
@@ -1,14 +1,15 @@
|
||||
from src.manager.async_task_manager import AsyncTask
|
||||
from src.common.logger import get_logger
|
||||
from src.person_info.person_info import PersonInfoManager
|
||||
from src.person_info.relationship_manager import relationship_manager
|
||||
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp
|
||||
from src.config.config import global_config
|
||||
from src.chat.message_receive.chat_stream import chat_manager
|
||||
from src.chat.message_receive.chat_stream import get_chat_manager
|
||||
import time
|
||||
import random
|
||||
from collections import defaultdict
|
||||
|
||||
from src.person_info.relationship_manager import get_relationship_manager
|
||||
|
||||
logger = get_logger("relation")
|
||||
|
||||
|
||||
@@ -50,7 +51,7 @@ class ImpressionUpdateTask(AsyncTask):
|
||||
logger.info(f"聊天组 {chat_id} 消息数小于30,跳过处理")
|
||||
continue
|
||||
|
||||
chat_stream = chat_manager.get_stream(chat_id)
|
||||
chat_stream = get_chat_manager().get_stream(chat_id)
|
||||
if not chat_stream:
|
||||
logger.warning(f"未找到聊天组 {chat_id} 的chat_stream,跳过处理")
|
||||
continue
|
||||
@@ -149,7 +150,7 @@ class ImpressionUpdateTask(AsyncTask):
|
||||
logger.info(
|
||||
f"开始进一步了解用户: {[msg[1]['messages'][0]['user_nickname'] for msg in selected_users]}"
|
||||
)
|
||||
|
||||
relationship_manager = get_relationship_manager()
|
||||
# 更新选中用户的印象
|
||||
for person_id, data in selected_users:
|
||||
user_nickname = data["messages"][0]["user_nickname"]
|
||||
|
||||
@@ -277,7 +277,7 @@ class PersonInfoManager:
|
||||
current_name_set = set(self.person_name_list.values())
|
||||
|
||||
while current_try < max_retries:
|
||||
# prompt_personality = individuality.get_prompt(x_person=2, level=1)
|
||||
# prompt_personality =get_individuality().get_prompt(x_person=2, level=1)
|
||||
bot_name = global_config.bot.nickname
|
||||
|
||||
qv_name_prompt = f"你是{bot_name},一个伪装成人类的AI,你不能让别人发现这一点,"
|
||||
@@ -601,4 +601,11 @@ class PersonInfoManager:
|
||||
return None
|
||||
|
||||
|
||||
person_info_manager = PersonInfoManager()
|
||||
person_info_manager = None
|
||||
|
||||
|
||||
def get_person_info_manager():
|
||||
global person_info_manager
|
||||
if person_info_manager is None:
|
||||
person_info_manager = PersonInfoManager()
|
||||
return person_info_manager
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from src.common.logger import get_logger
|
||||
import math
|
||||
from src.person_info.person_info import person_info_manager, PersonInfoManager
|
||||
from src.person_info.person_info import PersonInfoManager, get_person_info_manager
|
||||
import time
|
||||
import random
|
||||
from src.llm_models.utils_model import LLMRequest
|
||||
@@ -16,6 +16,7 @@ import jieba
|
||||
from sklearn.feature_extraction.text import TfidfVectorizer
|
||||
from sklearn.metrics.pairwise import cosine_similarity
|
||||
|
||||
|
||||
logger = get_logger("relation")
|
||||
|
||||
|
||||
@@ -85,6 +86,7 @@ class RelationshipManager:
|
||||
@staticmethod
|
||||
async def is_known_some_one(platform, user_id):
|
||||
"""判断是否认识某人"""
|
||||
person_info_manager = get_person_info_manager()
|
||||
is_known = await person_info_manager.is_person_known(platform, user_id)
|
||||
return is_known
|
||||
|
||||
@@ -93,6 +95,7 @@ class RelationshipManager:
|
||||
"""判断是否认识某人"""
|
||||
person_id = PersonInfoManager.get_person_id(platform, user_id)
|
||||
# 生成唯一的 person_name
|
||||
person_info_manager = get_person_info_manager()
|
||||
unique_nickname = await person_info_manager._generate_unique_person_name(user_nickname)
|
||||
data = {
|
||||
"platform": platform,
|
||||
@@ -117,7 +120,7 @@ class RelationshipManager:
|
||||
person_id = person
|
||||
else:
|
||||
person_id = PersonInfoManager.get_person_id(person[0], person[1])
|
||||
|
||||
person_info_manager = get_person_info_manager()
|
||||
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||
if not person_name or person_name == "none":
|
||||
return ""
|
||||
@@ -157,6 +160,7 @@ class RelationshipManager:
|
||||
field_name: 字段名称
|
||||
new_items: 新的项目列表
|
||||
"""
|
||||
person_info_manager = get_person_info_manager()
|
||||
old_items = await person_info_manager.get_value(person_id, field_name) or []
|
||||
updated_items = list(set(old_items + [item for item in new_items if isinstance(item, str) and item]))
|
||||
await person_info_manager.update_one_field(person_id, field_name, updated_items)
|
||||
@@ -171,12 +175,13 @@ class RelationshipManager:
|
||||
timestamp: 时间戳 (用于记录交互时间)
|
||||
bot_engaged_messages: bot参与的消息列表
|
||||
"""
|
||||
person_info_manager = get_person_info_manager()
|
||||
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||
nickname = await person_info_manager.get_value(person_id, "nickname")
|
||||
|
||||
alias_str = ", ".join(global_config.bot.alias_names)
|
||||
# personality_block = individuality.get_personality_prompt(x_person=2, level=2)
|
||||
# identity_block = individuality.get_identity_prompt(x_person=2, level=2)
|
||||
# personality_block =get_individuality().get_personality_prompt(x_person=2, level=2)
|
||||
# identity_block =get_individuality().get_identity_prompt(x_person=2, level=2)
|
||||
|
||||
user_messages = bot_engaged_messages
|
||||
|
||||
@@ -602,4 +607,11 @@ class RelationshipManager:
|
||||
return tfidf_sim > tfidf_threshold or seq_sim > seq_threshold
|
||||
|
||||
|
||||
relationship_manager = RelationshipManager()
|
||||
relationship_manager = None
|
||||
|
||||
|
||||
def get_relationship_manager():
|
||||
global relationship_manager
|
||||
if relationship_manager is None:
|
||||
relationship_manager = RelationshipManager()
|
||||
return relationship_manager
|
||||
|
||||
Reference in New Issue
Block a user