refactor(profile,llm): 提高用户资料的准确性和系统的稳健性。本次提交引入了多项针对用户资料管理和大语言模型交互的优化,目标是实现更高的准确性、更严格的数据验证以及提升系统可靠性。

- **用户资料管理(`user_profile_tool.py`):**
  - `UserProfileTool` 的描述进行了大幅更新,明确定义了严格的使用场景和绝对禁止的行为,防止误用。
  - 对 `preference_keywords` 和 `key_info` 的值实施了更严格的过滤,确保只记录具体、客观的事实和真实兴趣。
  - 减少了用于上下文的最近聊天消息数量,以更关注相关性更高的近期交互。
  - 修改了好感度计算逻辑,使其更加保守,不容易因日常小互动而改变,需要更有意义的交流才会产生变化。
  - 印象生成提示已更新,严格禁止猜测。
  并强调记录事实观察到的特征。- **关系信息显示(`relationship_fetcher.py`):** - 通过过滤掉一般交互术语来增强用户偏好显示,仅展示真实的爱好和兴趣。- 暂时注释了“关键事实”的显示,以防呈现潜在不准确或推测性的信息。- **大型语言模型交互稳定性(`base_action.py`):** - 在 `should_activate` 方法中引入了 7 秒超时的 LLM 判断调用。- 如果 LLM 判断超时,动作现在默认为“激活”,以防止系统阻塞并确保持续运行。
This commit is contained in:
tt-P607
2025-12-09 22:52:36 +08:00
parent 084192843b
commit 44f85c40bf
3 changed files with 145 additions and 88 deletions

View File

@@ -173,24 +173,34 @@ class RelationshipFetcher:
if impression:
relation_parts.append(f"\n你对{person_name}的印象:\n{impression}")
# 5. 用户偏好关键词
# 5. 用户偏好关键词(仅显示真实兴趣爱好)
if rel_data.get("preference_keywords"):
keywords_list = [kw.strip() for kw in rel_data["preference_keywords"].split(",") if kw.strip()]
if keywords_list:
keywords_str = "".join(keywords_list)
relation_parts.append(f"\n{person_name}的偏好和兴趣:{keywords_str}")
# 过滤掉明显不是兴趣爱好的词
filtered_keywords = []
for kw in keywords_list:
kw_lower = kw.lower()
# 排除聊天互动、情感需求等不是真实兴趣的词汇
if not any(excluded in kw_lower for excluded in [
'亲亲', '撒娇', '被宠', '被夸', '聊天', '互动', '关心', '专注', '需要'
]):
filtered_keywords.append(kw)
if filtered_keywords:
keywords_str = "".join(filtered_keywords)
relation_parts.append(f"\n{person_name}的兴趣爱好:{keywords_str}")
# 6. 关键信息
if rel_data.get("key_facts"):
try:
import orjson
facts = orjson.loads(rel_data["key_facts"])
if facts and isinstance(facts, list):
facts_lines = self._format_key_facts(facts, person_name)
if facts_lines:
relation_parts.append(f"\n你记住的关于{person_name}的重要信息:\n{facts_lines}")
except Exception:
pass
# 6. 关键信息 - 暂时隐藏,防止显示不准确的推测信息
# if rel_data.get("key_facts"):
# try:
# import orjson
# facts = orjson.loads(rel_data["key_facts"])
# if facts and isinstance(facts, list):
# facts_lines = self._format_key_facts(facts, person_name)
# if facts_lines:
# relation_parts.append(f"\n你记住的关于{person_name}的重要信息:\n{facts_lines}")
# except Exception:
# pass
except Exception as e:
logger.error(f"查询UserRelationships表失败: {e}")