- Um LLMs in großen Codebasen effektiv zu nutzen, sind Investitionen in „Guidance“ und „Oversight“ entscheidend
- Guidance liefert Kontext und Rahmenbedingungen, damit das LLM bessere Entscheidungen treffen kann, und Oversight übernimmt die Prüfung der Ergebnisse und gibt die Richtung vor
- Der Aufbau einer Prompt-Bibliothek ist wichtig, damit das LLM die Regeln, Dokumentation und Best Practices der Codebasis verstehen kann
- Der Umgang mit technischem Schuldenstand sowie Einfachheit, Modularisierung und Konsistenz der Codestruktur sind direkt mit einem besseren Codeverständnis und höherer Produktivität des LLMs verbunden
- Automatisierte Oversight- und Verifikationssysteme zu nutzen, um das LLM bei der Erzeugung sicheren und konsistenten Codes zu unterstützen, ist der Schlüssel zu langfristiger Skalierbarkeit
Zentrale Konzepte für die Skalierung von LLMs
- Wie LLMs auf große Codebasen angewendet werden sollten, ist noch nicht abschließend geklärt, doch Investitionen in Guidance und Oversight werden als der wirksamste Ansatz dargestellt
- Guidance bezeichnet den Kontext und das Umfeld, die dem LLM helfen, die richtigen Entscheidungen zu treffen, während Oversight die erzeugten Ergebnisse überprüft und ihre Richtung korrigiert
Investitionen in Guidance
- Damit ein LLM beim ersten Versuch hochwertigen Code erzeugt, also „One-Shotting“ erreicht, braucht es klare Guidance
- Umgekehrt ist es ineffiziente Nacharbeit (Rework), wenn das Ergebnis ungeeignet ist und manuell korrigiert werden muss
- Da ein LLM alle Entscheidungen im Code erzeugt — Variablennamen, Funktionsstruktur, Tech-Stack usw. — ist es ideal, wenn der Prompt nur die Geschäftsanforderungen enthält und alles andere ableitbar oder kodiert ist
Aufbau einer Prompt-Bibliothek
- Eine Prompt-Bibliothek ist eine Sammlung von Kontexten für das LLM, darunter Dokumentation, Best Practices und strukturelle Übersichten der Codebasis
- Jedes Mal, wenn die Ausgabe des LLMs danebenliegt, sollte geprüft werden, „was klarer hätte formuliert werden müssen“, und dies der Bibliothek hinzugefügt werden
- Wichtig ist ein Gleichgewicht zwischen Vollständigkeit und Prägnanz
- Im Beispiel werden Dokumente wie
@prompts/How_To_Write_Views.md und @prompts/The_API_File.md dem LLM bereitgestellt, um die Feature-Entwicklung anzuleiten
- Prompts sollten ausreichend konkret sein, trotzdem muss jede Zeile des erzeugten Codes überprüft werden
Umgebung und Codequalität
- Eine Codebasis mit vielen technischen Schulden (technical debt) verringert die Effizienz beim Einsatz von LLMs
- Im Fall von Meta wird erwähnt, dass technische Schulden das Erreichen von Automatisierungszielen erschwerten
- Sauberer Code, Modularisierung, klare Benennung und einfache Strukturen erhöhen das Verständnis und die Genauigkeit des LLMs
- Im Django-Beispiel wird der Einstiegspunkt jeder App in einer Datei namens
_api.py gebündelt, damit das LLM benötigte Funktionen schnell finden kann
- Beispiel:
visit_api.handoff_to_doctor(user) als vereinheitlichter externer Zugriff
- Das
_api-Muster wird in der Prompt-Bibliothek festgehalten, damit das LLM auf die richtige Stelle verwiesen wird
Investitionen in Oversight
- An LLM-Automatisierung sollte man nicht als Ersatz für Engineers denken, sondern als Möglichkeit, das Team zu stärken
- Oversight führt zu Investitionen in Team, Alignment und Workflow
- Auf Teamebene ist die Stärkung der Designkompetenz wichtig, was sich direkt auf die Architekturqualität auswirkt
- Als Methoden zur Stärkung der Designkompetenz werden das Lesen von Büchern, Blogs und Code, das Nachbauen von Meisterwerken sowie praktische Implementierungsübungen genannt
- Beispiel: Erweiterung des Architekturverständnisses durch Codeanalysen von TLDraw und SerenityOS Jakt
Automatisiertes Oversight
- Ein Teil der Designprüfung lässt sich programmatisch automatisieren
- Beispiel: Sofortiges Feedback aus der Umgebung bei Typfehlern oder Regelverstößen
- „Safety“ bedeutet, Abstraktionen zu schützen
- Nach Pierces Definition stellt eine sichere Sprache sicher, dass Programmierer Abstraktionen nicht unbeabsichtigt verletzen
- Beispiel: Eine Regel, die den direkten Zugriff auf interne Dateien zwischen Django-Apps verbietet, wird durch ein AST-basiertes Prüfskript automatisiert
- Unerlaubte Zugriffe wie
from visit import logic.internal_file werden erkannt
Verifikation
- Neben Design und Implementierung ist auch die Verifikationsphase (Code Review, QA) unerlässlich, um Qualität sicherzustellen
- Mit wachsendem Arbeitsvolumen wird die Review-Geschwindigkeit zum Engpass, daher werden folgende Verbesserungen vorgeschlagen
- Die Hürde für QA senken, damit sie auch ohne Entwicklungsumgebung möglich ist
- Eine Umgebung schaffen, in der das Schreiben von Tests einfach ist, etwa durch die Generierung von Testdaten
- Wiederkehrendes PR-Feedback dokumentieren, damit das LLM einen Teil der Reviews automatisch durchführen kann
- Sicherheitsregeln als Framework-Defaults integrieren
Fazit und weitere Beobachtungen
- LLMs funktionieren besonders gut in Greenfield-Projekten
- Weil dort bestehender Kontext fehlt und die Anforderungen an Konsistenz geringer sind
- Je größer ein Projekt wird, desto stärker bestimmen Konsistenz und Modularisierung die Produktivität
- Eine modulare Struktur, die verifizierte Komponenten wiederverwendet, ist der Schlüssel zu effizienter Entwicklung
Noch keine Kommentare.