Woord vooraf: Dit artikel is oorspronkelijk geschreven voor de Acorn Electron. De software is echter zodandig geschreven dat deze ook makkelijk te assembleren is voor de System 5. In de nabije toekomst (wanneer is dat eigenlijk?) zal ik deze tekst verder aanpassen voor specifiek onze System 5 computers.
Inleiding
De Acorn Electron, een klassieke 8-bit microcomputer uitgebracht in het begin van de jaren 1980, wordt doorgaans niet geassocieerd met de moderne wereld van AI en natuurlijke taalverwerking. Echter, met een beetje vindingrijkheid en creativiteit is het mogelijk om het verleden en heden samen te brengen in een boeiende mix van technologie. In dit artikel zullen we het fascinerende traject verkennen van het creëren van een ChatGPT-client op een Acorn Electron, waarbij nostalgie wordt gecombineerd met geavanceerde AI-mogelijkheden.
De Acorn Electron: Een Terugblik op het Verleden
In 1983 uitgebracht, was de Acorn Electron een betaalbaarder alternatief voor de Acorn BBC Microcomputer. Met een 6502 CPU en 32KB RAM was het een bescheiden machine naar de normen van vandaag. Echter, zijn eenvoudige ontwerp en toegewijde aanhang hebben het in leven gehouden in de harten van retrocomputerliefhebbers.
AI naar de Acorn Electron brengen
Om ChatGPT naar de Acorn Electron te brengen, moesten verschillende uitdagingen worden aangepakt. Het eerste probleem was het gebrek aan rekenkracht in vergelijking met moderne systemen. De oorspronkelijke Electron zou nooit een diepgaand leermiddel zoals GPT-3.5 aankunnen, dat aanzienlijke rekenkracht vereist. Desalniettemin kunnen slimme oplossingen helpen om deze kloof te overbruggen.
Een benadering was om een modernere computer als tussenstation te gebruiken. De Acorn Electron zou kunnen communiceren met het moderne systeem, dat het zware werk van de AI-verwerking zou afhandelen. Hierdoor zou de Electron kunnen profiteren van de voordelen van ChatGPT zonder zijn beperkte hardware te belasten.
Hier is een stapsgewijze handleiding over hoe je een ChatGPT-client op een Acorn Electron kunt opzetten:
Conclusie
ChatGPT naar de Acorn Electron brengen is een nostalgisch maar innovatief project dat de charme van retrocomputing combineert met de kracht van moderne AI. Hoewel de Electron nooit de hedendaagse computers zal evenaren qua rekenkracht, ligt zijn blijvende aantrekkingskracht in zijn eenvoud en de creativiteit van zijn gebruikers.
Door het verleden en het heden met elkaar te verbinden, illustreert dit project hoe technologie generatiekloven kan overbruggen en nieuwe ervaringen kan bieden aan enthousiastelingen en nieuwsgierige geesten. Of je nu een fan bent van vintage computing of gewoon op zoek bent naar een uniek doe-het-zelfproject, het creëren van een ChatGPT-client op een Acorn Electron is een lonende onderneming die de blijvende magie van retrotechnologie laat zien.
Het zal de lezer vast wel opvallen dat bovenstaande tekst voor de volle 100% gegenereerd is door de ChatGPT bot. Op zich is dit natuurlijk een werkbare aanpak, maar zo kan je ook Unix of Linux op je Electron "draaien". Sterker nog, op mijn Atom "draai" ik Linux. Ik heb er namelijk een Pi Zero in zitten en ik gebruik de Atom puur als terminal. Maar omdat het allemaal in één verpakking zit, lijkt het alsof er Linux op de Atom draait.
ChatGPT op de Electron kan veel meer door de Electron zelf afgehandeld worden. We hebben de benodigde hardware al: een 6502 processor die de ChatGPT API kan aanroepen en het antwoord kan verwerken. Voor de communicatie hebben we al een WiFi kaart. Meer heb je niet nodig, behalve nog wat werk van een slimme programmeur.
Ik ben op het idee gekomen voor deze client door een berichtje waarbij iemand een dergelijke client geschreven heeft voor een Mac Classic, werkend onder Mac OS 7 / 8 / 9. Het enige dat hij daarbij gebruikt is een proxy-server omdat deze computers geen HTTPS spreken. Welnu, ik heb eigenlijk dezelfde uitdaging bij de Electron als ik ChatGPT wil benaderen. Dat probleem had ik al opgelost toen ik disk images op StarDot of GitHub wilde mounten in WiDFS (DFS over WiFi). Ik heb mijn proxy alleen maar aan hoeven te passen om ook HTTP POST verzoeken af te handelen. Nadat ik dat gedaan had lag de weg vrij om een client te schrijven voor onze fijne 8-bitters.
Als de software gestart is dan krijg je een prompt te zien waarop je je vraag kunt stellen. Na enige denk-tijd komt ChatGPT dan met een antwoord. Deze denktijd is overigens vrij lang; de WiFi ROM loopt daarbij tegen een time-out aan en mist het antwoord. Daarom is een update van de WiFi ROM (voor zowel Electron als BBC) noodzakelijk. Het antwoord van ChatGPT is in JSON (JavaScript Object Notatie) formaat. Gelukkig is het voor de Electron, zelfs in assembler, vrij makkelijk om daar de gewenste informatie uit te halen. Ik heb geen complete JSON parser geschreven, ik zoek gewoon naar het begin van het antwoord en van daar uit begint het programma de ontvangen tekst naar het werkgeheugen van de computer te kopiëren. Eenmaal gekopieerd wordt de tekst nog even aangepast op de schermbreedte zodat deze makkelijk leesbaar is.
Als je zelf aan de slag wil gaan met deze software dan staat de broncode op https://github.com/AtomicRoland/ChatGPT-8bit. Hier staat zowel de client als het PHP script voor de proxyserver. De proxyserver draai je bij voorkeur op een lokaal aanwezige computer omdat de communicatie tussen de Electron en de proxy niet versleuteld is. Als je de proxy op internet hebt staan gaat dus een deel van je communicatie onversleuteld met het risico dat jouw ChatGPT API-KEY gestolen wordt.
Over deze API-KEY gesproken, deze heb je nodig om via de API te chatten. Deze koop je - ja helaas, dit kost geld - vanuit je OpenAI account. Het is een Amerikaans bedrijf, dus je hebt een credit card nodig. Bij een nieuw account krijg je voor $5.00 credits die drie maanden geldig zijn. Als je credits koopt dan zijn deze één jaar geldig. Ik heb voor $5.00 credits gekocht en daar kan je heel wat uren mee kletsen.
Het programma is geschreven in assembler; ik gebruik hier over het algemeen beebasm voor.
Als je een API-KEY hebt dan plak je deze in regel 15 van het bestand httpheaders.asm
:
.authorization EQUS "Authorization: Bearer YOUR-API-KEY-SHOULD-GO-HERE",&0D,&0A
Vervang dus het stukje tekst YOUR-API-KEY-SHOULD-GO-HERE door jouw eigen sleutel. Daarna kan je het programma assembleren met een van de volgende commando's:
Standaard Atom versie:
beebasm -D __ATOM__=1 -D __FPGATOM__=0 -D __ELECTRON__=0 -i chatgpt.asm
FPGAtom (a.k.a. Atom2k18) versie:
beebasm -D __ATOM__=1 -D __FPGATOM__=1 -D __ELECTRON__=0 -i chatgpt.asm
Electron/BBC versie:
beebasm -D __ATOM__=0 -D __FPGATOM__=0 -D __ELECTRON__=1 -i chatgpt.asm
Als je je eigen proxyserver gebruikt dan moet je deze even invullen op regel 13, achter de HOST: header.
Resumerend: