fix: 保证能运行的小修改

This commit is contained in:
Rikki
2025-03-11 06:54:04 +08:00
parent 0cf4ff0a4d
commit 67f6d7cd42
3 changed files with 45 additions and 65 deletions

View File

@@ -164,7 +164,6 @@ class ChatBot:
response,raw_content = await self.gpt.generate_response(message) response,raw_content = await self.gpt.generate_response(message)
if response: if response:
container = message_manager.get_container(chat.stream_id)
container = message_manager.get_container(chat.stream_id) container = message_manager.get_container(chat.stream_id)
thinking_message = None thinking_message = None
# 找到message,删除 # 找到message,删除
@@ -182,12 +181,12 @@ class ChatBot:
# 记录开始思考的时间,避免从思考到回复的时间太久 # 记录开始思考的时间,避免从思考到回复的时间太久
thinking_start_time = thinking_message.thinking_start_time thinking_start_time = thinking_message.thinking_start_time
message_set = MessageSet(chat, think_id) message_set = MessageSet(chat, think_id)
message_set = MessageSet(chat, think_id)
#计算打字时间1是为了模拟打字2是避免多条回复乱序 #计算打字时间1是为了模拟打字2是避免多条回复乱序
accu_typing_time = 0 accu_typing_time = 0
mark_head = False mark_head = False
for msg in response: for msg in response:
print("test")
# print(f"\033[1;32m[回复内容]\033[0m {msg}") # print(f"\033[1;32m[回复内容]\033[0m {msg}")
# 通过时间改变时间戳 # 通过时间改变时间戳
typing_time = calculate_typing_time(msg) typing_time = calculate_typing_time(msg)
@@ -239,6 +238,7 @@ class ChatBot:
is_emoji=True is_emoji=True
) )
message_manager.add_message(bot_message) message_manager.add_message(bot_message)
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 = { valuedict = {

View File

@@ -259,7 +259,7 @@ class EmojiManager:
upsert=True upsert=True
) )
# 保存描述到image_descriptions集合 # 保存描述到image_descriptions集合
await image_manager._save_description_to_db(image_hash, description, 'emoji') image_manager._save_description_to_db(image_hash, description, 'emoji')
logger.success(f"同步已存在的表情包到images集合: {filename}") logger.success(f"同步已存在的表情包到images集合: {filename}")
continue continue

View File

