From dea22d849d285b01c5ab76d6f50c5fdaaf4636ac Mon Sep 17 00:00:00 2001 From: XBC_D2O Date: Mon, 10 Mar 2025 23:19:46 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=A2=AB@?= =?UTF-8?q?=E5=90=8E=E7=AD=89=E5=BE=85=E4=B8=8B=E6=96=87=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=B9=B6=E4=BC=98=E5=8C=96=E8=A1=A8=E6=83=85?= =?UTF-8?q?=E5=8C=85=E6=8F=8F=E8=BF=B0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/bot.py | 7 +++++++ src/plugins/chat/emoji_manager.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py index c510fe4b..34ad7ad2 100644 --- a/src/plugins/chat/bot.py +++ b/src/plugins/chat/bot.py @@ -1,5 +1,6 @@ import time from random import random +import asyncio from loguru import logger from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent @@ -88,6 +89,12 @@ class ChatBot: await self.storage.store_message(message, topic[0] if topic else None) is_mentioned = is_mentioned_bot_in_txt(message.processed_plain_text) + + if is_mentioned: + #如果被@等待下文10秒 + await asyncio.sleep(10) + logger.info(f"被@,等待下文") + reply_probability = willing_manager.change_reply_willing_received( event.group_id, topic[0] if topic else None, diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index 973bcad2..d2b9ed64 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -177,7 +177,7 @@ class EmojiManager: async def _get_emoji_discription(self, image_base64: str) -> str: """获取表情包的标签""" try: - prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容和表情包所表达的情感' + prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容、上面的文字和表情包所表达的情感' content, _ = await self.vlm.generate_response_for_image(prompt, image_base64) logger.debug(f"输出描述: {content}") From e9088543843234ac46e228890b94caa17790ae14 Mon Sep 17 00:00:00 2001 From: XBC_D2O Date: Mon, 10 Mar 2025 23:21:28 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=E8=A2=AB@=E5=90=8E=E7=AD=89?= =?UTF-8?q?=E5=BE=85=E4=B8=8B=E6=96=87=EF=BC=8C=E5=BB=B6=E8=BF=9F10?= =?UTF-8?q?=E7=A7=92=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/bot.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py index c510fe4b..34ad7ad2 100644 --- a/src/plugins/chat/bot.py +++ b/src/plugins/chat/bot.py @@ -1,5 +1,6 @@ import time from random import random +import asyncio from loguru import logger from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent @@ -88,6 +89,12 @@ class ChatBot: await self.storage.store_message(message, topic[0] if topic else None) is_mentioned = is_mentioned_bot_in_txt(message.processed_plain_text) + + if is_mentioned: + #如果被@等待下文10秒 + await asyncio.sleep(10) + logger.info(f"被@,等待下文") + reply_probability = willing_manager.change_reply_willing_received( event.group_id, topic[0] if topic else None, From 1eb0e36ade6db1828770d5f7289864a531621240 Mon Sep 17 00:00:00 2001 From: XBC_D2O Date: Mon, 10 Mar 2025 23:21:50 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E8=A1=A8?= =?UTF-8?q?=E6=83=85=E5=8C=85=E6=8F=8F=E8=BF=B0=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=B9=E6=96=87=E5=AD=97=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E7=9A=84=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/emoji_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index 973bcad2..d2b9ed64 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -177,7 +177,7 @@ class EmojiManager: async def _get_emoji_discription(self, image_base64: str) -> str: """获取表情包的标签""" try: - prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容和表情包所表达的情感' + prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容、上面的文字和表情包所表达的情感' content, _ = await self.vlm.generate_response_for_image(prompt, image_base64) logger.debug(f"输出描述: {content}") From e437d8f58c1008c71b22fae232440aa5f6a1f54e Mon Sep 17 00:00:00 2001 From: XBC_D2O Date: Tue, 11 Mar 2025 00:08:22 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20=E6=B3=A8=E9=87=8A=E6=8E=89?= =?UTF-8?q?=E6=97=A5=E7=A8=8B=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/__init__.py | 2 +- src/plugins/chat/prompt_builder.py | 34 +++++++++++----------- src/plugins/chat/utils.py | 8 ++--- src/plugins/schedule/schedule_generator.py | 2 +- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/plugins/chat/__init__.py b/src/plugins/chat/__init__.py index bd71be01..a11b4c2a 100644 --- a/src/plugins/chat/__init__.py +++ b/src/plugins/chat/__init__.py @@ -8,7 +8,7 @@ from nonebot.typing import T_State from ...common.database import Database from ..moods.moods import MoodManager # 导入情绪管理器 -from ..schedule.schedule_generator import bot_schedule +# from ..schedule.schedule_generator import bot_schedule from ..utils.statistic import LLMStatistics from .bot import chat_bot from .config import global_config diff --git a/src/plugins/chat/prompt_builder.py b/src/plugins/chat/prompt_builder.py index 4cf21af1..e787a943 100644 --- a/src/plugins/chat/prompt_builder.py +++ b/src/plugins/chat/prompt_builder.py @@ -6,7 +6,7 @@ from loguru import logger from ...common.database import Database from ..memory_system.memory import hippocampus, memory_graph from ..moods.moods import MoodManager -from ..schedule.schedule_generator import bot_schedule +#from ..schedule.schedule_generator import bot_schedule from .config import global_config from .utils import get_embedding, get_recent_group_detailed_plain_text @@ -51,10 +51,10 @@ class PromptBuilder: mood_prompt = mood_manager.get_prompt() # 日程构建 - current_date = time.strftime("%Y-%m-%d", time.localtime()) - current_time = time.strftime("%H:%M:%S", time.localtime()) - bot_schedule_now_time, bot_schedule_now_activity = bot_schedule.get_current_task() - prompt_date = f'''今天是{current_date},现在是{current_time},你今天的日程是:\n{bot_schedule.today_schedule}\n你现在正在{bot_schedule_now_activity}\n''' + # current_date = time.strftime("%Y-%m-%d", time.localtime()) + # current_time = time.strftime("%H:%M:%S", time.localtime()) + # bot_schedule_now_time, bot_schedule_now_activity = bot_schedule.get_current_task() + # prompt_date = f'''今天是{current_date},现在是{current_time},你今天的日程是:\n{bot_schedule.today_schedule}\n你现在正在{bot_schedule_now_activity}\n''' # 知识构建 start_time = time.time() @@ -135,16 +135,16 @@ class PromptBuilder: personality_choice = random.random() if personality_choice < probability_1: # 第一种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[0]}, 你正在浏览qq群,{promt_info_prompt}, - 现在请你给出日常且口语化的回复,平淡一些,尽量简短一些。{keywords_reaction_prompt} - 请注意把握群里的聊天内容,不要刻意突出自身学科背景,不要回复的太有条理,可以有个性。''' + 现在请你给出日常且口语化的回复。{keywords_reaction_prompt} + 请注意把握群里的聊天内容,回复可以有个性。''' elif personality_choice < probability_1 + probability_2: # 第二种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[1]}, 你正在浏览qq群,{promt_info_prompt}, - 现在请你给出日常且口语化的回复,请表现你自己的见解,不要一昧迎合,尽量简短一些。{keywords_reaction_prompt} - 请你表达自己的见解和观点。可以有个性。''' + 现在请你给出日常且口语化的回复。{keywords_reaction_prompt} + 请注意把握群里的聊天内容,回复可以有个性。''' else: # 第三种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[2]}, 你正在浏览qq群,{promt_info_prompt}, - 现在请你给出日常且口语化的回复,请表现你自己的见解,不要一昧迎合,尽量简短一些。{keywords_reaction_prompt} - 请你表达自己的见解和观点。可以有个性。''' + 现在请你给出日常且口语化的回复。{keywords_reaction_prompt} + 请注意把握群里的聊天内容,回复可以有个性。''' # 中文高手(新加的好玩功能) prompt_ger = '' @@ -152,16 +152,16 @@ class PromptBuilder: prompt_ger += '你喜欢用倒装句' if random.random() < 0.02: prompt_ger += '你喜欢用反问句' - if random.random() < 0.01: - prompt_ger += '你喜欢用文言文' + #if random.random() < 0.01: + # prompt_ger += '你喜欢用文言文' # 额外信息要求 - extra_info = '''但是记得回复平淡一些,简短一些,尤其注意在没明确提到时不要过多提及自身的背景, 不要直接回复别人发的表情包,记住不要输出多余内容(包括前后缀,冒号和引号,括号,表情等),只需要输出回复内容就好,不要输出其他任何内容''' + extra_info = '''尤其注意在没明确提到时不要过多提及自身的背景, 不要直接回复别人发的表情包,记住不要输出多余内容(包括前后缀,冒号和引号,括号,表情等),只需要输出回复内容就好,不要输出其他任何内容''' # 合并prompt prompt = "" prompt += f"{prompt_info}\n" - prompt += f"{prompt_date}\n" + #prompt += f"{prompt_date}\n" prompt += f"{chat_talking_prompt}\n" prompt += f"{prompt_personality}\n" prompt += f"{prompt_ger}\n" @@ -178,8 +178,8 @@ class PromptBuilder: else: # 第三种人格 prompt_personality_check = f'''你的网名叫{global_config.BOT_NICKNAME},{personality[2]}, 你正在浏览qq群,{promt_info_prompt} {activate_prompt_check} {extra_check_info}''' - prompt_check_if_response = f"{prompt_info}\n{prompt_date}\n{chat_talking_prompt}\n{prompt_personality_check}" - + prompt_check_if_response = f"{prompt_info}\n{chat_talking_prompt}\n{prompt_personality_check}" +#{prompt_date}\n return prompt, prompt_check_if_response def _build_initiative_prompt_select(self, group_id, probability_1=0.8, probability_2=0.1): diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index 054526e9..f174f4fd 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -255,10 +255,10 @@ def split_into_sentences_w_remove_punctuation(text: str) -> List[str]: text_no_1 = '' for letter in text: # print(f"当前字符: {letter}") - if letter in ['!', '!', '?', '?']: - # print(f"当前字符: {letter}, 随机数: {random.random()}") - if random.random() < split_strength: - letter = '' + # if letter in ['!', '!', '?', '?']: + # # print(f"当前字符: {letter}, 随机数: {random.random()}") + # if random.random() < split_strength: + # letter = '' if letter in ['。', '…']: # print(f"当前字符: {letter}, 随机数: {random.random()}") if random.random() < 1 - split_strength: diff --git a/src/plugins/schedule/schedule_generator.py b/src/plugins/schedule/schedule_generator.py index fc07a152..e45940c5 100644 --- a/src/plugins/schedule/schedule_generator.py +++ b/src/plugins/schedule/schedule_generator.py @@ -49,7 +49,7 @@ class ScheduleGenerator: async def generate_daily_schedule(self, target_date: datetime.datetime = None, read_only: bool = False) -> Dict[ str, str]: - + return '忘了', None date_str = target_date.strftime("%Y-%m-%d") weekday = target_date.strftime("%A") From b2405a47bec442ac7200b73d28621d2e8fc49966 Mon Sep 17 00:00:00 2001 From: XBC_D2O Date: Tue, 11 Mar 2025 00:29:44 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20=E6=B3=A8=E9=87=8A=E6=8E=89?= =?UTF-8?q?=E6=97=A5=E7=A8=8B=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9B=BE=E7=89=87=E6=8F=8F=E8=BF=B0=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=AF=8D=EF=BC=8C=E4=BC=98=E5=8C=96=E8=A1=A8=E6=83=85?= =?UTF-8?q?=E5=8C=85=E6=8F=8F=E8=BF=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/__init__.py | 4 ++-- src/plugins/chat/cq_code.py | 2 +- src/plugins/chat/emoji_manager.py | 2 +- src/plugins/memory_system/memory.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/chat/__init__.py b/src/plugins/chat/__init__.py index a11b4c2a..8f0e66fa 100644 --- a/src/plugins/chat/__init__.py +++ b/src/plugins/chat/__init__.py @@ -67,8 +67,8 @@ async def start_background_tasks(): # 只启动表情包管理任务 asyncio.create_task(emoji_manager.start_periodic_check(interval_MINS=global_config.EMOJI_CHECK_INTERVAL)) - await bot_schedule.initialize() - bot_schedule.print_schedule() +# await bot_schedule.initialize() +# bot_schedule.print_schedule() @driver.on_startup diff --git a/src/plugins/chat/cq_code.py b/src/plugins/chat/cq_code.py index b13e33e4..8af44e14 100644 --- a/src/plugins/chat/cq_code.py +++ b/src/plugins/chat/cq_code.py @@ -201,7 +201,7 @@ class CQCode: async def get_image_description(self, image_base64: str) -> str: """调用AI接口获取普通图片描述""" try: - prompt = "请用中文描述这张图片的内容。如果有文字,请把文字都描述出来。并尝试猜测这个图片的含义。最多200个字。" + prompt = "请用中文描述这张图片的内容。如果有文字,请把文字都描述出来。并尝试猜测这个图片的含义。最多200个字,可以使用二次元词汇如:猫娘、萝莉。" # description, _ = self._llm.generate_response_for_image_sync(prompt, image_base64) description, _ = await self._llm.generate_response_for_image(prompt, image_base64) return f"[图片:{description}]" diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index d2b9ed64..5da6eda7 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -177,7 +177,7 @@ class EmojiManager: async def _get_emoji_discription(self, image_base64: str) -> str: """获取表情包的标签""" try: - prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容、上面的文字和表情包所表达的情感' + prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容、上面的文字和表情包所表达的情感,可以使用二次元词汇如:猫娘、萝莉' content, _ = await self.vlm.generate_response_for_image(prompt, image_base64) logger.debug(f"输出描述: {content}") diff --git a/src/plugins/memory_system/memory.py b/src/plugins/memory_system/memory.py index 9b325b36..2b6f876b 100644 --- a/src/plugins/memory_system/memory.py +++ b/src/plugins/memory_system/memory.py @@ -759,7 +759,7 @@ start_time = time.time() Database.initialize( host=config.MONGODB_HOST, - port=config.MONGODB_PORT, + port=int(config.MONGODB_PORT), db_name=config.DATABASE_NAME, username=config.MONGODB_USERNAME, password=config.MONGODB_PASSWORD, From 5d1915cab53b2be195b3c8355c3eefeff04496a0 Mon Sep 17 00:00:00 2001 From: XBC_D2O Date: Tue, 11 Mar 2025 22:19:10 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E6=8F=8F=E8=BF=B0=E6=8F=90=E7=A4=BA=E8=AF=8D=EF=BC=8C?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E8=A1=A8=E6=83=85=E5=8C=85=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E8=B0=83=E6=95=B4=E9=A2=9D=E5=A4=96?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/cq_code.py | 2 +- src/plugins/chat/emoji_manager.py | 2 +- src/plugins/chat/prompt_builder.py | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugins/chat/cq_code.py b/src/plugins/chat/cq_code.py index 8af44e14..6016276f 100644 --- a/src/plugins/chat/cq_code.py +++ b/src/plugins/chat/cq_code.py @@ -201,7 +201,7 @@ class CQCode: async def get_image_description(self, image_base64: str) -> str: """调用AI接口获取普通图片描述""" try: - prompt = "请用中文描述这张图片的内容。如果有文字,请把文字都描述出来。并尝试猜测这个图片的含义。最多200个字,可以使用二次元词汇如:猫娘、萝莉。" + prompt = "请用中文描述这张图片的内容。如果有文字,请把文字都描述出来。并尝试猜测这个图片的含义。最多200个字,可以使用二次元词汇。" # description, _ = self._llm.generate_response_for_image_sync(prompt, image_base64) description, _ = await self._llm.generate_response_for_image(prompt, image_base64) return f"[图片:{description}]" diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index 5da6eda7..1e8c7a05 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -177,7 +177,7 @@ class EmojiManager: async def _get_emoji_discription(self, image_base64: str) -> str: """获取表情包的标签""" try: - prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容、上面的文字和表情包所表达的情感,可以使用二次元词汇如:猫娘、萝莉' + prompt = '这是一个表情包,使用中文简洁的描述一下表情包的内容、上面的文字和表情包所表达的情感,可以使用二次元词汇' content, _ = await self.vlm.generate_response_for_image(prompt, image_base64) logger.debug(f"输出描述: {content}") diff --git a/src/plugins/chat/prompt_builder.py b/src/plugins/chat/prompt_builder.py index e787a943..8af09e5e 100644 --- a/src/plugins/chat/prompt_builder.py +++ b/src/plugins/chat/prompt_builder.py @@ -156,7 +156,7 @@ class PromptBuilder: # prompt_ger += '你喜欢用文言文' # 额外信息要求 - extra_info = '''尤其注意在没明确提到时不要过多提及自身的背景, 不要直接回复别人发的表情包,记住不要输出多余内容(包括前后缀,冒号和引号,括号,表情等),只需要输出回复内容就好,不要输出其他任何内容''' + extra_info = '''尤其注意在没明确提到时不要过多提及自身的背景, 回答平淡一点,不要直接回复别人发的表情包,记住不要输出多余内容(包括前后缀,冒号和引号,括号,表情等),只需要输出回复内容就好,不要输出其他任何内容''' # 合并prompt prompt = "" @@ -185,9 +185,9 @@ class PromptBuilder: def _build_initiative_prompt_select(self, group_id, probability_1=0.8, probability_2=0.1): current_date = time.strftime("%Y-%m-%d", time.localtime()) current_time = time.strftime("%H:%M:%S", time.localtime()) - bot_schedule_now_time, bot_schedule_now_activity = bot_schedule.get_current_task() - prompt_date = f'''今天是{current_date},现在是{current_time},你今天的日程是:\n{bot_schedule.today_schedule}\n你现在正在{bot_schedule_now_activity}\n''' - + #bot_schedule_now_time, bot_schedule_now_activity = bot_schedule.get_current_task() + prompt_date = f'''今天是{current_date},现在是{current_time}\n''' +#,你今天的日程是:\n{bot_schedule.today_schedule}\n你现在正在{bot_schedule_now_activity} chat_talking_prompt = '' if group_id: chat_talking_prompt = get_recent_group_detailed_plain_text(self.db, group_id,