summaryrefslogtreecommitdiff
path: root/ATRI
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI')
-rw-r--r--ATRI/config.py13
-rw-r--r--ATRI/plugins/atri_chat_bot.py55
-rw-r--r--ATRI/plugins/chat/__init__.py6
-rw-r--r--ATRI/plugins/chatbot/__init__.py33
4 files changed, 1 insertions, 106 deletions
diff --git a/ATRI/config.py b/ATRI/config.py
index 5036e21..d1a9bfd 100644
--- a/ATRI/config.py
+++ b/ATRI/config.py
@@ -36,19 +36,6 @@ class SauceNAO:
key: str = config.get("key", "")
-class ChatterBot:
- config: dict = config["ChatterBot"]
-
- mongo_database_uri: str = config.get("mongo_database_uri", None)
- maximum_similarity_threshold: float = float(
- config.get("maximum_similarity_threshold", 0.05)
- )
- default_response: set = set(config.get("default_response", ["咱听不明白(o_ _)ノ"]))
- group_random_response_rate: float = float(
- config.get("group_random_response_rate", 0.1)
- )
-
-
RUNTIME_CONFIG = {
"host": BotSelfConfig.host,
"port": BotSelfConfig.port,
diff --git a/ATRI/plugins/atri_chat_bot.py b/ATRI/plugins/atri_chat_bot.py
deleted file mode 100644
index 3226b2f..0000000
--- a/ATRI/plugins/atri_chat_bot.py
+++ /dev/null
@@ -1,55 +0,0 @@
-from ATRI.config import ChatterBot
-from chatterbot import ChatBot
-from chatterbot.trainers import ListTrainer
-from chatterbot.trainers import ChatterBotCorpusTrainer
-from ATRI.log import logger as log
-
-__doc__ = """
-可以不断学习的聊天(胡言乱语/复读)机器人
-https://chatterbot.readthedocs.io/
-"""
-
-MONGO_ADAPTER = "chatterbot.storage.MongoDatabaseAdapter"
-SQLITE_ADAPTER = "chatterbot.storage.SQLStorageAdapter"
-
-
-class ATRIChatBot:
- bot = ChatBot(
- "ATRI",
- storage_adapter=MONGO_ADAPTER
- if ChatterBot.mongo_database_uri
- else SQLITE_ADAPTER,
- logic_adapters=[
- {
- "import_path": "chatterbot.logic.BestMatch",
- "default_response": ChatterBot.default_response,
- "maximum_similarity_threshold": ChatterBot.maximum_similarity_threshold,
- }
- ],
- database_uri=ChatterBot.mongo_database_uri,
- read_only=True, # 只能通过 learn 函数学习
- )
- list_trainer = ListTrainer(bot)
- session_text_dict = dict()
-
- @staticmethod
- def learn_from_corpus():
- trainer = ChatterBotCorpusTrainer(ATRIChatBot.bot)
- # 从 corpus 的中文语料库学习,yaml 包太新的话需要把 corpus.py 的 yaml.load() 改成 yaml.full_load()
- # 可以尝试用 https://github.com/hbwzhsh/chinese_chatbot_corpus 里面的语料进行训练
- trainer.train("chatterbot.corpus.chinese")
-
- @staticmethod
- def learn(session_id: str, text: str):
- # 查找上一条消息并训练模型
- last_text = ATRIChatBot.session_text_dict.get(session_id)
- if last_text:
- ATRIChatBot.list_trainer.train([last_text, text]) # 问(可多个) # 答
- # 更新最后一条消息
- ATRIChatBot.session_text_dict[session_id] = text
-
- @staticmethod
- async def get_response(text: str) -> str:
- response = ATRIChatBot.bot.get_response(text)
- log.info(f"人工智障回复:{text} -> {response.text}")
- return response.text
diff --git a/ATRI/plugins/chat/__init__.py b/ATRI/plugins/chat/__init__.py
index 7436645..723ee25 100644
--- a/ATRI/plugins/chat/__init__.py
+++ b/ATRI/plugins/chat/__init__.py
@@ -7,7 +7,6 @@ from ATRI.utils import CoolqCodeChecker
from ATRI.utils.limit import FreqLimiter
from ATRI.utils.apscheduler import scheduler
from .data_source import Chat
-from ATRI.plugins.atri_chat_bot import ATRIChatBot
_chat_flmt = FreqLimiter(3)
_chat_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~", "我开始为你以后的伴侣担心了..."])
@@ -27,10 +26,7 @@ async def _chat(bot: Bot, event: MessageEvent):
repo = await Chat().deal(msg, user_id)
_chat_flmt.start_cd(user_id)
try:
- if repo:
- await chat.finish(repo)
- else: # 实在没话说就尝试 chatterbot
- await chat.finish(await ATRIChatBot.get_response(msg))
+ await chat.finish(repo)
except Exception:
return
diff --git a/ATRI/plugins/chatbot/__init__.py b/ATRI/plugins/chatbot/__init__.py
deleted file mode 100644
index e9061cc..0000000
--- a/ATRI/plugins/chatbot/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import random
-from ATRI.config import ChatterBot
-from ATRI.plugins.atri_chat_bot import ATRIChatBot
-from nonebot import on_message
-from nonebot import on_command
-from nonebot.adapters.cqhttp import (
- Bot,
- GroupMessageEvent,
- MessageEvent,
-)
-from nonebot.permission import SUPERUSER
-
-chatbot = on_message(priority=114514)
-
-
-async def _learn_from_group(bot: Bot, event: MessageEvent):
- text = event.get_plaintext().strip()
- if not text:
- return
- if isinstance(event, GroupMessageEvent): # 从群友那学习说话
- ATRIChatBot.learn(event.get_session_id(), text)
- if random.random() <= ChatterBot.group_random_response_rate: # 随机回话
- await chatbot.finish(await ATRIChatBot.get_response(text))
-
-
-chatbot_learn = on_command("/learn_corpus", permission=SUPERUSER)
-
-
-@chatbot_learn.handle()
-async def _learn_from_corpus(bot: Bot, event: MessageEvent):
- ATRIChatBot.learn_from_corpus()
- await chatbot.finish("咱从corpus那学习完了!")