🤖 自动格式化代码 [skip ci]
This commit is contained in:
@@ -394,7 +394,7 @@ class DefaultReplyer:
|
|||||||
else:
|
else:
|
||||||
bot_nickname = ""
|
bot_nickname = ""
|
||||||
short_impression = await person_info_manager.get_value(bot_person_id, "short_impression")
|
short_impression = await person_info_manager.get_value(bot_person_id, "short_impression")
|
||||||
# 解析字符串形式的Python列表
|
# 解析字符串形式的Python列表
|
||||||
try:
|
try:
|
||||||
if isinstance(short_impression, str) and short_impression.strip():
|
if isinstance(short_impression, str) and short_impression.strip():
|
||||||
short_impression = ast.literal_eval(short_impression)
|
short_impression = ast.literal_eval(short_impression)
|
||||||
@@ -404,7 +404,7 @@ class DefaultReplyer:
|
|||||||
except (ValueError, SyntaxError) as e:
|
except (ValueError, SyntaxError) as e:
|
||||||
logger.error(f"解析short_impression失败: {e}, 原始值: {short_impression}")
|
logger.error(f"解析short_impression失败: {e}, 原始值: {short_impression}")
|
||||||
short_impression = ["友好活泼", "人类"]
|
short_impression = ["友好活泼", "人类"]
|
||||||
|
|
||||||
# 确保short_impression是列表格式且有足够的元素
|
# 确保short_impression是列表格式且有足够的元素
|
||||||
if not isinstance(short_impression, list) or len(short_impression) < 2:
|
if not isinstance(short_impression, list) or len(short_impression) < 2:
|
||||||
logger.warning(f"short_impression格式不正确: {short_impression}, 使用默认值")
|
logger.warning(f"short_impression格式不正确: {short_impression}, 使用默认值")
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import random
|
|||||||
from src.person_info.person_info import get_person_info_manager
|
from src.person_info.person_info import get_person_info_manager
|
||||||
from src.chat.express.expression_selector import expression_selector
|
from src.chat.express.expression_selector import expression_selector
|
||||||
import re
|
import re
|
||||||
import json
|
|
||||||
import ast
|
import ast
|
||||||
|
|
||||||
from src.person_info.relationship_manager import get_relationship_manager
|
from src.person_info.relationship_manager import get_relationship_manager
|
||||||
@@ -95,9 +94,9 @@ class PromptBuilder:
|
|||||||
) -> str:
|
) -> str:
|
||||||
person_info_manager = get_person_info_manager()
|
person_info_manager = get_person_info_manager()
|
||||||
bot_person_id = person_info_manager.get_person_id("system", "bot_id")
|
bot_person_id = person_info_manager.get_person_id("system", "bot_id")
|
||||||
|
|
||||||
short_impression = await person_info_manager.get_value(bot_person_id, "short_impression")
|
short_impression = await person_info_manager.get_value(bot_person_id, "short_impression")
|
||||||
|
|
||||||
# 解析字符串形式的Python列表
|
# 解析字符串形式的Python列表
|
||||||
try:
|
try:
|
||||||
if isinstance(short_impression, str) and short_impression.strip():
|
if isinstance(short_impression, str) and short_impression.strip():
|
||||||
@@ -108,12 +107,12 @@ class PromptBuilder:
|
|||||||
except (ValueError, SyntaxError) as e:
|
except (ValueError, SyntaxError) as e:
|
||||||
logger.error(f"解析short_impression失败: {e}, 原始值: {short_impression}")
|
logger.error(f"解析short_impression失败: {e}, 原始值: {short_impression}")
|
||||||
short_impression = ["友好活泼", "人类"]
|
short_impression = ["友好活泼", "人类"]
|
||||||
|
|
||||||
# 确保short_impression是列表格式且有足够的元素
|
# 确保short_impression是列表格式且有足够的元素
|
||||||
if not isinstance(short_impression, list) or len(short_impression) < 2:
|
if not isinstance(short_impression, list) or len(short_impression) < 2:
|
||||||
logger.warning(f"short_impression格式不正确: {short_impression}, 使用默认值")
|
logger.warning(f"short_impression格式不正确: {short_impression}, 使用默认值")
|
||||||
short_impression = ["友好活泼", "人类"]
|
short_impression = ["友好活泼", "人类"]
|
||||||
|
|
||||||
personality = short_impression[0]
|
personality = short_impression[0]
|
||||||
identity = short_impression[1]
|
identity = short_impression[1]
|
||||||
prompt_personality = personality + "," + identity
|
prompt_personality = personality + "," + identity
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ class Individuality:
|
|||||||
# 根据变化情况决定是否重新创建
|
# 根据变化情况决定是否重新创建
|
||||||
personality_result = None
|
personality_result = None
|
||||||
identity_result = None
|
identity_result = None
|
||||||
|
|
||||||
if personality_changed:
|
if personality_changed:
|
||||||
logger.info("检测到人格配置变化,重新生成压缩版本")
|
logger.info("检测到人格配置变化,重新生成压缩版本")
|
||||||
personality_result = await self._create_personality(personality_core, personality_sides)
|
personality_result = await self._create_personality(personality_core, personality_sides)
|
||||||
@@ -121,7 +121,7 @@ class Individuality:
|
|||||||
else:
|
else:
|
||||||
logger.info("未找到现有的人格缓存,重新生成")
|
logger.info("未找到现有的人格缓存,重新生成")
|
||||||
personality_result = await self._create_personality(personality_core, personality_sides)
|
personality_result = await self._create_personality(personality_core, personality_sides)
|
||||||
|
|
||||||
if identity_changed:
|
if identity_changed:
|
||||||
logger.info("检测到身份配置变化,重新生成压缩版本")
|
logger.info("检测到身份配置变化,重新生成压缩版本")
|
||||||
identity_result = await self._create_identity(identity_detail)
|
identity_result = await self._create_identity(identity_detail)
|
||||||
@@ -140,9 +140,9 @@ class Individuality:
|
|||||||
else:
|
else:
|
||||||
logger.info("未找到现有的身份缓存,重新生成")
|
logger.info("未找到现有的身份缓存,重新生成")
|
||||||
identity_result = await self._create_identity(identity_detail)
|
identity_result = await self._create_identity(identity_detail)
|
||||||
|
|
||||||
result = [personality_result, identity_result]
|
result = [personality_result, identity_result]
|
||||||
|
|
||||||
# 更新short_impression字段
|
# 更新short_impression字段
|
||||||
if personality_result and identity_result:
|
if personality_result and identity_result:
|
||||||
person_info_manager = get_person_info_manager()
|
person_info_manager = get_person_info_manager()
|
||||||
@@ -150,7 +150,7 @@ class Individuality:
|
|||||||
logger.info("已将人设构建")
|
logger.info("已将人设构建")
|
||||||
else:
|
else:
|
||||||
logger.error("人设构建失败")
|
logger.error("人设构建失败")
|
||||||
|
|
||||||
asyncio.create_task(self.express_style.extract_and_store_personality_expressions())
|
asyncio.create_task(self.express_style.extract_and_store_personality_expressions())
|
||||||
|
|
||||||
def to_dict(self) -> dict:
|
def to_dict(self) -> dict:
|
||||||
@@ -323,7 +323,7 @@ class Individuality:
|
|||||||
self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list
|
self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list
|
||||||
) -> tuple[str, str]:
|
) -> tuple[str, str]:
|
||||||
"""获取personality和identity配置的哈希值
|
"""获取personality和identity配置的哈希值
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
tuple: (personality_hash, identity_hash)
|
tuple: (personality_hash, identity_hash)
|
||||||
"""
|
"""
|
||||||
@@ -336,7 +336,7 @@ class Individuality:
|
|||||||
}
|
}
|
||||||
personality_str = json.dumps(personality_config, sort_keys=True)
|
personality_str = json.dumps(personality_config, sort_keys=True)
|
||||||
personality_hash = hashlib.md5(personality_str.encode("utf-8")).hexdigest()
|
personality_hash = hashlib.md5(personality_str.encode("utf-8")).hexdigest()
|
||||||
|
|
||||||
# 身份配置哈希
|
# 身份配置哈希
|
||||||
identity_config = {
|
identity_config = {
|
||||||
"identity_detail": sorted(identity_detail),
|
"identity_detail": sorted(identity_detail),
|
||||||
@@ -344,14 +344,14 @@ class Individuality:
|
|||||||
}
|
}
|
||||||
identity_str = json.dumps(identity_config, sort_keys=True)
|
identity_str = json.dumps(identity_config, sort_keys=True)
|
||||||
identity_hash = hashlib.md5(identity_str.encode("utf-8")).hexdigest()
|
identity_hash = hashlib.md5(identity_str.encode("utf-8")).hexdigest()
|
||||||
|
|
||||||
return personality_hash, identity_hash
|
return personality_hash, identity_hash
|
||||||
|
|
||||||
async def _check_config_and_clear_if_changed(
|
async def _check_config_and_clear_if_changed(
|
||||||
self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list
|
self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list
|
||||||
) -> tuple[bool, bool]:
|
) -> tuple[bool, bool]:
|
||||||
"""检查配置是否发生变化,如果变化则清空相应缓存
|
"""检查配置是否发生变化,如果变化则清空相应缓存
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
tuple: (personality_changed, identity_changed)
|
tuple: (personality_changed, identity_changed)
|
||||||
"""
|
"""
|
||||||
@@ -453,9 +453,7 @@ class Individuality:
|
|||||||
logger.error(f"解析info_list失败: {info_list_json}")
|
logger.error(f"解析info_list失败: {info_list_json}")
|
||||||
return keywords
|
return keywords
|
||||||
|
|
||||||
async def _create_personality(
|
async def _create_personality(self, personality_core: str, personality_sides: list) -> str:
|
||||||
self, personality_core: str, personality_sides: list
|
|
||||||
) -> str:
|
|
||||||
"""使用LLM创建压缩版本的impression
|
"""使用LLM创建压缩版本的impression
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -467,8 +465,7 @@ class Individuality:
|
|||||||
str: 压缩后的impression文本
|
str: 压缩后的impression文本
|
||||||
"""
|
"""
|
||||||
logger.info("正在构建人格.........")
|
logger.info("正在构建人格.........")
|
||||||
|
|
||||||
|
|
||||||
# 核心人格保持不变
|
# 核心人格保持不变
|
||||||
personality_parts = []
|
personality_parts = []
|
||||||
if personality_core:
|
if personality_core:
|
||||||
@@ -479,8 +476,7 @@ class Individuality:
|
|||||||
personality_to_compress = []
|
personality_to_compress = []
|
||||||
if personality_sides:
|
if personality_sides:
|
||||||
personality_to_compress.append(f"人格特质: {'、'.join(personality_sides)}")
|
personality_to_compress.append(f"人格特质: {'、'.join(personality_sides)}")
|
||||||
|
|
||||||
|
|
||||||
prompt = f"""请将以下人格信息进行简洁压缩,保留主要内容,用简练的中文表达:
|
prompt = f"""请将以下人格信息进行简洁压缩,保留主要内容,用简练的中文表达:
|
||||||
{personality_to_compress}
|
{personality_to_compress}
|
||||||
|
|
||||||
@@ -492,7 +488,7 @@ class Individuality:
|
|||||||
response, (_, _) = await self.model.generate_response_async(
|
response, (_, _) = await self.model.generate_response_async(
|
||||||
prompt=prompt,
|
prompt=prompt,
|
||||||
)
|
)
|
||||||
|
|
||||||
if response.strip():
|
if response.strip():
|
||||||
personality_parts.append(response.strip())
|
personality_parts.append(response.strip())
|
||||||
logger.info(f"精简人格侧面: {response.strip()}")
|
logger.info(f"精简人格侧面: {response.strip()}")
|
||||||
@@ -506,15 +502,13 @@ class Individuality:
|
|||||||
personality_result = personality_core
|
personality_result = personality_core
|
||||||
if personality_sides:
|
if personality_sides:
|
||||||
personality_result += ",".join(personality_sides)
|
personality_result += ",".join(personality_sides)
|
||||||
|
|
||||||
|
|
||||||
return personality_result
|
return personality_result
|
||||||
|
|
||||||
async def _create_identity(self, identity_detail: list) -> str:
|
async def _create_identity(self, identity_detail: list) -> str:
|
||||||
"""使用LLM创建压缩版本的impression
|
"""使用LLM创建压缩版本的impression"""
|
||||||
"""
|
|
||||||
logger.info("正在构建身份.........")
|
logger.info("正在构建身份.........")
|
||||||
|
|
||||||
if global_config.identity.compress_indentity:
|
if global_config.identity.compress_indentity:
|
||||||
identity_to_compress = []
|
identity_to_compress = []
|
||||||
if identity_detail:
|
if identity_detail:
|
||||||
@@ -539,10 +533,8 @@ class Individuality:
|
|||||||
logger.error(f"使用LLM压缩身份时出错: {response}")
|
logger.error(f"使用LLM压缩身份时出错: {response}")
|
||||||
else:
|
else:
|
||||||
identity_result = "。".join(identity_detail)
|
identity_result = "。".join(identity_detail)
|
||||||
|
|
||||||
|
|
||||||
return identity_result
|
|
||||||
|
|
||||||
|
return identity_result
|
||||||
|
|
||||||
|
|
||||||
individuality = None
|
individuality = None
|
||||||
|
|||||||
Reference in New Issue
Block a user