Vom Softwareentwickler zum KI-Entwickler: 8 Erkenntnisse aus dem Innenleben von Skai

Hol dir mehr davon – direkt in deinen Posteingang
Zusammenfassung

Der Wandel vom Software-Engineering zum KI-Engineering mag so wirken, als wäre er über Nacht passiert. Doch hinter dieser Transformation stecken monatelange Experimente, Lernerfahrungen und ein tieferes Verständnis dafür, wie KI-Modelle tatsächlich funktionieren. Yuval Dahari, KI-Ingenieur bei Skai, teilt acht praktische Erkenntnisse aus dem Entwicklerteam von Skai, die alles abdecken – vom Modellverhalten über das Kontextmanagement bis hin zum Prompt-Caching und dem Speicher von KI-Agenten.

Wichtigste Erkenntnisse

  • Um KI-Ingenieur zu werden, reicht es nicht aus, nur neue Tools zu lernen. Zu verstehen, wie KI-Modelle funktionieren, ist entscheidend für die Entwicklung zuverlässiger und effektiver Anwendungen.
  • KI-Modelle haben Einschränkungen, die Ingenieure berücksichtigen müssen. Datenverzerrungen, Tokenisierung und Kontextüberlastung können die Qualität der von der KI generierten Ergebnisse beeinträchtigen.
  • Durchdachte technische Entscheidungen verbessern Leistung und Effizienz. Schnelles Caching, Speichermanagement und Modellauswahl können Kosten und Latenz erheblich reduzieren.
  • Der Übergang zum KI-Engineering ist ein fortlaufender Lernprozess. Bei Skai helfen praktische Experimente und der Wissensaustausch den Ingenieuren dabei, die für die KI-gestützte Entwicklung erforderlichen Fähigkeiten aufzubauen.

Jeder, der sich schon mal vorgenommen hat, ein paar Monate lang ins Fitnessstudio zu gehen, kennt dieses Gefühl. Wochenlang gehst du hin, machst deine Wiederholungen und verfolgst deine Fortschritte. Aber wenn du in den Spiegel schaust, hast du das Gefühl, dass sich nichts ändert. Dann, eines Morgens, stellst du fest, dass sich dein Körper komplett verändert hat. Es ist fast so, als würde Tobey Maguires Peter Parker im Originalfilm von 2002 nach dem Spinnenbiss aufwachen und plötzlich feststellen, dass er einen Sixpack hat.

Aber wie jeder Sportler oder Ingenieur weiß, ist die Verwandlung über Nacht ein Mythos.

Hier bei Skai haben viele von uns etwas Ähnliches erlebt. Wir haben von unseren IDEs aufgeschaut und festgestellt, dass wir – scheinbar über Nacht – von traditionellen Softwareentwicklern zu KI-Entwicklern geworden waren. Natürlich ist das nicht über Nacht passiert. Wir haben monatelang mit verschiedenen Arten von LLMs experimentiert und dabei gemeinsam mit unseren KI-Champions und Kollegen gelernt, was funktioniert.

Und jetzt, wo wir diese leistungsstarken Möglichkeiten zur Verfügung haben, wirken die berühmten Worte von Onkel Ben (RIP) besonders aktuell: „Mit großer Macht kommt große Verantwortung.“ Denn ein KI-Ingenieur zu werden bedeutet mehr, als nur zu wissen, wie man ein Modell mit Prompts ansteuert. Es bedeutet, zu verstehen, was hinter den Kulissen vor sich geht.

Diese Denkweise war der Anstoß für eine interne Weiterbildungsinitiative namens „Under the Hood“, die ich gemeinsam mit meiner Vorgesetzten Noa Weiss ins Leben gerufen habe. In kurzen monatlichen Sitzungen tauschen sich die Entwickler über praktische KI-Konzepte aus, hinterfragen Annahmen und loten aus, wie sich diese Technologien auf unsere tägliche Arbeit anwenden lassen.

In unserer ersten Sitzung habe ich acht grundlegende Konzepte behandelt, die meiner Meinung nach jeder Ingenieur, der mit KI arbeitet, verstehen sollte.

1. Datenverzerrung: Das Paradoxon der Linkshänder

Hier ist ein lustiges Experiment. Bitte ein Bildgenerierungsmodell, ein Bild von einer Linkshänderin zu erstellen, die neben einem vollen Weinglas in ein Notizbuch schreibt. Vielleicht bekommst du stattdessen eine Rechtshänderin und ein halb leeres Glas.

Warum? KI-Modelle lernen Muster aus ihren Trainingsdaten. Wenn etwas seltener vorkommt – wie zum Beispiel ein Linkshänder –, tendieren die Modelle zur bekannteren Alternative. Ich nenne das „Verteilungsbremse“: die Tendenz von KI-Ergebnissen, häufige Muster zu bevorzugen.

