Trend-Themen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Transkription: Warum große Sprachmodelle keine Software wirklich erstellen können
Autor: Conrad Irwin
Eine Sache, mit der ich viel Zeit verbracht habe, ist die Befragung von Software-Ingenieuren. Das ist offensichtlich eine anspruchsvolle Aufgabe, und ich kann nicht sagen, dass ich ein Geheimrezept habe; aber diese Erfahrung hat mir tatsächlich Zeit gegeben, darüber nachzudenken, was ein effizienter Software-Ingenieur wirklich tut.
Der Kernzyklus der Softwareentwicklung
Wenn man einen echten Experten beobachtet, stellt man fest, dass sie ständig die folgenden Schritte in einem Zyklus ausführen:
* Ein mentales Modell über die Anforderungen aufbauen.
* Code schreiben (hoffentlich?!), der die Anforderungen erfüllt.
* Ein mentales Modell über das tatsächliche Verhalten des Codes aufbauen.
* Die Unterschiede zwischen beiden herausfinden und dann den Code (oder die Anforderungen) aktualisieren.
Es gibt viele Möglichkeiten, diese Schritte zu erledigen, aber das Besondere an effizienten Ingenieuren ist, dass sie in der Lage sind, klare mentale Modelle zu erstellen und aufrechtzuerhalten.
Wie schneiden große Sprachmodelle ab?
Um fair zu sein, große Sprachmodelle sind ziemlich gut im Schreiben von Code. Wenn man auf ein Problem hinweist, sind sie auch gut darin, den Code zu aktualisieren. Sie können alles tun, was echte Ingenieure tun: Code lesen, Tests schreiben und ausführen, Protokolle hinzufügen und (vermutlich) einen Debugger verwenden.
Aber was sie nicht können, ist, ein klares mentales Modell aufrechtzuerhalten.
Große Sprachmodelle geraten in endlose Verwirrung: Sie nehmen an, dass der Code, den sie geschrieben haben, tatsächlich funktioniert; wenn Tests fehlschlagen, können sie nur raten, ob sie den Code oder den Test reparieren sollen; wenn sie frustriert sind, löschen sie einfach alles und fangen von vorne an.
Das steht im krassen Gegensatz zu den Eigenschaften, die ich von Ingenieuren erwarte.
Software-Ingenieure testen während der Arbeit. Wenn ein Test fehlschlägt, können sie ihr mentales Modell heranziehen, um zu entscheiden, ob sie den Code oder den Test reparieren oder vor der Entscheidung mehr Informationen sammeln sollten. Wenn sie frustriert sind, können sie Hilfe suchen, indem sie mit anderen kommunizieren. Obwohl sie manchmal auch alles löschen und von vorne anfangen, geschieht dies erst, nachdem sie ein klareres Verständnis des Problems erlangt haben.
Aber das wird bald erledigt sein, oder?
Wird sich das ändern, wenn die Modelle leistungsfähiger werden? Vielleicht?? Aber ich denke, das erfordert eine grundlegende Veränderung in der Art und Weise, wie Modelle aufgebaut und optimiert werden. Das Modell, das für die Softwareentwicklung benötigt wird, ist nicht nur eines, das Code generieren kann.
Wenn eine Person auf ein Problem stößt, kann sie vorübergehend den gesamten Kontext beiseitelegen, sich auf die Lösung des aktuellen Problems konzentrieren und dann ihre Gedanken wieder aufnehmen, um zum übergeordneten Problem zurückzukehren. Sie können auch zwischen dem großen Ganzen und den mikroskopischen Details hin und her wechseln, vorübergehend Details ignorieren, um sich auf das Gesamtbild zu konzentrieren, und bei Bedarf in die Tiefe gehen. Wir werden nicht effizienter, nur weil wir mehr Wörter in unser "Kontextfenster" stopfen; das macht uns nur verrückt.
Selbst wenn wir mit riesigen Kontexten umgehen können, wissen wir, dass diese generativen Modelle derzeit mehrere ernsthafte Probleme haben, die ihre Fähigkeit, ein klares mentales Modell aufrechtzuerhalten, direkt beeinträchtigen:
* Kontextverlust: Modelle sind nicht gut darin, ignorierte Kontextinformationen zu erkennen.
* Neuheitsbias: Sie sind stark von Neuheitsbias betroffen, wenn sie mit Kontextfenstern umgehen.
* Halluzinationen: Sie neigen dazu, "Details" zu "halluzinieren", die nicht existieren sollten.
Diese Probleme sind vielleicht nicht unüberwindbar, und Forscher arbeiten daran, den Modellen Gedächtnis zu verleihen, damit sie ähnliche Denktechniken wie wir anwenden können. Aber leider können sie derzeit (nach einer bestimmten Komplexität) tatsächlich nicht verstehen, was passiert.
Sie können keine Software erstellen, weil sie nicht in der Lage sind, gleichzeitig zwei ähnliche "mentale Modelle" aufrechtzuerhalten, die Unterschiede zu erkennen und zu entscheiden, ob sie den Code oder die Anforderungen aktualisieren sollen.
Was ist also jetzt zu tun?
Offensichtlich sind große Sprachmodelle für Software-Ingenieure nützlich. Sie können schnell Code generieren und zeigen hervorragende Leistungen bei der Integration von Anforderungen und Dokumentation. Für bestimmte Aufgaben ist das bereits ausreichend: Die Anforderungen sind klar genug, das Problem ist einfach genug, und sie können es in einem Rutsch erledigen.
Das gesagt, für jede Aufgabe mit ein wenig Komplexität können sie nicht präzise genug den erforderlichen Kontext aufrechterhalten, um durch Iteration letztendlich eine praktikable Lösung zu produzieren. Du, als Software-Ingenieur, musst weiterhin dafür sorgen, dass die Anforderungen klar sind und dass der Code tatsächlich die Funktionen erfüllt, die er verspricht.
Bei Zed glauben wir, dass die Zukunft darin besteht, dass Menschen und KI-Agenten gemeinsam Software entwickeln können. Aber wir sind fest davon überzeugt (zumindest im Moment), dass du der Fahrer am Steuer bist und große Sprachmodelle nur ein weiteres Werkzeug sind, das dir zur Verfügung steht.
62,81K
Top
Ranking
Favoriten