Kann ChatGPT Ihr BFF-Code-Begleiter sein?

Jan 26 2023
Die Handlung. Eric Clapton sagte einmal: „Guter Blues braucht nur drei Dinge – einen Mann, eine Gitarre und einen Sonnenuntergang.“

Die Handlung . Eric Clapton sagte einmal: „Guter Blues braucht nur drei Dinge – einen Mann, eine Gitarre und einen Sonnenuntergang.“ Ich habe auch immer an diese trinitarische Theorie über das Programmieren geglaubt: „Gute Programmierung erfordert nur drei Dinge – einen Menschen, Emacs und einen Code-Begleiter auf menschlicher Ebene.“ Diese Dreieinigkeit ist wie extremes Paarprogrammieren mit einer Person in der heißesten neuen Programmiersprache ... Englisch. Die Person ist in diesem Fall ein Programm.

Heute sind wir in der Programmierung weit von dieser Vision entfernt – wir brauchen Github, Gists, W3Cschool, Sprachspielplätze, Replits, StackOverflow, verschiedene IDEs mit Lernkurven und überflüssigem UX-Bling und so weiter.

Die Frage ist dann: Ist chatGPT (oder Synonym) gut genug, um Ihr einziger Code-Begleiter (Ihre beste Freundin für extremes Programmieren) zu sein?

Wenn nicht, was ersetzt es bereits und was kommt noch?

Die Übung . Was mich von meinem Neujahrsvorsatz abgebracht hat, nicht noch mehr Lärm um chatGPT zu machen, war dieser Juckreiz, den ich loswerden musste. Und es stellte sich heraus, dass die Lösung a) den Schwierigkeitsgrad einer CS-Studentenaufgabe für Erstsemester hat und b) eine Reihe von Teilen enthält, von denen ich weiß, dass ich sie entweder nicht kannte oder eingerostet war (Langchain, Vektorspeicher-APIs und so weiter) – also Eine Übung, die gut genug ist, um zu testen, wie hilfreich chatGPT im Vergleich zu den oben aufgeführten Tools sein kann.

Mein Anwendungsfall. Ich sammle immer wieder Aufsätze zu bestimmten Themen (20 bis 30 Stück auf einmal) und verschiebe die Lektüre, weil ich nicht in der Lage bin, einen zusammenhängenden Zeitblock auszublenden. Insbesondere habe ich über die Feiertage eine Reihe von Artikeln zum Thema Neurostimulation gesammelt, um besser zu verstehen, ob Musks Neuralink bahnbrechend war oder ob er den bekannten Stand der Technik kommerzialisierte. Da ich nur über sehr geringe Neuro-Vokabeln verfüge, wurde die Aufgabe, die Leseliste zu lesen, immer wieder aufgeschoben.

Daher der Gedanke: Schreiben Sie eine einfache semantische Suchmaschine und ein Frage-Antwort-System, das ausschließlich mit meinem Korpus an Aufsätzen funktioniert.

Sobald das oben Genannte erledigt ist, könnte ich die Papiere abfragen und sie so lesen, wie ich im Internet surfe (stückweise, basierend auf der aktuellen Neugier) und nicht wie ein Buch (von Anfang bis Ende).

Lösung. Sie benötigen ein paar Teile – vereinfachte Dokumentenaufteilung im Korpus zur Vereinfachung der Indizierung, moderne Indizierung (FAISS oder besser), einen Vektorspeicher zur Beschleunigung der Abfrageverarbeitung und dann ein Konversations-Overlay über den Shards mit Verweisen zurück auf den Originalinhalt – um den Verbraucherabfrageprozess intuitiv zu gestalten. Sie können dies auf viele Arten tun, aber eine Möglichkeit besteht darin, alle Teile von OpenAI zu beziehen und sie mit Eingabeaufforderungsketten miteinander zu verketten.

Langchain ist ein neues Paket, das die Verschmelzung von LLMs und traditionellen Dokumentenspeichern vereinfacht und es somit zu einer guten Grundlage für das Schreiben dieser benutzerdefinierten semantischen Suchmaschine macht. Die Kernidee, die dadurch vereinfacht wird, ist das Konzept der Eingabeaufforderungsketten (stellen Sie sich das als eine Version einer Regel-Engine des 21. Jahrhunderts vor, bei der die Regeln jedoch mit LLMs funktionieren). Insbesondere bietet es eine sogenannte Data Augmented Generation-Prompt-Verkettung , die einen Großteil der folgenden Pipeline vereinfacht, mit der Standardannahme, dass alle Dienste (Textaufteilung, Zusammenfassung, Indizierung usw.) von OpenAI stammen. Offensichtlich gibt es Schnittstellen in natürlicher Sprache kostenlos, ebenso wie Mehrsprachigkeit, ebenso wie die Kreativität der Reaktion (wenn Sie die OpenAI-Temperatur auf etwas anderes als 0 einstellen).

Was hat chatGPT für mich getan? Anstatt die OpenAPI- und Langchain-Dokumentation zu lesen, beschloss ich, sie auf „sokratische Weise“ zu lernen, indem ich im Laufe der Zeit einfach chatGPT fragte. Die Antworten zu Konzepten (sowie zu einfachen Dingen wie der Programmierung von OpenAI-Schlüsseln und der Optimierung der Kosten von OpenAI-Aufrufen) waren überraschend überzeugend. Der Code, den es geschrieben hat, war 80 für 20 gut, und ich bin nicht zu StackOverflow gegangen, um einen schnellen Einblick in Dinge zu bekommen, die ich zwar wusste, aber vergessen habe. Überraschenderweise war die Integration mit Github schlecht, und ich habe mich schließlich zur Klärung im Langchain-Quellcode umgesehen (das wird Microsoft mit dem „neuen Deal“ im Handumdrehen beheben). Eine Zusammenfassung der Dinge, die es für mich ersetzt hat (oder auch nicht) (in den 15–20 chatGPT-Eingabeaufforderungen, die unsere Paarprogrammierung ausmachten), ist wie folgt.

Also ... auf der trinitarischen Skala. Wir befinden uns noch nicht im Nirvana-Zustand des menschlichen Begleiters, sondern befinden uns in einem nützlichen Zwischenzustand der „wissensbeschleunigten Programmierung“. Ich wette jedoch, dass chatGPT (unter welchem ​​LLM-Namen auch immer) einen Punkt erreichen wird, an dem codespezifische Begleiter (wie CoPilot) möglicherweise nicht mehr benötigt werden oder mit chatGPT verschmelzen, sodass sie eine menschliche Persönlichkeit haben, die Software mitentwickelt mit Ihnen „als Person“ (nicht als Browser-Plug-in).