Das gleiche Problem kann bei der Codegenerierung auftreten. Wenn du ein Modell bittest, einen speziellen Sonderfall deiner spezifischen Geschäftslogik zu lösen, wird es sich an eine vertraute Lösung halten, die vielleicht nicht ganz passt.

Die Lektion für Entwickler: Wenn du mit ungewöhnlichen Anforderungen oder Randfällen arbeitest, gib explizite Einschränkungen und Beispiele an, anstatt davon auszugehen, dass das Modell von selbst versteht, was die Situation besonders macht.

2. Tokenisierung: Das Erdbeer-Problem

Frag ein KI-Modell, wie oft der Buchstabe „r“ im Wort „strawberry“ vorkommt. Heute bekommst du wahrscheinlich die richtige Antwort: drei. Doch noch vor wenigen Monaten hatten die Modelle mit solchen Fragen ihre Schwierigkeiten.

Das liegt daran, dass Sprachmodelle Wörter nicht so verarbeiten wie Menschen. Sie zerlegen Text in kleinere Einheiten, sogenannte Tokens, die niemals einzelnen Buchstaben entsprechen. Wenn ein KI-Assistent diese Frage richtig beantwortet, nutzt er möglicherweise ein Tool zur Codeausführung, um die Buchstaben zu zählen, anstatt sich auf die Sprachgenerierung zu verlassen.

Diese Unterscheidung ist wichtig, wenn man Anwendungen entwickelt, bei denen es auf Präzision ankommt.

Die technische Lektion: Verwende deterministischen Code für Aufgaben wie Zeichenzählung, Zeichenfolgenbearbeitung und exakte Formatierung. KI kann bei der Erstellung des Codes helfen, sollte aber nicht immer für die Ausführung der Logik selbst zuständig sein.

3. Temperatur: Das Glücksrad

Entwickler bezeichnen die Temperatur oft als die „Kreativitätseinstellung“ eines KI-Modells. Das ist zwar eine nützliche Vereinfachung, aber hier ist eine bessere Art, sich das vorzustellen.

Stell dir ein Glücksrad vor, bei dem jeder Sektor ein mögliches nächstes Wort darstellt. Bei niedrigeren Temperaturen tendiert das Modell stark zu den wahrscheinlichsten Optionen. Bei höheren Temperaturen haben weniger wahrscheinliche Optionen eine größere Chance, ausgewählt zu werden.

Hier ist der Haken: Eine niedrigere Temperatur garantiert noch lange keine richtige Antwort. Ein Modell kann eine falsche Antwort liefern, selbst wenn sein Ergebnis sehr gut vorhersagbar ist.

Die technische Erkenntnis: Verwende niedrigere Temperaturen, wenn es auf Konsistenz ankommt oder wenn du strukturierte oder vorhersehbare Ergebnisse anstrebst, aber verwechsle Konsistenz nicht mit der Abwesenheit von Halluzinationen. Eine niedrige Temperatur kann Halluzinationen nicht vollständig ausschließen, daher ist die Überprüfung des Ergebnisses nach wie vor unerlässlich.

4. Kontextmanagement: Der ruhige Besprechungsraum vs. das Stadion

Stell dir vor, du versuchst, in einem ruhigen Besprechungsraum mit fünf Leuten ein produktives Gespräch zu führen. Und jetzt stell dir vor, du führst genau dieses Gespräch in einem Stadion voller 100.000 jubelnder Fans.

Das ist der Unterschied zwischen dem Bereitstellen eines gezielten, relevanten Kontexts für ein KI-Modell und dem Überfluten des Modells mit unnötigen Informationen.

Jedes Transformer-Modell arbeitet mit einem festen Aufmerksamkeitsbudget, dessen mathematische Summe 1,0 (100 %) beträgt. Je mehr Token du in das Kontextfenster packst, desto geringer wird das relative Aufmerksamkeitsgewicht, das für jedes einzelne Token zur Verfügung steht, da jedes Token einen Anteil an der Aufmerksamkeit beansprucht.

Bei unserer eigenen Entwicklungsarbeit bei Skai habe ich festgestellt, dass mehr als 40 % der Zeilen in einer unserer Codebasen aus Markdown-Dokumentationsdateien bestanden. Das ist eine Menge potenzieller Störsignale, die ein KI-Programmieragent verarbeiten muss.

Wenn Entwickler veraltete Dokumentationen, vorläufige Notizen und umfangreiche Protokolle bereitstellen, kann es für das Modell schwieriger werden, wichtige Anweisungen zu erkennen. Wir suchen derzeit nach Möglichkeiten, diesen Kontext übersichtlicher zu gestalten, unter anderem mithilfe eines Agenten, der dabei helfen soll, unsere Dokumentation zu pflegen.

