Dieser Artikel ist Teil unserer Exklusivität IEEE Journal Watch Series in Partnerschaft mit IEEE Xplore.
Programmierer haben Jahrzehnte damit verbracht, Code für KI-Modelle zu schreiben, und heute schließt sich der Kreis der KI zum Schreiben von Code. Aber wie schneidet ein KI-Codegenerator im Vergleich zu einem menschlichen Programmierer ab?
Eine in der Juni-Ausgabe von veröffentlichte Studie IEEE-Transaktionen zum Software-Engineering bewertete den von OpenAIs ChatGPT erzeugten Code hinsichtlich Funktionalität, Komplexität und Sicherheit. Die Ergebnisse zeigen, dass ChatGPT bei der Erstellung von funktionierendem Code ein sehr breites Erfolgsspektrum hat – mit einer Erfolgsquote zwischen 0,66 % und 89 % – abhängig von der Schwierigkeit der Aufgabe, der Sprachprogrammierung und einer Reihe anderer Faktoren.
Obwohl der KI-Generator in einigen Fällen besseren Code produzieren kann als Menschen, zeigt die Analyse auch einige Sicherheitsprobleme bei KI-generiertem Code.
Yutian Tang, Professor an der Universität Glasgow, nahm an der Studie teil. Er weist darauf hin, dass die KI-basierte Codegenerierung einige Vorteile im Hinblick auf die Verbesserung der Produktivität und die Automatisierung von Softwareentwicklungsaufgaben bieten könnte, es sei jedoch wichtig, die Stärken und Grenzen dieser Modelle zu verstehen.
„Durch die Durchführung einer umfassenden Analyse können wir potenzielle Probleme und Einschränkungen aufdecken, die bei der ChatGPT-basierten Codegenerierung auftreten … [and] „Produktionstechniken verbessern“, sagt Tang.
Um diese Einschränkungen genauer zu untersuchen, versuchte sein Team, die Fähigkeit von GPT-3.5 zu testen, 728 Codierungsprobleme der LeetCode-Testplattform in fünf Programmiersprachen zu lösen: C, C++, Java, JavaScript und Python.
„Eine vernünftige Hypothese, warum ChatGPT Algorithmusprobleme vor 2021 besser lösen kann, ist, dass diese Probleme häufig im Trainingsdatensatz beobachtet werden. » – Yutian Tang, Universität Glasgow
Insgesamt war ChatGPT recht effektiv bei der Lösung von Problemen in den verschiedenen Codierungssprachen, insbesondere aber bei der Lösung von Codierungsproblemen, die vor 2021 auf LeetCode existierten. Es war beispielsweise in der Lage, funktionierenden Code für einfache, mittlere und schwere Probleme mit zu erstellen Erfolgsraten von etwa 89, 71 bzw. 40 %.
„Wenn es jedoch nach 2021 zu Algorithmusproblemen kommt, wird die Fähigkeit von ChatGPT, funktional korrekten Code zu generieren, beeinträchtigt. Manchmal versteht er die Bedeutung der Fragen nicht, selbst bei einfachen Aufgaben“, bemerkt Tang.
Beispielsweise sank die Fähigkeit von ChatGPT, Arbeitscode für „einfache“ Codierungsprobleme zu erstellen, nach 2021 von 89 % auf 52 %. Und auch die Fähigkeit, Arbeitscode für „schwere“ Probleme zu generieren, sank nach diesem Zeitraum von 40 % auf 0,66 % .
„Eine vernünftige Hypothese, warum ChatGPT Algorithmusprobleme vor 2021 besser lösen kann, ist, dass diese Probleme häufig im Trainingsdatensatz beobachtet werden“, sagt Tang.
Im Wesentlichen ist ChatGPT im Zuge der Weiterentwicklung der Codierung noch nicht mit neuen Problemen und Lösungen konfrontiert worden. Ihm fehlen die kritischen Denkfähigkeiten eines Menschen und er kann nur Probleme lösen, mit denen er bereits konfrontiert ist. Dies könnte erklären, warum es ältere Codierungsprobleme viel besser lösen kann als neuere.
„ChatGPT generiert möglicherweise falschen Code, weil es die Bedeutung von Algorithmusproblemen nicht versteht. » – Yutian Tang, Universität Glasgow
Interessanterweise ist ChatGPT in der Lage, Code mit geringeren Ausführungszeiten und Speicheraufwand zu generieren als mindestens 50 % menschlicher Lösungen für dieselben LeetCode-Probleme.
Die Forscher untersuchten auch die Fähigkeit von ChatGPT, eigene Codierungsfehler zu korrigieren, nachdem sie Feedback von LeetCode erhalten hatten. Sie wählten nach dem Zufallsprinzip 50 Codierungsszenarien aus, in denen ChatGPT zunächst falsche Codierung generierte, entweder weil es den Inhalt nicht verstand oder weil es das Problem nicht lösen konnte.
Obwohl ChatGPT bei der Behebung von Kompilierungsfehlern effektiv war, war es im Allgemeinen nicht effektiv bei der Behebung seiner eigenen Fehler.
„ChatGPT generiert möglicherweise falschen Code, weil es die Bedeutung von Algorithmusproblemen nicht versteht. Daher reichen diese einfachen Fehlerrückmeldungsinformationen nicht aus“, sagt Tang.
Die Forscher stellten außerdem fest, dass der von ChatGPT generierte Code eine Reihe von Schwachstellen aufwies, beispielsweise einen fehlenden Nulltest, die meisten davon jedoch leicht behoben werden konnten. Ihre Ergebnisse zeigen auch, dass in C generierter Code am komplexesten war, gefolgt von C++ und Python, die eine ähnliche Komplexität wie von Menschen geschriebener Code aufweisen.
Laut Tangs ist es aufgrund dieser Erkenntnisse wichtig, dass Entwickler, die ChatGPT verwenden, zusätzliche Informationen bereitstellen, um ChatGPT dabei zu helfen, Probleme besser zu verstehen oder Schwachstellen zu vermeiden.
„Wenn Entwickler beispielsweise auf komplexere Programmierprobleme stoßen, können sie so viel relevantes Wissen wie möglich bereitstellen und ChatGPT in der Eingabeaufforderung mitteilen, auf welche potenziellen Schwachstellen man achten sollte“, sagt Tang.
Artikel auf Ihrer Website
Verwandte Artikel im Internet