Ein GPT-2-Telegram-Chatbot, der relativ auf das Chatten abgestimmt ist. Machen Sie mir gerne PRs und ich schaue mir Ihren Code an! Der Bot ist nicht immer 100 % genau (weshalb ich eine /retry-Funktion codiert habe).
Da der Bot so viel Speicher verbraucht, habe ich ihn in einem Round-Robin-Modus programmiert. Bei jeder Eingabe wird ein Timer für Ihre Konto-ID zurückgesetzt. Sobald der Timer abgelaufen ist, steht der Bot anderen Benutzern zur Nutzung frei. Sie werden benachrichtigt, wenn der Timer abgelaufen ist, und andere Benutzer können sehen, wie viel Zeit noch übrig ist und ob der Bot verwendet wird.
Kurze Installationsanleitung für Ubuntu 20/WSL.
Ich empfehle dringend, stattdessen einen Blick auf Jupyter Notebook/IPynb auf Google Collab zu werfen.
Installieren Sie Python3.7 (ich denke, 3.6 könnte auch funktionieren, aber nicht 3.8):
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7
Installieren Sie pip auf Python 3.7:
wget https://bootstrap.pypa.io/get-pip.py
python3.7 get-pip.py
Installieren Sie die Anforderungen im Bot-Ordner nach dem Klonen des Repositorys:
python3.7 -m pip install -r requirements.txt
Hinweis: Sie benötigen realistischerweise 16 GB RAM oder eine 8 GB Grafikkarte. Sonst wirst du ewig warten. Sie können GPU-Funktionen mit mindestens einer 8-GB-Grafikkarte verwenden, die Cuda Takelit 10.0 und Cudnn für Cuda Toolkit 10 unterstützt. Diese Installation funktioniert auch unter Windows mit Python 3.7 und NVIDIA. Sie müssen die Eingabeaufforderung als Administrator ausführen und Python 3.7 unter Windows ausführen.
Laden Sie das Modell herunter:
python3.7 download_model.py 1558M
Legen Sie Ihren Telegram-Bot-API-Schlüssel in src/GPT2-Learning.py fest
Replace "BOTKEY" with telegram bot token i.e. "1827396499:AAHifc06oS31oQ9L3TuCiZxD9EIfKPi0oWQ"
Führen Sie den Bot aus:
Bei Verwendung des Python3-Befehls:
./start.sh
Bei Verwendung des Python3.7-Befehls:
python3.7 src/GPT2-Learning.py
Sie können start.sh nach Ihren Wünschen so bearbeiten, dass es Ihrem Python-Befehl entspricht.
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.
Hier ist ein Beispiel im Lern-Chatbot-Modus mit der neuesten gpt-2-Datenbank und top_p auf 0,83 eingestellt:
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
==========
Eine Liste der Grammatikbewertungen finden Sie unter /SCORES.MD.
Tipp:
0,77 top_p kann emotional, verwirrt und nachahmend klingen.
0,66 top_p kann durchdacht und wörtlich klingen, kann aber ASCII- und Cut-off-Fehler enthalten.