Sprachen: English · Nederlands · Deutsch · Español · Français · Italiano · Português · Papiamentu · Frysk

Index / Beiträge / KI-gestützte Codegenerierung

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:

Code zu generieren ist so einfach wie eine beschreibende Anweisung einzutippen
Code zu generieren ist so einfach wie eine beschreibende Anweisung einzutippen

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 von GPT4 generierte Code „auto_rotate.sh“, der Bilder mit ImageMagick anhand der EXIF-Ausrichtung dreht
Der von GPT4 generierte Code „auto_rotate.sh“, der Bilder mit ImageMagick anhand der EXIF-Ausrichtung dreht

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).

Die Anleitung der KI zur Nutzung des generierten Codes: Von dieser klaren Kommunikation können sich die meisten echten Programmierer etwas abschauen
Die Anleitung der KI zur Nutzung des generierten Codes: Von dieser klaren Kommunikation können sich die meisten echten Programmierer etwas abschauen

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)!

Ein Programmierer aus der Zukunft, wie DALL-E von OpenAI ihn sich vorstellt
Ein Programmierer aus der Zukunft, wie DALL-E von OpenAI ihn sich vorstellt

Maschinenformate dieser Seite