Un chatbot Telegram GPT-2 relativement adapté au chat. N'hésitez pas à me faire des PR et je vérifierai votre code ! Le bot n'est pas toujours précis à 100 % (c'est pourquoi j'ai codé dans une fonction /retry.)
Étant donné que le bot consomme beaucoup de mémoire, je l'ai programmé dans un mode de type round-robin. Chaque entrée réinitialisera une minuterie sur votre identifiant de compte, une fois la minuterie écoulée, le bot sera gratuit pour les autres utilisateurs. Vous serez averti lorsque le minuteur expirera et les autres utilisateurs pourront voir combien de temps il reste et si le bot est utilisé.
Brèves instructions d'installation sur Ubuntu 20/WSL.
Je recommande fortement de regarder plutôt le jupyter notebook/ipynb sur la collaboration Google.
Installez python3.7 (je pense que 3.6 pourrait aussi fonctionner, mais pas 3.8) :
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7
Installez pip sur python 3.7 :
wget https://bootstrap.pypa.io/get-pip.py
python3.7 get-pip.py
Configuration requise pour l'installation dans le dossier du bot après le clonage du référentiel :
python3.7 -m pip install -r requirements.txt
Remarque : en réalité, vous avez besoin de 16 Go de RAM ou d’une carte vidéo de 8 Go. Sinon, vous attendrez éternellement. Vous pouvez utiliser les fonctions GPU avec au moins une carte vidéo de 8 Go prenant en charge cuda takelit 10.0 et cudnn pour cuda toolkit 10. Cette installation fonctionne également sous Windows avec python 3.7 et nvidia, vous devez exécuter l'invite de commande en tant qu'administrateur exécutant python 3.7 sous Windows.
Téléchargez le modèle :
python3.7 download_model.py 1558M
Définissez la clé API de votre bot de télégramme dans src/GPT2-Learning.py
Replace "BOTKEY" with telegram bot token i.e. "1827396499:AAHifc06oS31oQ9L3TuCiZxD9EIfKPi0oWQ"
Exécutez le bot :
Si vous utilisez la commande python3 :
./start.sh
Si vous utilisez la commande python3.7 :
python3.7 src/GPT2-Learning.py
Vous pouvez modifier start.sh pour qu'il corresponde à votre commande python comme vous le souhaitez.
start - Basic start command.
help - Show quick help command.
chatbot - Chatbot mode, me+you string edit and open-ended questions.
finish - Default finish sentence command counting words as output length.
learnon - Turn on sentence compilation with Me+you string for conversation.
learnoff - Turn off the sentence compilation.
learnreset - Reset the learned conversation.
retry - Retry the current computation.
Voici un exemple d'apprentissage du mode chatbot avec la dernière base de données gpt-2 et top_p défini sur 0,83 :
Me: Hello! How are you today? Are you feeling alright? I hope you are doing well and not getting into any trouble.
Bot: Yeah, I'm fine. Do you want to make something to eat?
Me: I already made some food, but thanks! I had some jalapeno poppers. I made a ton of them last night after I sold a lawnmower to some folks I got for free earlier in the day. So what are your plans for the day?
Bot: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit.
Me: Just a typical day of kicking back and relaxing huh? Are you gonna watch cartoons or any movies in particular?
Bot: If it's not sports I'll probably just watch something on the TV.
Me: Sounds alright. I coded on my chatbot project most of the morning. Was waiting on someone to come buy a projector but they haven't shown up yet unfortunately. What do you do for work if you don't mind me asking?
Bot: I'm a web developer and engineer. It's fun.
Me: Cool! I'm also a coder and an ethical hacker. I mostly know how to code in Python but I've been unemployed for some time now after my spine injury. I wish I could have joined the military when I was younger. Were you ever in the military?
Bot: No. I'm not really too proud of my military career. It ended up taking a huge toll on my back.
Me: What happened to your back if you don't mind me asking?
Bot: First of all, it's better than before.
Me: Well that's good to hear. Did you injure your back in the military or doing something else?
Bot: Nope. It's an old injury.
Me: Ah I see- Well I'll talk to you later. Sorry about your back! I hope we can catch up tomorrow!
Bot: Yes, of course. Thanks again for chatting!
INFO:tensorflow:Restoring parameters from models/1558M/model.ckpt
2020-05-10 14:19:43,794 - tensorflow - INFO - Restoring parameters from models/1558M/model.ckpt
==========
Before splitlines: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit. You: I'll try to keep my spirits up. Just keep in mind that today's the 10th anniversary of the citywide strike
==========
==========
Mode: True
Learn: True
Length: 44
==========
Before regex: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit. You: I'll try to keep my spirits up. Just keep in mind that today's the 10th anniversary of the citywide strike
==========
Output: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit.
==========
Raw_text or Original: You: Hello! How are you today? Are you feeling alright? I hope you are doing well and not getting into any trouble. Me: Yeah, I'm fine. Do you want to make something to eat? You: I already made some food, but thanks! I had some jalapeno poppers. I made a ton of them last night after I sold a lawnmower to some folks I got for free earlier in the day. So what are your plans for the day? Me:
==========
Learning text or Next: You: Hello! How are you today? Are you feeling alright? I hope you are doing well and not getting into any trouble. Me: Yeah, I'm fine. Do you want to make something to eat? You: I already made some food, but thanks! I had some jalapeno poppers. I made a ton of them last night after I sold a lawnmower to some folks I got for free earlier in the day. So what are your plans for the day? Me: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit.
==========
top_p out: 0.8338636363636364
==========
top_p in: 0.83
==========
Pour une liste des scores grammaticaux, veuillez consulter /SCORES.MD.
Conseil:
0.77 top_p peut sembler émotif, confus et imitateur.
0.66 top_p peut sembler réfléchi et littéral, mais peut contenir des erreurs ascii et de coupure.