Der ROI von ChatGPT und Copilot

„Return of invest“

ChatGPT oder besser noch AI/KI also Artificial Intelligence bzw. Künstliche Intelligenz sind grade in aller Munde, natürlich auch angefeuert durch die kürzliche Ankündigung von Microsoft 365 Copilot und dem schon länger existierenden Github Copilot.

Update 20.3.23: Ich habe noch den Absatz zur Nutzung für die Schule ergänzt.

Ich möchte hier ein paar Beispiele aus meinem Alltag erzählen, wo mir ChatGPT – oder „Chatty“, wie ich sie liebevoll nenne, denn für mich ist ChatGPT eindeutig weiblich, denn sie weiß so vieles besser als ich, dass sie nur eine sie sein kann 😮 😀 – bzw. auch mittlerweile Copilot, mein (Arbeits-) Leben erleichtert hat.

Agenda

  1. Code Optimierung anhand von
  2. Formulierungen
  3. Erklärungen
  4. Nicht für die Schule lernt man, sondern für’s Leben
  5. Fazit

Code Optimierungen

Anhand von SQL

Vorgeschichte

Wer mich und meinen Blog schon länger verfolgt, der kommt um das Thema GPS (bzw. Group Policy Search) nicht herum. Über die Entstehung habe ich hier bereits ausgiebig geschrieben, und meine GPS wird in knapp einem Monat tatsächlich ein Teen-Ager.

Jetzt ist es so, dass ich mich nicht 24/7 mit SQL Server Programmierung, bzw. der (Performance) Optimierung beschäftige(n kann). Klar, meine Aufgaben und Stärken liegen an anderer Stelle, nichts desto trotz ist Programmierung und dort auch Zugriff auf Datenbanken ein Hilfsmittel um meine Ziele zu erreichen.

Das heißt, dass der Code, den ich für die GPS (vor langer Zeit) geschrieben habe, zwar grundsätzlich funktioniert und ich diesen nach bestem Wissen und Gewissen geschrieben habe, jedoch weiß ich natürlich „wo der Hund begraben liegt“, sprich wo meine „teuren Abfragen“ sind.
Teuer meint in dem Sinne vor allem: „Performance hungrig“.
Aber „läuft ja“ und die Konsequenz meines Handelns bestimmt insbesondere auch die benötigte „Größe“ (aka Performance) der Datenbank. Sprich wieviel CPU/DTUs ich gebucht habe und auf meine Kostenstelle laufen.

Zur Optimierung hatte ich in der Vergangenheit die Größe am Wochenende reduziert, da dort einfach weniger Last auf dem System ist, und ich konnte dadurch schon eine deutliche Kostenreduktion erreichen.

Konkrete Herausforderung

Wie ich schon oben schrieb, wusste ich, dass mein T-SQL Code ganz sicher optimierbar war – bzw. vermutlich auch immer noch ist.
ABER ich hatte weder Zeit, noch Lust, mich tiefer in die Thematik einzuarbeiten, weil auch der zu erwartende ROI (also Return of Invest) für mich nicht klar war, bzw. von mir als viel zu niedrig angesehen worden ist.

Als aber Chatty aufgekommen ist, dachte ich mir: „kannste ja mal ausprobieren, dauert nicht lange und wenn es was bringt: super, wenn nicht: macht nix, haste wenigstens was bei gelernt.“

So gedacht und getan:

Ich schnappte mir also die in meinen Augen „teuerste“ Stored Procedure (SP) und habe sie copy&paste Chatty vor die Füße geworfen und gesagt: please help me optimize the following t-sql code:…!

Da meine Erwartungen zu dem Zeitpunkt eher gering waren, war ich umso erstaunter über das Ergebnis:

Denn in meiner SP habe ich – keine Angst, ich werde nicht zu technisch – habe ich mir aus unterschiedlichen Tabellen Daten zusammengesucht und diese in eine temporäre Tabelle geschrieben um dann am Ende alle Ergebnisse gesammelt auszugeben.

Das hat, wie schon angedeutet, auch immer gut funktioniert, in den Logs der DB konnte man aber klar erkennen: das ist nicht schnell!

Lösung

So, also Chatty meinte dann zu mir: „warum machst du das nicht so:“

Die Antwort von Chatty auf meine Bitte um Hilfe (gekürzt)

Das heißt, Chatty hat mir in diesem Moment beigebracht, dass es zwei Arten von temporären Tabellen gibt. Die eine, die eine tatsächliche Tabelle (also im worst case auf Disk) in der DB darstellt und damit der IO Vorgang einfach sehr lange dauert, was für meine Zwecke gar nicht notwendig ist, oder aber eine Tabelle in Form einer Variable (aka „in-memory“).

Dies wusste ich schlicht nicht und ich wusste natürlich auch nicht „wie“ ich das dann im Code machen sollte, daher war ich sehr dankbar über den Hinweis und den Vorschlag, wie ich den Code anpassen sollte.

