LLM Code Smells: A Taxonomy and Detection Approach
Dieser Beitrag stellt eine verfeinerte Taxonomie von neun Code-Smells für Large Language Models vor und führt SpecDetect4LLM ein, ein statisches Analysewerkzeug, das bei der Erkennung dieser Integrationsprobleme in 73,5 % der 692 analysierten Open-Source-Projekte eine hohe Präzision und Abdeckung aufweist.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie bauen ein Haus, aber anstatt einen menschlichen Architekten zu engagieren, beauftragen Sie einen superscharfsinnigen, unglaublich schnellen, aber leicht unberechenbaren Roboter, Ihnen beim Entwerfen von Räumen und der Auswahl von Möbeln zu helfen. Dieser Roboter ist ein Large Language Model (LLM). Es ist erstaunlich, aber wenn Sie ihm keine klaren Anweisungen geben oder seine Arbeit nicht überprüfen, könnte es eine Tür dort bauen, wo ein Fenster sein sollte, oder Materialien verwenden, die im Regen auseinanderfallen.
Dieser Artikel handelt von den „schlechten Gewohnheiten" (oder „Code-Riechstoffen"), die auftreten, wenn menschliche Entwickler versuchen, diese Roboter in ihrer Software einzusetzen. Die Forscher stellten fest, dass genau wie eine unordentliche Küche zu verbranntem Essen führen kann, unordentlicher Code bei der Kommunikation mit einer KI zu Software führen kann, die abstürzt, zu viel Geld kostet oder falsche Antworten liefert.
Hier ist eine Aufschlüsselung ihrer Erkenntnisse mit einfachen Analogien:
1. Das Problem: „Die schlechten Gewohnheiten des Roboters"
Die Forscher identifizierten 9 spezifische schlechte Gewohnheiten, die Entwickler beim Sprechen mit diesen KI-Robotern machen. Sie gruppierten sie in drei Kategorien, ähnlich wie das Sortieren von Werkzeugen in eine Werkzeugkiste:
Die „strukturellen" Gewohnheiten (Wie Sie die Frage stellen):
- Analogie: Stellen Sie sich vor, Sie fragen einen Koch: „Machen Sie mir das Abendessen", ohne ihm zu sagen, ob Sie vegetarisch, scharf essen möchten oder ob Sie eine Nussallergie haben.
- Der Riechstoff: Keine Systemnachricht. Entwickler vergessen oft, der KI eine „Stellenbeschreibung" (eine Systemnachricht) zu geben, die ihr sagt, wer sie sein soll (z. B. „Sie sind ein hilfreicher Mathe-Nachhilfelehrer"). Ohne dies verhält sich der Roboter wie ein generischer Chatbot statt wie ein Spezialist.
- Der Riechstoff: Anonyme Aufrufe. Stellen Sie sich vor, Sie rufen ein Restaurant an, geben aber Ihren Namen nicht an. Wenn das Essen schlecht ist, weiß das Restaurant nicht, wen es zurückrufen soll. Entwickler vergessen oft, eine „Benutzer-ID" an die KI-Anfrage anzuhängen, was es unmöglich macht, später nachzuvollziehen, wer das Problem verursacht hat.
Die „Daten"-Gewohnheiten (Was Sie senden und zurückbekommen):
- Analogie: Sie bitten einen Roboter, Ihre Post zu sortieren, schicken ihm aber statt nur der Briefe eine riesige, ungeöffnete Kiste voller Junk-Mail.
- Der Riechstoff: Keine strukturierte Ausgabe. Sie bitten die KI um eine Liste von Zutaten in einem bestimmten Format (wie einer JSON-Liste), zwingen sie aber nicht, dieses Format einzuhalten. Sie könnte stattdessen einen Textabsatz liefern. Ihre Software versucht dann, diesen Absatz als Liste zu lesen und stürzt ab.
- Der Riechstoff: Rohes Vision-Payload. Wenn Sie die KI bitten, ein Foto eines Fehlers in Ihrem Code anzusehen, ist es verschwenderisch, den gesamten 4K-Screenshot Ihres Monitors zu senden. Es ist wie eine ganze Bibliothek zu versenden, um nach einem Buch zu fragen. Sie sollten das Bild zuerst nur auf den Fehler zuschneiden.
Die „Protokoll"-Gewohnheiten (Die Regeln des Spiels):
- Analogie: Ein Auto fahren, ohne eine Geschwindigkeitsbegrenzung festzulegen oder zu prüfen, welches Modell Sie fahren, unter der Annahme, es werde immer dasselbe sein.
- Der Riechstoff: Keine Modellversion-Pinning. Sie sagen dem Roboter: „Verwenden Sie das 'GPT-4'-Modell." Aber das Unternehmen könnte „GPT-4" morgen auf einen völlig anderen Roboter aktualisieren. Ihr Code bricht, weil der Roboter seine Persönlichkeit geändert hat. Sie müssen ihn auf eine spezifische Version festnageln (wie „GPT-4 von November 2024").
- Der Riechstoff: Unbegrenzte Max-Metriken. Sie bitten den Roboter, eine Geschichte zu schreiben, sagen ihm aber nicht, dass er nach 500 Wörtern aufhören soll. Er könnte ewig weiterschreiben und dabei Ihr ganzes Geld und Ihre Zeit aufbrauchen.
- Der Riechstoff: Temperatur nicht gesetzt. Dies steuert, wie „kreativ" oder „zufällig" der Roboter ist. Wenn Sie es nicht setzen, verwendet der Roboter eine Standardeinstellung, die sich morgen ändern könnte, wodurch sich Ihre Software an verschiedenen Tagen unterschiedlich verhält.
2. Die Lösung: Der „Spürhund" (SpecDetect4LLM)
Die Forscher entwickelten ein Tool namens SpecDetect4LLM. Stellen Sie sich dies als einen Spürhund vor, der durch Ihren Code läuft.
- Er führt den Code nicht aus; er betrachtet nur die Anweisungen (die „statische Analyse").
- Er schnüffelt herum, um zu sehen, ob Sie eine dieser 9 schlechten Gewohnheiten gemacht haben.
- Wenn er eine schlechte Gewohnheit findet, bellt er (markiert sie), damit der Entwickler sie beheben kann, bevor die Software live geht.
3. Die Ergebnisse: Wie gut ist der Hund?
Die Forscher testeten diesen Spürhund an 692 verschiedenen Softwareprojekten (über 171.000 Code-Dateien). Hier ist, was sie fanden:
Wie oft treten diese schlechten Gewohnheiten auf?
- 73,5 % der Projekte hatten mindestens eine dieser schlechten Gewohnheiten. Es ist wie in ein Haus zu gehen und festzustellen, dass 3 von 4 einen undichten Wasserhahn haben. Es ist sehr verbreitet.
- Die häufigste schlechte Gewohnheit war das Nicht-Festnageln der Modellversion (Verwendung eines generischen Namens statt eines spezifischen).
Wie gut ist der Spürhund darin, sie zu finden?
- Präzision (Genauigkeit): Wenn der Hund bellt, liegt er 91,3 % der Zeit richtig. Er bellt selten die falsche Wölfe.
- Recall (Vollständigkeit): Der Hund findet etwa 71,8 % der tatsächlichen schlechten Gewohnheiten. Er verpasst einige, fängt aber die Mehrheit.
4. Warum ist das wichtig?
Der Artikel argumentiert, dass diese schlechten Gewohnheiten, obwohl sie nicht immer sofort zum Absturz der Software führen, wie Rost an einem Auto sind.
- Sie machen das Auto später schwerer zu reparieren (Wartbarkeit).
- Sie lassen das Auto langsamer laufen oder mehr Benzin kosten (Leistung).
- Sie lassen das Auto an regnerischen Tagen unvorhersehbar reagieren (Zuverlässigkeit).
- Sie machen das Auto unsicher, wenn sich die Straßenverhältnisse ändern (Robustheit).
Zusammenfassung
Die Forscher erstellten ein „Speisekarte" mit 9 häufigen Fehlern, die Entwickler bei der Verwendung von KI machen, bauten ein Tool, um diese Fehler automatisch zu finden, und bewiesen, dass diese Fehler in der Softwarewelt allgegenwärtig sind. Ihr Tool ist sehr gut darin, sie zu erkennen und hilft Entwicklern, Software zu bauen, die sicherer, günstiger und zuverlässiger ist, wenn sie KI einsetzt.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.