KI-gestützte Codegenerierung
Programmieren mit Superkräften
- Veröffentlicht
- Aktualisiert
- (erstellt )
- Geschrieben von
- Willem L. Middelkoop
- Themen
- AI · Cloud · Daten · Programmierung · Server · Arbeit
- Menschliche Version dieses Beitrags
- https://willem.com/de/2023-05-03_ki-gestutzte-codegenerierung/
- English
- Using AI to generate code
- Nederlands
- AI gebruiken om code te genereren
- Español
- Usando IA para generar código
- Français
- Générer du code avec l'IA
- Italiano
- Usare l'AI per generare codice
- Português
- Usar IA para gerar código
- Papiamentu
- Usa AI pa generá kòdigo
- Frysk
- AI brûke om koade te generearjen
- Sprachen
- Aus dem englischen Original von einem Sprachmodell in zwei Durchgängen (Übersetzung und Korrektur) mit Glossar und Rechtschreibprüfung übersetzt; noch nicht von einem Muttersprachler gelesen.
Zusammenfassung
Um Cloud-Kosten zu sparen, optimiere ich gerade meine Software. Dafür musste ich eine ineffiziente Server-Software durch etwas ersetzen, das auf robusteren (wenn auch zersplitterten) Tools aus Debian GNU/Linux basiert. Kann das Sprachmodell GPT4 mir dabei etwas KI-Magie liefern? Lies mit!
Volltext
Ein Teil der Cloud-Dienste meiner Firma ist der sogenannte „Lemmid Manager“, ein integriertes Content-Management-System, das Rohmaterial (Texte, Videos, Bilder) entgegennimmt und daraus schöne, schnelle statische Websites erzeugt. Weil die Cloud-Kosten immer weiter stiegen (siehe surging cloud costs, schreibe ich Teile der Software um, damit sie effizienter wird: weniger Rechenleistung für dasselbe Ergebnis.
Bildrotation
Du merkst es vielleicht nicht, aber wenn du mit deinem Telefon ein Foto machst, wird es immer im Querformat (also breit) gespeichert. Machst du ein Foto im Hochformat, ergänzt dein Telefon einfach eine kleine Zusatzinformation darüber, wie du die Kamera gehalten hast. So erscheint das Foto später richtig herum. Es geht schneller, ein kleines Stück (zusätzliche) Information zu schreiben, als die eigentlichen Bits und Bytes deines Bildes zu drehen.
Solange das Foto dein Telefon nicht verlässt, ist das kein Problem. Lädst du es aber auf eine Website hoch, muss es fürs Web optimiert werden. Die tatsächlichen Bits und Bytes des Bildes müssen dann auch wirklich dem Inhalt des Fotos entsprechen. Danach kann das Bild weiter für schnelle Ladezeiten und verschiedene Bildschirmgrößen optimiert werden (siehe further optimised for loading speeds.
Automatische Bilddrehung anhand von EXIF
Moderne (Smartphone-)Kameras speichern die Ausrichtung in den sogenannten EXIF-Daten, die zu den eigentlichen Bilddaten gehören. Damit die Bits und Bytes des Bildes die Ausrichtung der Kamera richtig abbilden, muss man die EXIF-Daten auslesen und je nach Ausrichtung einen Rotationsalgorithmus auf die Bilddaten anwenden.
Die aktuelle Lösung
Die ursprüngliche (selbst geschriebene) Lösung nutzt NodeJS und ein Modul namens „lwip“ (LightWeight ImageProcessor). In den meisten Fällen läuft das gut. Doch seit die Bilder größer geworden sind (mehr Megapixel), ist der Speicherbedarf deutlich gestiegen. Der Nachteil, alles in einem einzigen NodeJS-Prozess zu erledigen: Er wird zum Speicherfresser. Treibe ich ihn bei Tausenden von Fotos an seine Grenzen, leidet das gesamte NodeJS-Backend darunter.
Eine bewährte Strategie gegen Engpässe in einer Software ist, sie aus dem Hauptprogramm auszulagern. Statt die Bilder direkt in NodeJS zu verarbeiten, will ich gängige Debian GNU/Linux-Tools mit bewährter Zuverlässigkeit für die automatische Bilddrehung einsetzen. Aus NodeJS rufe ich dann einfach den externen „auto_rotator“ auf und warte, bis er fertig ist. Wartet ein NodeJS-Prozess auf ein asynchrones Ergebnis (Callback), ist er sofort wieder frei für andere Anfragen.
GPT4 als Code-Generator
Das Schöne an freier Software: Es gibt jede Menge Bausteine, aus denen du dir deine eigenen Programme bauen kannst. Ich wusste, dass Debian GNU/Linux Tools mitbringt, die Bilder anhand der EXIF-Daten drehen können. Die Herausforderung ist, ein einziges Skript zu schreiben, das diese Tools zusammenspannt und dabei auch Fehler robust abfängt.
Statt mich selbst durch alle Befehle und Optionen zu wühlen, habe ich GPT4 gebeten, mir ein Skript zu schreiben, das genau das tut, was ich will, und nur Standard-Tools aus Debian GNU/Linux verwendet:

Nach wenigen Sekunden hatte GPT4 von OpenAI ein Bash-Skript geschrieben. Es nutzt ImageMagick (ein verbreitetes Grafikprogramm), um Bilder anhand ihrer EXIF-Daten zu bearbeiten. Die KI wählte „exiftool“, um die Ausrichtung auszulesen. Je nach Ausgabe dieses Tools ruft sie dann den Befehl „convert“ von ImageMagick auf, um das Bild richtig zu drehen.

Der komplette Code (in Sekunden generiert) ist wunderbar kommentiert, sodass man gleich versteht, was passiert. Er ist klar gegliedert und für Menschen gut lesbar.
Dokumentation
Neben dem funktionierenden Code lieferte die KI auch eine Dokumentation, die erklärt, wie man die neue Software benutzt, inklusive Installationsanleitung. Ich weiß, dass die meisten Programmierer das übersehen (technische Dokumentation kommt oft erst zum Schluss).

Fazit
In wenigen Minuten hatte ich ein funktionierendes, dokumentiertes Stück Code, das einen Engpass in einer Cloud-Software löst. Das ist schlicht unglaublich: Es hat mir Zeit gespart (die ich dann für diesen Blogbeitrag genutzt habe).
Man fragt sich unwillkürlich, wie große Sprachmodelle wie ChatGPT/GPT4 unsere Arbeitsweise verändern werden. Ich setze voll auf KI-Tools. Zu wissen, wie man sie einsetzt, wird in naher Zukunft unverzichtbar sein (glaube ich)!