Ergebnis

Mit diesem gelernten bin ich dann erst mal an meine „teure“ SP herangegangen und siehe da: das war deutlich, sogar gefühlt (ok, ich hab’s nicht gemessen und mag durch die coole Erfahrung auch ein nicht ganz objektiver Eindruck sein) schneller, bei sonst keiner Veränderung! 😮😮😮

Beflügelt durch das Ergebnis konnte ich dieses gelernte Wissen noch bei anderen Abfragen einbauen und damit einen signifikanten Performance Gewinn erreichen.

Dieser war so groß, dass ich den Versuch gestartet habe den oben erwähnten Hoch-und-Runter der Datenbank Instanz nicht mehr zu machen und einfach bei der kleinsten (S0) auch unter der Woche zu bleiben.

Und siehe da: es funktioniert!

ROI

Das wiederum bedeutet, dass ich nur durch diese Kleinigkeit die Datenbankperformancegröße permanent reduzieren konnte und damit

die Kosten für die GPS um ¼ – also ja, 25% reduzieren konnte!

Ok, die Rechnung hinkt etwas, da die DB bei mir tatsächlich der größte Kostenblock ist, aber ich möchte dadurch klarstellen, dass durch eine kurze Nutzung von einer unterstützenden KI, ich mit einem Zeitaufwand von wenigen Minuten eine Kosteneinsparung von 25% erreichen konnte – bei einem System, das schon 13+x Jahre auf dem Buckel hat, also eigentlich als „eingeschwungen“ gelten sollte!

Und DAS hat mich schier umgehauen!

Anhand von C#

Ähnlich bin ich bei bestimmten Methoden meines .NET/C# Backends vorgegangen – und %SPOILER% ich habe da noch nicht viel gemacht, aber doch eine „low hanging fruit“ konnte ich schon abgreifen:

Vorgeschichte

Ich habe das Backend sehr modular aufgebaut und mache insb. die Datenbankzugriffe über eine Methode, die sich um die vorbereiteten DB Aufrufe kümmert, die Sessions managed, etc.

Das heißt, diese Methode wird so ziemlich von jeder anderen Methode verwendet und wenn ich also in dieser eine Optimierung erreichen kann, dann würde das zu einem entsprechenden skalierenden Effekt führen.

Gesagt getan

Auch hier bin ich wie schon bei SQL vorgegangen und habe den Teil meines Codes, von dem ich mir die Einsparungen erwartet habe, an Chatty bzw. GitHub Copilot mit der Bitte gegeben, mir bei der Optimierung zu helfen.

Auch hier hat mich GitHub Copilot auf einen Punkt aufmerksam gemacht, den ich vor allem bei „kleinen“ Requests gut zur Performancesteigerung nutzen könnte. [Ich erspare euch die Details, ist gar nicht so wichtig und ja, hätte man auch selber drauf kommen können, wenn man länger drüber nachgedacht hätte, aber genau das ist ja der Charme von GitHub Copilot, dass ich so nicht lange denken musste, sondern direkt – wie durch ein*e Lehrer*in – mit dem Finger draufgestoßen wurde].

Der Effekt war zwar diesmal nicht sooo groß wie bei der obigen SP, aber ich bilde mir trotzdem ein, dass ich es auch gespürt habe.

Leider kann ich die DB nicht noch kleiner machen und auch die Backend Instanz ist nicht kleiner zu machen (aus anderen Gründen), so dass ich zwar keinen weiteren Kostenvorteil heben kann, aber die User*innen danken es mir implizit, denn dort wo es wichtig ist, spürt man es halt! 😍

Formulierungen

Eine KI mit einem Large Language Model (LLM) kann natürlich mehr als nur Nerd-Code optimieren.

In meinem Arbeitsalltag kommt es öfter vor, dass ich auch an größere Gruppen Text auf English schicken darf. Natürlich habe ich das in der Vergangenheit hinbekommen und würde das auch ohne Probleme in der Zukunft hinbekommen.

ABER – ich bin kein „native speaker“ und das merkt man (ich auch) an der Formulierung, der Varianz in dem verwendeten Vokabular, in nicht ganz sauberer Grammatik, etc. sprich „jo, hat halt nen Deutscher geschrieben!“.

Daher gehe ich mittlerweile so vor:

Ich schreibe den Text in English, so wie ich ihn eben schreibe.
Dann aber übergebe ich den Text an M365 Copilot [hier in Word oder Outlook] und bitte sie: „bitte hilf mir den Text sprachlich zu verbessern“ und sie nimmt das, was ich geschrieben habe, und macht daraus ziemlich sauberen, englischen Text, wo eben nicht aus jedem Buchstaben heraussprießt: das hat ein Deutscher geschrieben.

