rietenpetardat (Chatbot)

AKA Ortobebop

rietenpetardat este un chatbot creat de Edward pentru serverul de Discord OKPR. Scopul acestuia este să vorbească cu utilizatorii server-ului de serverului într-un mod asemănător cu un membru obișnuit de pe server. În timp, a primit actualizări precum comenzi noi și schimbarea arhitecturii de bază. Acesta este dedicat comunității OKPR, ca atare nu este permisă adăugarea bot-ului pe alte servere.

Dezvoltare

Versiunea inițială

Prima versiune a fost o implementare a unui lanț Markov dintr-un chatbot de IRC a cărui cod sursă a fost publicat pe GitHub. Acest cod a fost modificat încât la pornire să citească mesaje, ca date de antrenament, dintr-un fișier text și să răspundă mesajelor care conțineau numele bot-ului conform datelor de intrare (istoricul mesajelor din canalul #bucuresti-general de pe OKPR V2) și parametrilor dați lanțului Markov. Din cauza naturii haotice a chat-ului și a slăbiciunilor lanțului Markov, algoritmul nu putea să răspundă coerent la mesaje sau să țină o conversație, iar în mare parte din timp, trimitea propoziții complet aleatori. Cu toate acestea, a oferit o mulțime de divertisment pentru comunitate, în special în situațiile în care răspunsul bot-ului se potrivea întâmplător cu întrebarea care i-a fost adresată.

Conform licenței GPL3 sub care se supune codul chatbot-ului de IRC original, codul sursă modificat pentru rietenpetardat se află aici: https://github.com/Edward205/markov-discord-bot

Primele teste ale acestei versiuni au fost efectuate începând cu 29 august 2023 și a fost lansată pe serverul de Discord OKPR următoarea zi.

Adăugarea comenzii de copypasta

Comanda de copypasta a fost adăugată printr-un modul separat care se baza pe un lanț Markov simplu care a fost antrenat pe mesajele din canalul #bucuresti-general de pe OKPR V2 care depășeau o anumită limită de caractere. Acesta folosea doar ultimele două cuvinte ca și context pentru lanțul Markov, rezultând, în cele mai multe cazuri, propoziții fără sens.

Codul pentru această implementare a lanțului Markov nu se află sub nicio licență, așa că modificările specifice bot-ului nu sunt publice. Totuși, codul original este disponibil aici: https://github.com/ParkerBeck/Markov-Text-Generator

Această comandă a fost adăugată pe 6 noiembrie 2022.

Schimbarea algoritmului

Algoritmul a fost schimbat la GPT-3 de la OpenAI pe 13 martie 2023. Acesta putea ține conversații coerente. Algoritmul vechi a fost desființat în favoarea acestuia. De asemenea, în această versiune a fost eliminată comanda de copypasta. Canalul #bucuresti-general devenea plin de conversații cu rietenpetardat deoarece conversațiile erau foarte coerente uneori.

Adăugarea comenzii de ChatGPT

Comanda punea la dispoziție o interfață spre modelul ChatGPT. Acesta avea programat în memorie să spună informații greșite și să depășească limitele etice sau de siguranță impuse de OpenAI. Cu toate acestea, utilizatorii se confruntau des cu prejudecăți politice și cenzuri din partea modelului ChatGPT. Canalul #bucuresti-general devenise plin de generări cu această comandă, așa că a fost interzisă folosirea comenzii acolo.

Această comandă a fost adăugată pe 24 martie 2023.

Personalitatea lui Klaus Iohannis

Pe 15 aprilie 2023, personalitatea chatbot-ului a fost schimbată cu cea a lui Iohannis. Aceasta a fost o simplă schimbare a textului de început din solicitările cu modelul GPT-3.

Oprirea funcționării

Începând cu 24 aprilie 2023 funcțiile de chat prin GPT-3 și comanda ChatGPT nu mai funcționează deoarece metoda de plată a lui Edward a început să respingă plățile de la OpenAI, făcând API-ul inaccesibil.

Detalii tehnice și cercetări

Chatboții sunt programe complexe, necesitând un grad ridicat de analizare și procesare a datelor text. O abordare care ne-ar elimina dependența de un serviciu extern și ar putea genera conversații coerente, ar fi să antrenăm un LLM doar cu datele chat-ului de pe OKPR. Acesta ar putea fi antrenat de la zero sau prin fine-tuning.

Tot codul legat de generare, cu excepția GPT-3 și ChatGPT, a fost scris în C++ astfel încât să fie cât mai rapid și legat la discord.js prin interfața stdin și stdout.