Die Lektion für Ingenieure: Behandle den Kontext als begrenzte Ressource. Halte die Dokumentation auf dem neuesten Stand, entferne unnötige Dateien und Kommentare und gib KI-Agenten nur die Informationen, die sie tatsächlich brauchen.

5. Strukturierte Ergebnisse: Differentialrechnung in Reimen lösen

Ingenieure lieben strukturierte Ausgaben, weil sich die Antworten der KI dadurch leichter in Anwendungen integrieren lassen. Wenn man beispielsweise von einem KI-Modell verlangt, gültiges JSON zurückzugeben, stellt das sicher, dass ein anderes System die Antwort verarbeiten kann.

Aber stell dir mal vor, du müsstest eine komplizierte Differentialaufgabe lösen und dabei jeden Schritt als perfekt gereimtes Gedicht vortragen. Dreht sich dir schon der Kopf? Gut.

Je nach Modell und Umsetzung kann es komplexe Aufgaben erschweren, wenn man zu früh strenge Formatierungsvorgaben macht.

Wenn du vom ersten Token an eine strenge Formatierung vorschreibst, nimmst du ihm die Möglichkeit, automatisch Gedanken-Token zu generieren (Chain of Thought), die ihm helfen, das Problem zu durchdenken.

Die Erkenntnis aus der Technik: Bei schwierigen Denkaufgaben solltest du testen, ob es die Ergebnisse verbessert, wenn du die Denkphase und die Formatierungsphase voneinander trennst. Ein Ansatz besteht darin, das Problem zuerst zu lösen und die Antwort anschließend in die gewünschte Struktur umzuwandeln.

6. Prompt-Caching: Wie eine kleine Änderung die Kosten gesenkt hat

Das war eine der praktischsten Erkenntnisse aus unserer Zeit bei Skai.

Viele KI-Anbieter bieten ein Prompt-Caching an, wodurch Systeme bereits verarbeitete Teile eines Prompts wiederverwenden können, anstatt dieselben Informationen immer wieder neu zu verarbeiten. Das Caching funktioniert jedoch nur, wenn die wiederverwendbaren Inhalte im Cache eine exakte Präfixübereinstimmung auf Zeichenebene erfordern.

In einer unserer frühen Implementierungen haben wir dynamische Informationen ganz am Anfang unserer Systemaufforderungen platziert. Diese kleine Entscheidung hat das Caching gestört und den Rechenaufwand erhöht.

Nachdem wir die Organisation dieser Prompts geändert hatten, senkte ein einziger Pull-Request unsere Kosten pro LLM-Anfrage um mehr als 90 %. Nicht schlecht für eine relativ kleine Änderung!

Die technische Lektion: Stelle feste Anweisungen und wiederverwendbare Informationen an den Anfang der Eingabeaufforderungen. Ändere die Eingaben gegen Ende immer wieder, um die Möglichkeiten zum Zwischenspeichern zu verbessern.

7. Das Gedächtnis von KI-Agenten: Mehr als nur der Chat-Verlauf

Wenn Entwickler zum ersten Mal darüber nachdenken, einem KI-Agenten ein Gedächtnis zu geben, liegt die naheliegende Lösung darin, frühere Unterhaltungen zu speichern und sie wieder in das Modell einzuspeisen. Leider wird dieser Ansatz schnell unübersichtlich.

Lange Gesprächshistorien verbrauchen Kontextkapazität, erhöhen die Latenz und erschweren es einem Agenten, relevante Informationen zu identifizieren. Ein besserer Ansatz ist der Aufbau einer aktiven Speicherpipeline , um nützliche Fakten zu extrahieren, sie effizient zu speichern und nur das abzurufen, was für die aktuelle Aufgabe benötigt wird.

Anstatt zum Beispiel eine ganze Unterhaltung zu speichern, könnte sich ein Agent eine nützliche Präferenz merken: „Der Nutzer zieht Python gegenüber Java vor.“ Techniken wie die hybride Suche (eine Kombination aus semantischem und Stichwortabgleich) und die Vektordeduplizierung können dazu beitragen, dass diese Erinnerung mit der Zeit immer nützlicher wird.

Die Erkenntnis aus der Technik: Gestalte den Speicher des Agenten so, dass er sich an aktiven Extraktions- und Abruf-Pipelines orientiert, statt an der reinen Gesprächshistorie.

8. Modellauswahl: Das richtige Werkzeug für die jeweilige Aufgabe finden

Nicht jede KI-Aufgabe erfordert das größte und leistungsstärkste Modell. Denk mal daran, wie es ist, einen Titel für ein Gespräch zu generieren, im Vergleich zum Debuggen eines komplizierten Problems in der Produktion. Die erste Aufgabe ist relativ einfach. Die zweite erfordert möglicherweise tiefgreifendere Schlussfolgerungen, mehrere Schritte und mehr Rechenressourcen.