Netter Nebeneffekt ist, dass ich dabei auch noch was lerne und beim nächsten Mal schon besseren Text als Vorlage liefere.

Auf den angekündigten Microsoft 365 Copilot freue ich mich daher um so mehr, denn damit kann ich es gleich nativ in der jeweiligen App machen und muss nicht auf ein externes Tool zurückgreifen, zu dem keine vertragliche und damit auch keine Datenschutz abgesicherte Beziehung existiert. Das sehe ich als wirklich gigantischen Mehrwert für unsere – also die Microsoft – Kunden an!

Erklärungen

Ein eher privates Beispiel möchte ich euch auch nicht vorenthalten:

Meine Frau ist begeisterte Hobby Gärtnerin. Wie jedes Jahr im Frühling stellt sich ihr die Frage: „Was pflanze ich wo auf welches Beet und in welcher Reihenfolge?“.

So auch dieses Jahr. Sie hat natürlich auch den Hype um Chatty mitbekommen – war dem aber eher skeptisch gegenüber.

Sie hat sich aber einen Ruck gegeben und gesagt: ok, ich teste das mal aus, vielleicht kann sie mir ja bei meiner Pflanzherausforderung helfen.

Also hat sie Chatty ihren groben Plan beschrieben: „ich habe x Pflanzreihen zur Verfügung, im letzten Jahr habe ich y, z, a in genau dieser Reihenfolge gepflanzt. Wie sollte ich hinsichtlich des Nährstoffangebots im Boden dieses Jahr pflanzen und welche Ergänzungen könnte ich zusätzlich machen?“

Und tatsächlich hat – mit ein paar Nachfragen und Anpassungen durch meine Frau – Chatty uns einen validen Beetplan mit sinnvollen Ergänzungen genannt, so dass ich mich im Sommer/Herbst hoffentlich über mehr und leckerere Ernte freuen kann!

Nicht für die Schule lernt man, sondern für’s Leben

Jetzt am Wochenende ist noch ein weiterer Usecase hinzugekommen, der mir einen weiteren WoW Moment beschert hat:

Es kommt regelmäßig vor, dass ich für meine Kinder Übungsblätter für die Schule und dort für unterschiedliche Fächer suche, um ihnen zu helfen sich auf die nächste Probe/Arbeit vorzubereiten.

Dafür gibt es ein paar sehr schöne Webseiten, deren Betreiber manchmal sogar kostenlos diese Blätter bereitstellen – Danke dafür, Grüße gehen raus! 😉

Allerdings treffen diese Übungsblätter natürlich nicht immer genau den Stand der Klasse und sind manchmal zu leicht, zu schwer, zu weit weg.

Und genau hier dachte ich mir: das kann Chatty doch bestimmt auch!?

Also bat ich Chatty: Erstelle ein Übungsblatt für die 4. Klasse Grundschule im Fach Mathematik, welches folgende Themen abdecken soll: Daten und Zufall, Sachaufgaben, Umfangsberechnung. Gerne die Themen in jeweils eigenen Aufgaben.

Das Ergebnis entsprach dem, was ich erhofft hatte zu bekommen und konnte ich sogleich sinnvoll einsetzen!
Dadurch muss ich ab sofort also nicht mehr lange nach einem passenden Übungsblatt suchen, sondern lasse mir das in Zukunft immer einfach durch Chatty erstellen – dadurch passt das Übungsblatt von Anfang an genauer auf den Lehrninhalt und ich spare auch noch Zeit um die Bearbeitung durch meine Kinder noch besser zu begleiten.

Win-Win!

Dieses Vorgehen lässt sich natürlich auch durch Lehrende anwenden, die so weniger Zeit für die Vorbereitung der Übungen und Tests benötigen. Wichtig hierbei ist – genau wie bei allen anderen Szenarien – , dass der Output durch einen wissenden Menschen kontrolliert, hinterfragt und gegebenen Falls angepasst wird!

Fazit

Durch die Nutzung von LLM, ChatGPT und Copilot wird sich meine Arbeitsweise in der Zukunft deutlich beschleunigen und auch inhaltlich verbessern, da ich weniger Zeit für diese Aufgaben verwenden muss.

Der Mensch, also ich, werde aber weiterhin dringend benötigt!
Zum einen um überhaupt den ganzen Vorgang anzustoßen und dann aus den Ergebnissen die richtigen Schlüsse zu ziehen,
und zum anderen die richtigen Dinge herauszuextrahieren und umzusetzen.

Ich sehe LLMs also als ein weiteres Werkzeug an – ähnlich wie eine passende App – mit dem ich schneller besser an mein Ziel gelange. Dies ist vor allem in Zeiten von #overload, #fachkräftemangel und #prozessoptimierungen ein willkommener Lichtblick!

2 Gedanken zu „Der ROI von ChatGPT und Copilot“

Kommentare sind geschlossen.