BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Complex Instructions BigCodeBench: Benchmarking der Codegenerierung mit diversen Funktionsaufrufen und komplexen Anweisungen

Das automatisierte Software Engineering wurde durch die jüngsten Fortschritte in den großen Sprachmodellen (LLMs) für das Programmieren erheblich gefördert. Obwohl aktuelle Benchmarks gezeigt haben, dass LLMs verschiedene Software-Engineering-Aufgaben wie menschliche Entwickler ausführen können, sind die meisten ihrer Bewertungen auf kurze und selbstständige algorithmische Aufgaben beschränkt. Die Lösung anspruchsvoller und praktischer Programmieraufgaben erfordert jedoch die Fähigkeit, vielfältige Funktionsaufrufe als Werkzeuge zu nutzen, um Funktionalitäten wie Datenanalyse und Webentwicklung effizient umzusetzen. Zudem bedarf es zusammengesetzten Denkens, um komplexe Anweisungen genau zu verstehen und mehrere Werkzeuge zur Lösung einer Aufgabe einzusetzen. Beide dieser Eigenschaften stellen eine große Herausforderung für LLMs dar.Um abzuschätzen, wie gut LLMs anspruchsvolle und praktische Programmieraufgaben lösen können, stellen wir Bench vor, einen Benchmark, der LLMs dazu herausfordert, mehrere Funktionsaufrufe als Werkzeuge aus 139 Bibliotheken und 7 Domänen für 1.140 feingranulare Programmieraufgaben zu verwenden. Um LLMs streng zu bewerten, umfasst jede Programmieraufgabe durchschnittlich 5,6 Testfälle mit einem Zweigabdeckungsgrad von 99 %. Darüber hinaus schlagen wir eine natürlichsprachorientierte Variante von Bench vor, nämlich Benchi, die die Original-Docstrings automatisch in kurze Anweisungen mit wesentlichen Informationen transformiert.Unsere umfangreiche Auswertung von 60 LLMs zeigt, dass diese Modelle noch nicht in der Lage sind, komplexe Anweisungen zu befolgen und Funktionsaufrufe präzise zu verwenden; ihre Scores erreichen maximal 60 % und liegen deutlich unter der menschlichen Leistung von 97 %. Diese Ergebnisse unterstreichen die Notwendigkeit weiterer Fortschritte in diesem Bereich.