diff --git a/README.md b/README.md index e3ce513b6..d8d2e3491 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,10 @@ **麦麦qq机器人的源代码仓库** -基于napcat、nonebot和mongodb的专注于群聊天的qqbot +基于llm、napcat、nonebot和mongodb的专注于群聊天的qqbot -> ⚠️ **警告**:代码可能随时更改,目前版本不一定是稳定版本,并请自行了解qqbot的风险 +> ⚠️ **警告**:代码可能随时更改,目前版本不一定是稳定版本 +⚠️ **警告**:请自行了解qqbot的风险,麦麦有时候一天被腾讯肘七八次 > ⚠️ **警告**:由于麦麦一直在迭代,所以可能存在一些bug,请自行测试,包括胡言乱语( ## 🚀 快速开始 @@ -33,20 +34,21 @@ - 麦麦bot会自动连接默认的mongodb,可配置 3. **Napcat配置** - - 安装并允许Napcat - - 设置ws反向代理:ws://localhost:8080/onebot/v11/ws + - 安装并运行Napcat + - 设置ws反向代理:ws://localhost:8080/onebot/v11/ws,启动 4. **配置文件设置** - - 把env.example改成.env,并填上你的apikey(硅基流动) + - 把env.example改成.env,并填上你的apikey(硅基流动或deepseekapi) - 把bot_config_toml改名为bot_config.toml,并填写相关内容 5. **运行麦麦** - 从 runniuniu.bat 启动 + 从 run_maimai.bat 启动 + run_thingking.bat 可以启动可视化的推理界面 ## 🎯 功能介绍 ### 💬 聊天功能 -- 支持关键词检索主动发言:对消息的话题topic进行识别,如果检测到麦麦存储过的话题就会主动进行发言,目前有bug +- 支持关键词检索主动发言:对消息的话题topic进行识别,如果检测到麦麦存储过的话题就会主动进行发言,目前有bug,所以现在只会检测主题,不会进行存储 - 支持bot名字呼唤发言:检测到"麦麦"会主动发言,可配置 - 使用硅基流动的api进行回复生成,可随机使用R1,V3,R1-distill等模型,未来将加入官网api支持 - 动态的prompt构建器,更拟人 diff --git a/runniuniu - db.bat b/run_db.bat similarity index 100% rename from runniuniu - db.bat rename to run_db.bat diff --git a/runniuniu.bat b/run_maimai.bat similarity index 100% rename from runniuniu.bat rename to run_maimai.bat diff --git a/_thingking.bat b/run_thingking.bat similarity index 100% rename from _thingking.bat rename to run_thingking.bat diff --git a/src/plugins/chat/prompt_builder.py b/src/plugins/chat/prompt_builder.py index a96d93393..9d8cf4a62 100644 --- a/src/plugins/chat/prompt_builder.py +++ b/src/plugins/chat/prompt_builder.py @@ -53,7 +53,7 @@ class PromptBuilder: 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''' - #知识构建 + #知识构建(暂时禁用,因为知识库太少了) prompt_info = '' promt_info_prompt = '' prompt_info = self.get_prompt_info(message_txt) @@ -98,7 +98,7 @@ class PromptBuilder: 现在请你给出日常且口语化的回复,请表现你自己的见解,不要一昧迎合,尽量简短一些。{is_bot_prompt} 请你表达自己的见解和观点。可以有个性。''' - #中文高手 + #中文高手(新加的好玩功能) prompt_ger = '' if random.random() < 0.04: prompt_ger += '你喜欢用倒装句' diff --git a/src/plugins/chat/test.py b/src/plugins/chat/test.py deleted file mode 100644 index 656136c70..000000000 --- a/src/plugins/chat/test.py +++ /dev/null @@ -1,75 +0,0 @@ -import random - -text = "我今天很开心 但是也很伤心 但是也很伤心," -len_text = len(text) -print(f"len_text: {len_text}") -if len_text < 5: - if random.random() < 0.01: - print(f"直接按字符分割") - else: - print(f"直接按字符分割") -if len_text < 15: - split_strength = 0.3 -elif len_text < 35: - split_strength = 0.7 -else: - split_strength = 0.9 -#先移除换行符 -print(f"split_strength: {split_strength}") - -print(f"处理前的文本: {text}") - -# 统一将英文逗号转换为中文逗号 -text = text.replace(',', ',') -text = text.replace('\n', ' ') - -print(f"处理前的文本: {text}") - -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() < 1 - split_strength: - letter = '' - text_no_1 += letter - -# 对每个逗号和空格单独判断是否分割 -sentences = [text_no_1] -new_sentences = [] -for sentence in sentences: - parts = sentence.split(',') - current_sentence = parts[0] - for part in parts[1:]: - if random.random() < split_strength: - new_sentences.append(current_sentence.strip()) - current_sentence = part - else: - current_sentence += ',' + part - # 处理空格分割 - space_parts = current_sentence.split(' ') - current_sentence = space_parts[0] - for part in space_parts[1:]: - if random.random() < split_strength: - new_sentences.append(current_sentence.strip()) - current_sentence = part - else: - current_sentence += ' ' + part - new_sentences.append(current_sentence.strip()) -sentences = [s for s in new_sentences if s] # 移除空字符串 - -print(f"分割后的句子: {sentences}") -sentences_done = [] -for sentence in sentences: - sentence = sentence.rstrip(',,') - if random.random() < split_strength*0.5: - sentence = sentence.replace(',', '').replace(',', '') - elif random.random() < split_strength: - sentence = sentence.replace(',', ' ').replace(',', ' ') - sentences_done.append(sentence) - -print(f"处理后的句子: {sentences_done}")