toplogo
התחברות

Ein skalierbares Ausführungsbasiertes Benchmark-Framework für Codegeneration


מושגי ליבה
Ein Framework zur Erstellung skalierbarer und anpassbarer Ausführungsbasierter Benchmarks für Codegeneration, das nur minimale menschliche Anleitung erfordert.
תקציר

Das Papier präsentiert CodeBenchGen, ein Framework zur Erstellung von Ausführungsbasierten Codegeneration-Benchmarks. Das Framework verwendet einen großen Sprachmodell (LLM), um beliebige Codeausschnitte in Evaluationsbeispiele umzuwandeln, einschließlich Testfällen für die Ausführungsevaluierung.

Das Framework besteht aus vier Schritten:

  1. Sandboxing: Das LLM wird verwendet, um den Quellcode in eine isolierte Umgebung einzubetten, in der er ausgeführt werden kann.
  2. Testgenerierung: Das LLM generiert Testfälle, um die Funktionalität des generierten Codes zu überprüfen.
  3. Iterative Ausführung und Debugging: Der generierte Code und die Tests werden iterativ ausgeführt und vom LLM debuggt, bis alle Testfälle bestanden werden.
  4. Nachbearbeitung: Natürlichsprachliche Anweisungen und zusätzliche Testfälle werden generiert.

Als Demonstration erstellt das Team den Exec-CSN-Benchmark, der 1.931 Beispiele aus 367 GitHub-Repositorys umfasst. Eine Analyse zeigt, dass Exec-CSN eine hohe Domänenvielfalt aufweist und Beispiele mit unterschiedlichen Schwierigkeitsgraden enthält, von denen 81,3% von Menschen gelöst werden können.

Experimente mit 10 Codegeneration-Modellen zeigen, dass das beste Modell nur eine Pass@1-Punktzahl von 37,21% erreicht, was die Komplexität des Datensatzes verdeutlicht. Die Analyse zeigt, dass die Modelle insbesondere bei Beispielen mit längeren Zielausdrücken, mehr Funktionsaufrufen oder externen Bibliotheken schlechter abschneiden.

edit_icon

התאם אישית סיכום

edit_icon

כתוב מחדש עם AI

edit_icon

צור ציטוטים

translate_icon

תרגם מקור

visual_icon

צור מפת חשיבה

visit_icon

עבור למקור

סטטיסטיקה
Die durchschnittliche Anzahl der Codetokens beträgt 496,53, die durchschnittliche Tiefe des AST 9,38 und die durchschnittliche Anzahl der Variablen 12,03. Die Anzahl der Codetokens reicht von 83 bis 1.529.
ציטוטים
"To facilitate evaluation of code generation systems across diverse scenarios, we present CodeBenchGen, a framework to create scalable execution-based benchmarks that only requires light guidance from humans." "Results show that the best model (GPT-4-turbo) only achieves 37.21 Pass@1, indicating that there is still room for improvement on our dataset."

תובנות מפתח מזוקקות מ:

by Yiqing Xie,A... ב- arxiv.org 04-02-2024

https://arxiv.org/pdf/2404.00566.pdf
CodeBenchGen

שאלות מעמיקות

Wie könnte man die Erstellung von Ausführungsbasierten Benchmarks weiter automatisieren, um die Skalierbarkeit und Anpassungsfähigkeit zu erhöhen?

Um die Erstellung von Ausführungsbasierten Benchmarks weiter zu automatisieren und die Skalierbarkeit zu verbessern, könnten folgende Ansätze verfolgt werden: Automatisierte Codefragmentauswahl: Implementierung eines Mechanismus zur automatischen Auswahl von Codefragmenten aus einer Vielzahl von Quellen wie GitHub-Repositories oder Online-Plattformen. Erweiterte Verwendung von LLMs: Integration fortschrittlicher großer Sprachmodelle (LLMs) für die automatische Generierung von Testfällen, Anweisungen und Kontexten für die Benchmarks. Iterative Verbesserung: Implementierung eines iterativen Prozesses, bei dem die generierten Beispiele automatisch überprüft und bei Bedarf verbessert werden, um sicherzustellen, dass sie den Anforderungen entsprechen. Automatisierte Testfallgenerierung: Nutzung von LLMs oder anderen Techniken zur automatisierten Generierung von Testfällen, um die Testabdeckung und Qualität der Benchmarks zu verbessern. Integration von Metriken: Einbeziehung zusätzlicher Metriken wie Codekomplexität, Abhängigkeiten, oder Testabdeckung, um die Qualität und Relevanz der Benchmarks zu bewerten.

Welche zusätzlichen Metriken oder Analysen könnten verwendet werden, um die Komplexität und Nützlichkeit der generierten Beispiele besser zu bewerten?

Zur Bewertung der Komplexität und Nützlichkeit der generierten Beispiele könnten folgende zusätzliche Metriken und Analysen verwendet werden: Codekomplexität: Verwendung von Metriken wie zyklomatische Komplexität, Verschachtelungstiefe oder Anzahl der Variablen, um die Komplexität des generierten Codes zu bewerten. Abhängigkeitsanalyse: Untersuchung der externen Abhängigkeiten und Bibliotheken, die im generierten Code verwendet werden, um die Integration und Wartbarkeit zu bewerten. Testabdeckung: Bewertung der Testabdeckung des generierten Codes, um sicherzustellen, dass alle relevanten Pfade und Funktionen abgedeckt sind. Benutzerfeedback: Einbeziehung von Feedback von Entwicklern oder Testern, um die Benutzerfreundlichkeit, Verständlichkeit und Nützlichkeit der generierten Beispiele zu bewerten. Vergleichsanalyse: Durchführung von Vergleichen mit anderen Benchmarks oder Referenzdatensätzen, um die Qualität und Relevanz der generierten Beispiele in einem breiteren Kontext zu bewerten.

Wie könnten Techniken aus dem Bereich des Programmsynthese eingesetzt werden, um die Qualität und Relevanz der generierten Testfälle weiter zu verbessern?

Techniken aus dem Bereich der Programmsynthese könnten verwendet werden, um die Qualität und Relevanz der generierten Testfälle zu verbessern, indem: Automatische Testfallgenerierung: Implementierung von Programmsynthese-Algorithmen zur automatischen Generierung von Testfällen aus den Spezifikationen oder Anforderungen. Symbolische Ausführung: Verwendung von symbolischer Ausführungstechniken, um Testfälle zu generieren, die verschiedene Pfade im Code abdecken und Randfälle identifizieren. Einsatz von Constraints: Integration von Constraints oder Einschränkungen in die Testfallgenerierung, um sicherzustellen, dass die generierten Testfälle bestimmte Kriterien erfüllen oder bestimmte Szenarien abdecken. Optimierungsalgorithmen: Anwendung von Optimierungsalgorithmen aus dem Bereich der Programmsynthese, um die Effizienz und Wirksamkeit der generierten Testfälle zu verbessern. Feedbackschleifen: Implementierung von Feedbackschleifen, um die generierten Testfälle basierend auf den Ergebnissen der Ausführung oder manuellen Überprüfung kontinuierlich zu verbessern und anzupassen.
0
star