The problem of spam in large chats is common. Spam makes it difficult to communicate between people, search for the right information, which may eventually lead to people starting to leave the chat, because it will be impossible to be in it because of the abundance of spam.
By getting rid of spam in the chat, we will be able to make communication between people more comfortable, because it is unpleasant to correspond in the chat or search for information and often stumble upon fraudulent information about discounts of 90%, etc.
In general, the goal of this project is to reduce the amount of spam to a minimum, free administrators from routine viewing of the chat for spam, round-the-clock monitoring of the chat by a bot, timely decision-making on blocking the user and deleting spam.
Our bot utilizes two main components to tackle spam: a primary AI model and a backup system.
At its core, the bot is powered by an AI model based on GPT-3.5-turbo. This model is adept at understanding and identifying various forms of spam, ensuring effective moderation.
In certain situations, such as when there are issues with the OpenAI API (like response delays or downtime), our bot switches to a secondary mechanism. This backup system operates on heuristic rules, ensuring that spam detection remains consistent even when the primary AI model is not available.
This dual-system approach is designed to provide a seamless and reliable spam detection service. By utilizing the advanced capabilities of GPT-3.5-turbo, we ensure sophisticated spam filtering. Meanwhile, the heuristic rule-based backup maintains service stability, so our users always have a dependable line of defense against spam.
Our goal is to maintain a high-quality user experience, uninterrupted by spam and technical hiccups. This setup allows us to start delivering value immediately while continuously adapting and improving our service.
- DVC
Install the required Python libraries and download the data:
pip install -r requirements.txt
dvc pull
- Specify the environment variables in
.env
file:API_KEY_SPAM_KILLER
: Bot TokenTARGET_GROUP_ID
: Target group's IDTARGET_SPAM_ID
: Target spam group's IDTARGET_NOT_SPAM_ID
: Target not spam group's IDADMIN_IDS
: User IDs of adminsWHITELIST_ADMINS
: Whitelist of admins
- Start the bot by running bash-script:
bash run_spamkiller.sh
The following structure is used in this project:
-
docs/
: contains project documentation -
data/
: not available on github (dvc pull to get access) -
logs/
: contains project logs,logs_from_bot.log
- the main log file in which all the actions of the bot are recorded (not available in the public version);temp_list_with_new_user.json
is a temporary file to which the user is added until he sends his first message to the chat
-
static/
: contains script to launch the Botrun_bot.py
- the main file in which the bot is launched
-
scripts/
: contains scripts for working with data,data.py
- performs data cleaningmake_metrics.py
- calculates the quality metrics of the modelnot_spam_id.py
- generate a CSV file with the not spam IDspredict_spam_scores.py
- makes predictions from the modelwatching.py
- in development
-
src/
: contains the source code of the serviceapp/
:bot.py
: source code for the Botloader.py
: source code for initializating models, Bot, Dispatcher
data/
:data.py
- source code for data cleaning
handlers/
:commands.py
: handlers for adding and removing adminmessages.py
: handler for processing new messages in chats
metrics/
:metrics.py
- source code for calculating the quality metrics of the model
models/
gpt_classifier.py
: source code for the GptSpamClassifier model used in productiongpt_classifier_validation.py
: source code for the GptSpamClassifierValidation model for validationrules_base_model_prod.py
- source code for the RuleBasedClassifier model used in productionrules_base_model_validation.py
- source code for the RuleBasedClassifier model for validation
utils/
:add_new_user_id.py
- source code for adding a new user to the temporary filecommands.py
- source code for bot commandsmessage_processing.py
- source code for processing new messagesspam_detection.py
- source code for spam detection process