ChatGPT, der schlechteste Sommerpraktikant aller Zeiten
Als ich früher in der Pharmaindustrie arbeitete, hatte ich die Möglichkeit, Sommerpraktikanten einzustellen. Das ist lange her, lange genug, dass die frischgebackenen College-Studenten, die sich für den Job beworben haben, jetzt wahrscheinlich das Rentenalter erreichen. So wie ich es verstand, bestand die Idee darin, jemanden zu finden, der mir bei meinem Projekt hilft, das damals darin bestand, ein verteiltes Datenerfassungssystem mit einer großen Anzahl von Knoten aufzubauen, auf denen alle von mir geschriebene benutzerdefinierte Software ausgeführt wurde und die an eine Zentrale berichtete Server, auf dem mehr von meinem Code ausgeführt wird. Es war mehr Arbeit, als ich alleine bewältigen konnte, also dachte die Geschäftsleitung, sie würden Gnade mit mir haben und mir etwas Hilfe besorgen.
Die Erfahrung verlief nicht ganz so, wie ich es erwartet hatte. Die Praktikanten waren beide tolle Kinder, sehr schlau und ich habe viel von ihnen gelernt. Aber zwei Monate sind ein sehr enger Zeitrahmen, und es hat die meiste Zeit in Anspruch genommen, sie auf den neuesten Stand zu bringen. Hinzu kommt, dass von ihnen erwartet wurde, dass sie am Ende des Sommers eine Präsentation über ihr spezifisches Projekt halten würden, und das Ganze letztendlich viel mehr Arbeit für mich bedeutete, als wenn ich das gesamte Projekt einfach selbst gemacht hätte.
Ich dachte an meine kurze Erfahrung mit Praktikanten vor kurzem bei einem Projekt, bei dem ich ein wenig Hilfe brauchte. Es macht keinen Sinn, jemanden einzustellen, aber dennoch wäre es ein Segen, jemanden zu haben, an den man bestimmte Aufgaben auslagern kann, besonders jetzt, wo es Sommer ist und es so viel anderes zu tun gibt. Aber das ist die Zukunft, und das Fachwissen und die gebündelte Weisheit des Internets sind nur ein paar Tastendrücke entfernt, oder? Na ja, vielleicht, aber wie Sie sehen werden, hat selbst die Leistungsfähigkeit großer Sprachmodelle ihre Grenzen, und der Versuch, ChatGPT als Sommerpraktikant mit geringem Aufwand einzubinden, lässt zu wünschen übrig.
Die konkrete Aufgabe, bei der ich Hilfe brauchte, war einfach: ein Riegel an der automatischen Tür meines Hühnerstalls. Die Einzelheiten, warum ich das brauche, sollte ich besser nicht sagen, aber ich muss sagen, dass der Riegel mein Versuch ist, mit der grausamen Gleichung „11 Hühner + 1 Waschbär = 8 Hühner“ klarzukommen. Der erste Teil für den Riegel, den ich im Sinn hatte, war eine einfache Halterung – etwas mit zwei Armen, die von einer Basis ausgehen, die an der Stalltür befestigt werden konnte (ein 2 mm starkes Aluminiumblech). Diese Halterung trägt einen federbelasteten Arm, der an einer Querstange im Rahmen der Stalltür angreift und hoffentlich verhindert, dass irgendetwas mit cleveren kleinen Krallen und einer Vorliebe für Hühnchen zum Mitnehmen unter der Unterkante der Schiebetür arbeitet und hineinkommt der Stall.
Aufgrund meiner Erfahrung mit Fusion 360 wusste ich, dass es ziemlich einfach sein würde, ein paar Skizzen zu erstellen, die Arme von der Basis nach oben zu extrudieren, ein paar Löcher zu bohren und alles mit den richtigen Fasen und Verrundungen in Ordnung zu bringen. Das Problem dabei ist, dass ich vor einigen Jahren auf Linux umgestiegen bin, sodass Fusion 360 keine wirklich brauchbare Option ist. Ja, ich weiß, dass es Workarounds mit Wine oder VMs gibt, aber ich bin auch nicht daran interessiert, in der Cloud von Autodesk zu spielen. Natürlich gibt es auch FreeCAD; Tatsächlich hatte ich kurz vor diesem Projekt begonnen, damit herumzuspielen, aber ich befinde mich noch am Anfang der Lernkurve und bin noch nicht besonders produktiv damit.
Dieser letzte Punkt bringt jedoch den Kern der Sache auf den Punkt. Als ich Fusion 360 lernte, stellte ich schnell fest, dass mir die Perfektionierung des 3D-Modells mental wichtiger war als das, was ich entwarf. Ich verbrachte Stunden damit, alles genau richtig zu machen, nur um dann herauszufinden, dass etwas nicht ganz stimmte oder dass ich eine Einschränkung falsch gemacht hatte, und musste noch einmal von vorne beginnen. Ich habe die volle Erwartung, dass mein Verstand FreeCAD genauso behandelt, nicht als Mittel zum Zweck, sondern als den Zweck selbst. Das ist ein heikles Unterfangen, besonders wenn ich noch so viel zu tun habe.
Da kam mir die Idee, mein Design an jemanden – oder etwas anderes – auszulagern. Kredit, wo er gebührt; Die Idee, ChatGPT zu engagieren, kam mir, nachdem ich das Hackaday.io-Projekt von [ROFLhoff] über die Reparatur eines kaputten Toyota-Tachometers gesehen hatte. Das Projekt erforderte einen Knopf, um den Geschwindigkeitssensor, der den Tacho antreibt, für Prüfstandstests einfach drehen zu können. Mit nur einer kurzen Beschreibung des benötigten Teils konnte [ROFLhoff] ChatGPT veranlassen, OpenSCAD-Code zu generieren, um ein Modell des Knopfes zu erstellen.
Ich fand das ziemlich schick und beschloss, das Gleiche zu tun. Die Klammer schien der beste Ausgangspunkt zu sein, also gab ich ChatGPT die folgende Eingabeaufforderung:
Ich weiß, dass ich nicht allzu genau war – ich habe zum Beispiel nicht gesagt, wie weit die Befestigungslöcher von den Ecken entfernt sein sollten –, aber ich dachte, das könnte ich später noch anpassen. Und außerdem sollten Sie, wenn Sie einen Job an einen Untergebenen übergeben, in der Lage sein, nur vage zu beschreiben, was Sie wollen, und ihn damit weitermachen zu lassen. Rechts?
Vielleicht auch nicht, denn hier ist, was ich von ChatGPT zurückbekommen habe:
Nun ist es wichtig anzumerken, dass ich damals noch weniger Erfahrung mit OpenSCAD hatte als mit FreeCAD. Und mit weniger meine ich null – ich hatte OpenSCAD noch nie zuvor verwendet. Der von ChatGPT erstellte Code bedeutete mir also nicht allzu viel. Aber es sah auf jeden Fall vernünftig aus, vor allem für jemanden, der seinen Lebensunterhalt mit dem Programmieren verdiente – ich konnte oben alle Parameter wie Konstanten sehen, die Berechnungen, die verwendet wurden, um herauszufinden, wo die Arme platziert werden sollten, und die Erstellung der zylindrischen Löcher. Aber ich hatte keine Ahnung, was Translate war, und ich konnte nicht wirklich erkennen, wie die Löcher durch die Basis gestanzt werden würden.
Streng genommen war das aber nicht mein Problem. Im Idealfall würde ich einfach den KI-generierten Code in OpenSCAD kopieren und ein 3D-Modell erhalten, das zum Optimieren bereit ist, oder? Vielleicht, aber in der realitätsbasierten Welt hatte ich kein solches Glück. Der von ChatGPT generierte Code funktionierte in OpenSCAD nicht – er löste lediglich einen Syntaxfehler in Zeile 21 aus. Ich teilte ChatGPT den Fehler mit und bat darum, ihn zu beheben, aber der zurückgegebene Code war im Wesentlichen derselbe und löste denselben Fehler aus. Enttäuschend.
Zu diesem Zeitpunkt dachte ich, ich hätte zwei Möglichkeiten: Entweder weiter mit der ChatGPT-Eingabeaufforderung herumspielen oder anfangen, genug OpenSCAD zu lernen, um herauszufinden, was ChatGPT falsch gemacht hat. Alles in allem schien Letzteres der klügere Weg zu sein, also habe ich diesen Weg gewählt. Es wurde schnell klar, dass ChatGPT nicht die geringste Ahnung hatte, wie man OpenSCAD programmiert – man beachte zum Beispiel das völlige Fehlen der different()-Befehle, die zum Bohren der Löcher im KI-generierten Code erforderlich sind. Dies führte mich in genau das Kaninchenloch, das ich vermeiden wollte, und ich verbrachte ein paar Stunden damit, genug OpenSCAD zu lernen, um die Arbeit selbst erledigen zu können:
Zugegeben, mein OpenSCAD-Code hat sowohl die Klammer als auch den Riegel, aber trotz der zusätzlichen Komplexität habe ich das Gefühl, dass ChatGPTs erster Versuch, das zu tun, was ich wollte, bestenfalls halbherzig war. Das ist ungefähr der Punkt, an dem mir klar wird, dass sich ChatGPT wie ein ernsthafter und hilfsbereiter, aber etwas ahnungsloser Sommerpraktikant verhält. Wenn er die gleichen Anweisungen erhält, könnte ein solcher Praktikant ein paar Stunden damit verbringen, zu googeln, wie man den Job macht, vielleicht StackExchange oder r/openscad um Hilfe bitten und sich einen Code einfallen lassen, von dem er glaubt, dass er den Job erledigt. Dass sie sich nicht einmal die Mühe gemacht haben, zu prüfen, ob OpenSCAD den Code interpretieren würde, wäre ein Grund für ein Stern Talking-To™ mit einem Meatspace-Praktikanten; Aber welchen Rückgriff hatte ich bei einem virtuellen Praktikanten?
Ehrlich gesagt, obwohl ich von ChatGPT nicht die magische Hilfe erhalten habe, die ich mir erhofft hatte, war dieses Experiment mit KI-gestütztem Design kein völliger Verlust. Der ursprüngliche Code war vielleicht Mist, aber er vermittelte mir zumindest den Eindruck, dass die OpenSCAD-Programmierung für mich kein völliges Fremdland war; Obwohl es fehlerhaft war, konnte ich erkennen, dass es nur eine Kombination aus Codierung und 3D-Modellierung ist und intuitiv genug, um es auszuprobieren. Jetzt kenne ich gerade genug OpenSCAD, um gefährlich zu sein, und das alles dank ChatGPT – dem schlechtesten Sommerpraktikanten aller Zeiten.
Und was den Riegel der Stalltür betrifft, ging dieses Projekt in eine ganz andere Richtung, als mir klar wurde, dass ich die Halterung und den Riegel aus gebogenem Aluminiumblech herstellen konnte – was mich zwang, nicht nur FreeCAD, sondern auch die Blechwerkbank zu erlernen. Also zwang mich ChatGPT tatsächlich in zwei Kaninchenlöcher, die ich vermeiden wollte.