Wenn man für jede Aufgabe ein teures Schlussfolgerungsmodell einsetzt, kann das die Latenzzeit und die Kosten erhöhen, ohne dass dadurch nennenswerte Vorteile entstehen.

Es ist entscheidend, den Unterschied zwischen herkömmlichen Fast-Path-Modellen und „Thinking Models“ (Inference-Time Compute) zu verstehen, die zusätzliche Laufzeit-Token zuweisen, um sich vor der Antwort selbst zu korrigieren.

Die technische Erkenntnis: Passe das Modell an die Aufgabe an. Verwende einfache Modelle für unkomplizierte Koordinationsvorgänge und behalte die fortgeschritteneren Schlussfolgerungsfähigkeiten für komplexe Entscheidungsknoten vor.

Unser Wissen auf die Probe stellen

Natürlich konnten wir unsere erste „Under the Hood“-Ver anstaltung nicht ohne einen kleinen freundschaftlichen Wettbewerb beenden. Wir haben Kahoot gestartet, eine interaktive Quiz-Plattform, auf der die Teilnehmer Fragen in Echtzeit beantworten, und alle zu einem Wettbewerb mit 20 Fragen herausgefordert, der das Gelernte abdeckte.

Die Stimmung war unglaublich, und ich bin mir sicher, dass der Preis, den ich dem Gewinner versprochen hatte, absolut nichts damit zu tun hatte. Viel wichtiger war aber, dass die Ingenieure darüber diskutierten, warum ein Befehl fehlgeschlagen ist oder warum ein Cache-Treffer ausgeblieben ist – das zeigte, dass sie diese Konzepte langsam verstanden haben.

Wie geht es weiter mit der KI-Entwicklung bei Skai?

Um KI-Ingenieur zu werden, reicht es nicht, sich die neuesten Schlagworte einzuprägen oder Prompts aus dem Internet abzuschreiben. Es geht darum, zu verstehen, warum sich Modelle so verhalten, wie sie es tun, ihre Grenzen zu erkennen und dieses Wissen zu nutzen, um bessere Systeme zu entwickeln.

Unsere erste „Under the Hood“- Veranstaltung war erst der Anfang. Wir setzen unsere gemeinsame Auseinandersetzung mit diesen Konzepten fort, wobei immer mehr Entwickler auf die Bühne kommen, um unter meiner Anleitung zu erzählen, was sie dabei lernen.

Denn auch wenn es so aussehen mag, als wäre der Übergang zum KI-Engineering über Nacht passiert, vollzieht sich der eigentliche Wandel doch durch ständiges Experimentieren, Zusammenarbeit und Lernen. Und ich persönlich kann es kaum erwarten zu sehen, was als Nächstes unter der Haube steckt.


Häufig gestellte Fragen

Was ist der Unterschied zwischen einem Softwareentwickler und einem KI-Entwickler?

Softwareentwickler entwerfen, erstellen und warten Anwendungen mithilfe traditioneller Programmiermethoden. KI-Entwickler wenden viele dieser Fähigkeiten ebenfalls an, während sie KI-Modelle in Anwendungen und Arbeitsabläufe integrieren. Das erfordert zusätzliches Wissen über das Verhalten von Modellen, Tokenisierung, Kontextmanagement, Prompt-Engineering sowie Techniken zur Verbesserung der Leistung und Zuverlässigkeit von KI.

Welche Fähigkeiten brauchen Softwareentwickler, um in den Bereich KI-Entwicklung zu wechseln?

Softwareentwickler, die in den Bereich KI-Entwicklung wechseln, sollten verstehen, wie große Sprachmodelle Informationen verarbeiten, Ergebnisse generieren und auf verschiedene Eingaben reagieren. Zu den wichtigen Fähigkeiten gehören Prompt-Engineering, Kontextmanagement, strukturierte Ausgaben, Modellauswahl, Prompt-Caching und die Gestaltung des Gedächtnisses von KI-Agenten. Praktische Experimente und kontinuierliches Lernen sind für die Entwicklung dieser Fähigkeiten unerlässlich.

Wie können KI-Entwickler die Anwendungsleistung verbessern und Kosten senken?

KI-Entwickler können die Leistung und Effizienz verbessern, indem sie Modelle entsprechend der Komplexität der Aufgabe auswählen, Eingabeaufforderungen so organisieren, dass Caching-Möglichkeiten optimal genutzt werden, und unnötigen Kontext einschränken. Außerdem können sie deterministischen Code für Aufgaben verwenden, die Präzision erfordern, und strukturierte Speichersysteme implementieren, die relevante Informationen abrufen, ohne den gesamten Gesprächsverlauf immer wieder neu verarbeiten zu müssen.