关系计算函数迁移
This commit is contained in:
@@ -342,18 +342,22 @@ class ChatBot:
|
|||||||
|
|
||||||
emotion = await self.gpt._get_emotion_tags(raw_content)
|
emotion = await self.gpt._get_emotion_tags(raw_content)
|
||||||
logger.debug(f"为 '{response}' 获取到的情感标签为:{emotion}")
|
logger.debug(f"为 '{response}' 获取到的情感标签为:{emotion}")
|
||||||
valuedict = {
|
await relationship_manager.calculate_update_relationship_value(chat_stream=chat,label=emotion[0])
|
||||||
"happy": 0.5,
|
|
||||||
"angry": -1,
|
# emotion = await self.gpt._get_emotion_tags(raw_content)
|
||||||
"sad": -0.5,
|
# logger.debug(f"为 '{response}' 获取到的情感标签为:{emotion}")
|
||||||
"surprised": 0.2,
|
# valuedict = {
|
||||||
"disgusted": -1.5,
|
# "happy": 0.5,
|
||||||
"fearful": -0.7,
|
# "angry": -1,
|
||||||
"neutral": 0.1,
|
# "sad": -0.5,
|
||||||
}
|
# "surprised": 0.2,
|
||||||
await relationship_manager.update_relationship_value(
|
# "disgusted": -1.5,
|
||||||
chat_stream=chat, relationship_value=valuedict[emotion[0]]
|
# "fearful": -0.7,
|
||||||
)
|
# "neutral": 0.1,
|
||||||
|
# }
|
||||||
|
# await relationship_manager.update_relationship_value(
|
||||||
|
# chat_stream=chat, relationship_value=valuedict[emotion[0]]
|
||||||
|
# )
|
||||||
# 使用情绪管理器更新情绪
|
# 使用情绪管理器更新情绪
|
||||||
self.mood_manager.update_mood_from_emotion(emotion[0], global_config.mood_intensity_factor)
|
self.mood_manager.update_mood_from_emotion(emotion[0], global_config.mood_intensity_factor)
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from loguru import logger
|
|||||||
from ...common.database import db
|
from ...common.database import db
|
||||||
from .message_base import UserInfo
|
from .message_base import UserInfo
|
||||||
from .chat_stream import ChatStream
|
from .chat_stream import ChatStream
|
||||||
|
import math
|
||||||
|
|
||||||
class Impression:
|
class Impression:
|
||||||
traits: str = None
|
traits: str = None
|
||||||
@@ -249,5 +250,59 @@ class RelationshipManager:
|
|||||||
else:
|
else:
|
||||||
return "某人"
|
return "某人"
|
||||||
|
|
||||||
|
async def calculate_update_relationship_value(self,
|
||||||
|
chat_stream: ChatStream,
|
||||||
|
label) -> None:
|
||||||
|
"""计算变更关系值
|
||||||
|
新的关系值变更计算方式:
|
||||||
|
将关系值限定在-1000到1000
|
||||||
|
对于关系值的变更,期望:
|
||||||
|
1.向两端逼近时会逐渐减缓
|
||||||
|
2.关系越差,改善越难,关系越好,恶化越容易
|
||||||
|
3.人维护关系的精力往往有限,所以当高关系值用户越多,对于中高关系值用户增长越慢
|
||||||
|
"""
|
||||||
|
valuedict = {
|
||||||
|
"happy": 1.0,
|
||||||
|
"angry": -2.0,
|
||||||
|
"sad": -1.0,
|
||||||
|
"surprised": 0.4,
|
||||||
|
"disgusted": -3,
|
||||||
|
"fearful": -1.4,
|
||||||
|
"neutral": 0.2,
|
||||||
|
}
|
||||||
|
if self.get_relationship(chat_stream):
|
||||||
|
old_value = self.get_relationship(chat_stream).relationship_value
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
|
if old_value > 1000:
|
||||||
|
old_value = 1000
|
||||||
|
elif old_value < -1000:
|
||||||
|
old_value = -1000
|
||||||
|
|
||||||
|
value = valuedict[label]
|
||||||
|
if old_value >= 0:
|
||||||
|
if valuedict[label] >= 0:
|
||||||
|
value = value*math.cos(math.pi*old_value/2000)
|
||||||
|
if old_value > 500:
|
||||||
|
high_value_count = 0
|
||||||
|
for key, relationship in self.relationships.items():
|
||||||
|
if relationship.relationship_value >= 900:
|
||||||
|
high_value_count += 1
|
||||||
|
value *= 3/(high_value_count + 3)
|
||||||
|
elif valuedict[label] < 0:
|
||||||
|
value = value*math.exp(old_value/1000)
|
||||||
|
elif old_value < 0:
|
||||||
|
if valuedict[label] >= 0:
|
||||||
|
value = value*math.exp(old_value/1000)
|
||||||
|
elif valuedict[label] < 0:
|
||||||
|
value = -value*math.cos(math.pi*old_value/2000)
|
||||||
|
|
||||||
|
logger.info(f"[zyf调试] 标签:{label} 关系值:{value} 原值:{old_value}")
|
||||||
|
|
||||||
|
await self.update_relationship_value(
|
||||||
|
chat_stream=chat_stream, relationship_value=value
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
relationship_manager = RelationshipManager()
|
relationship_manager = RelationshipManager()
|
||||||
|
|||||||
Reference in New Issue
Block a user