@@ -16,9 +16,7 @@ class WillingManager:
self.chat_reply_willing: Dict[str, float] = {} # 存储每个聊天流的回复意愿 self.chat_reply_willing: Dict[str, float] = {} # 存储每个聊天流的回复意愿
self._decay_task = None self._decay_task = None
self._started = False self._started = False
self.min_reply_willing = 0.01
self.attenuation_coefficient = 0.75
async def _decay_reply_willing(self): async def _decay_reply_willing(self):
"""定期衰减回复意愿""" """定期衰减回复意愿"""
while True: while True:
@@ -35,9 +33,12 @@ class WillingManager:
return self.chat_reply_willing.get(stream.stream_id, 0) return self.chat_reply_willing.get(stream.stream_id, 0)
return 0 return 0
def set_willing(self, chat_id: int, willing: float): def set_willing(self, chat_id: str, willing: float):
"""设置指定群组的回复意愿""" """设置指定聊天流的回复意愿"""
self.group_reply_willing[chat_id] = willing self.chat_reply_willing[chat_id] = willing
def set_willing(self, chat_id: str, willing: float):
"""设置指定聊天流的回复意愿"""
self.chat_reply_willing[chat_id] = willing
async def change_reply_willing_received(self, async def change_reply_willing_received(self,
chat_stream:ChatStream, chat_stream:ChatStream,
@@ -50,67 +51,47 @@ class WillingManager:
# 获取或创建聊天流 # 获取或创建聊天流
stream = chat_stream stream = chat_stream
chat_id = stream.stream_id chat_id = stream.stream_id
group_id = stream.group_info.group_id
# 若非目标回复群组则直接return
if group_id not in config.talk_allowed_groups:
reply_probability = 0
return reply_probability
current_willing = self.chat_reply_willing.get(chat_id, 0) current_willing = self.chat_reply_willing.get(chat_id, 0)
logger.debug(f"[{chat_id}]的初始回复意愿: {current_willing}") # print(f"初始意愿: {current_willing}")
if is_mentioned_bot and current_willing < 1.0:
current_willing += 0.9
# 根据消息类型被cue/表情包)调控 print(f"被提及, 当前意愿: {current_willing}")
if is_mentioned_bot: elif is_mentioned_bot:
current_willing = min( current_willing += 0.05
3.0, print(f"被重复提及, 当前意愿: {current_willing}")
current_willing + 0.9
)
logger.debug(f"被提及, 当前意愿: {current_willing}")
if is_emoji: if is_emoji:
current_willing *= 0.1 current_willing *= 0.1
logger.debug(f"表情包, 当前意愿: {current_willing}") print(f"表情包, 当前意愿: {current_willing}")
# 兴趣放大系数,若兴趣 > 0.4则增加回复概率 print(f"放大系数_interested_rate: {global_config.response_interested_rate_amplifier}")
interested_rate_amplifier = global_config.response_interested_rate_amplifier interested_rate *= global_config.response_interested_rate_amplifier #放大回复兴趣度
logger.debug(f"放大系数_interested_rate: {interested_rate_amplifier}") if interested_rate > 0.4:
interested_rate *= interested_rate_amplifier # print(f"兴趣度: {interested_rate}, 当前意愿: {current_willing}")
current_willing += interested_rate-0.4
current_willing += max(
0.0, current_willing *= global_config.response_willing_amplifier #放大回复意愿
interested_rate - 0.4 # print(f"放大系数_willing: {global_config.response_willing_amplifier}, 当前意愿: {current_willing}")
)
reply_probability = max((current_willing - 0.45) * 2, 0)
# 回复意愿系数调控,独立乘区
willing_amplifier = max( # 检查群组权限(如果是群聊)
global_config.response_willing_amplifier, if chat_stream.group_info:
self.min_reply_willing if chat_stream.group_info.group_id not in config.talk_allowed_groups:
) current_willing = 0
current_willing *= willing_amplifier reply_probability = 0
logger.debug(f"放大系数_willing: {global_config.response_willing_amplifier}, 当前意愿: {current_willing}")
if chat_stream.group_info.group_id in config.talk_frequency_down_groups:
# 回复概率迭代保底0.01回复概率 reply_probability = reply_probability / global_config.down_frequency_rate
reply_probability = max(
(current_willing - 0.45) * 2,
self.min_reply_willing
)
# 降低目标低频群组回复概率
down_frequency_rate = max(
1.0,
global_config.down_frequency_rate
)
if group_id in config.talk_frequency_down_groups:
reply_probability = reply_probability / down_frequency_rate
reply_probability = min(reply_probability, 1) reply_probability = min(reply_probability, 1)
if reply_probability < 0:
self.group_reply_willing[group_id] = min(current_willing, 3.0) reply_probability = 0
logger.debug(f"当前群组{group_id}回复概率:{reply_probability}")
self.chat_reply_willing[chat_id] = min(current_willing, 3.0)
self.chat_reply_willing[chat_id] = min(current_willing, 3.0)
return reply_probability return reply_probability
def change_reply_willing_sent(self, chat_stream:ChatStream): def change_reply_willing_sent(self, chat_stream:ChatStream):
@@ -135,6 +116,5 @@ class WillingManager:
self._decay_task = asyncio.create_task(self._decay_reply_willing()) self._decay_task = asyncio.create_task(self._decay_reply_willing())
self._started = True self._started = True
# 创建全局实例 # 创建全局实例
willing_manager = WillingManager() willing_manager = WillingManager()