Entwickler arbeiten an mehreren Bildschirmen

Was ist HumanEval?

HumanEval definiert

HumanEval ist ein Benchmark zur Bewertung der Codegenerierungsfähigkeiten von Large Language Models (LLMs). Es wurde von OpenAI entwickelt, um frühe Versionen der KI-Modelle zu evaluieren, die Codex, den Software-Engineering-Agenten des Unternehmens, unterstützen.

Der HumanEval-Benchmark ist speziell für Python-generierten Code konzipiert. Er geht über die Syntax hinaus und überprüft, ob der erstellte Code sowohl korrekt ist als auch wie beabsichtigt funktioniert.

Das Benchmark-Framework ist im OpenAI HumanEval GitHub-Repository zugänglich. HumanEval verfügt außerdem über eine Bestenliste, die die Leistung verschiedener Codegenerierungsmodelle bewertet, darunter die Claude Suite, Kimi K2, Google Gemma und Gemini, GPT-5 sowie die älteren GPT-4o und GPT-4 sowie die IBM Granite-Familie, unter anderem.

Datensatzstruktur

Der HumanEval-Datensatz besteht aus 164 von Hand geschriebenen Programmierproblemen mit den entsprechenden Komponententests.1 Anhand dieser Probleme wird die Fähigkeit eines Modells beurteilt, Sprache zu verstehen, Zeichenfolgen zu manipulieren, zu suchen und zu sortieren. Sie bewerten zudem Problemlösungsfähigkeiten anhand einfacher Mathematik und komplexer Algorithmen. Diese Programmieraufgaben ähneln den algorithmischen Fragen, Codierungsübungen oder Systemdesign-Herausforderungen, die Softwareentwickler bei technischen Vorstellungsgesprächen durchlaufen.

Jede Code-Generierungsaufgabe enthält folgende Komponenten:

  • Funktionssignatur

  • Docstring

  • Funktionskörper

  • Komponententests

Funktionssignatur

Die Signatur definiert den Namen und die Parameter der Funktion. Als Beispiel ist hier die Signatur für eine Funktion, die das Produkt zweier ganzer Zahlen berechnet:            

def multiply(a, b):

Docstring

Ein Docstring ist eine natürlichsprachliche Aufforderung oder Beschreibung des erwarteten Verhaltens, der Ziele, der Eingaben und Ausgaben der Funktion. Diese Kommentare beschreiben, was eine Funktion bewirkt, und leiten das Modell bei der Generierung von Python-Code an.

Der Docstring der Multiplikationsfunktion lautet beispielsweise:

“””Complete the function that takes two integers as inputs
and returns their product as the output.
Assume the inputs are always valid.
Examples:
multiply(8, 2) must return 16
multiply(0, 777) must return 0
multiply(-32,64) must return -2048
“””

Funktionskörper

Dies ist ein Segment, das dem Code zugewiesen wird, den ein Modell erzeugt. Es enthält die implementierte Lösung für das Problem unter Berücksichtigung der Funktionssignatur und des Docstring.

Komponententests

Diese Testfälle überprüfen die funktionale Korrektheit des generierten Codes in verschiedenen Szenarien. Jeder Test speist eine bestimmte Eingabe in die Funktion ein und vergleicht dann die Ausgabe mit den beabsichtigten Ergebnissen.

Hier sind einige Beispiel-Komponentenests für die Multiplikationsfunktion:

def test_multiply():
    assert multiply(89, 0) == 0
    assert multiply(37, -5) == -185
    assert multiply(66, 17) == 1122

Metriken

Viele Code-LLM-Benchmarks verwenden Methoden, die auch für die Textgenerierung eingesetzt werden, wie zum Beispiel matchbasierte Metriken, die generierte Codebeispiele mit einer Referenzlösung vergleichen. Matchbasierte Metriken berücksichtigen jedoch in der Regel nicht die verschiedenen Möglichkeiten, wie ein Problem gelöst werden kann, von denen jede funktional gleichwertig mit der Referenzlösung sein kann.

Aus diesem Grund setzt der HumanEval-Benchmark auf funktionale Korrektheit: Ein generiertes Codebeispiel gilt als korrekt, wenn es eine Suite von Komponententests besteht. Dieser Ansatz spiegelt die Vorgehensweise von Entwicklern wider, die den Erfolg ihres Codes bewerten, indem sie ihn einer Reihe von Komponententests unterziehen und sicherstellen, dass er jeden einzelnen besteht.

HumanEval misst die funktionale Korrektheit mithilfe der pass@k-Metrik. Für jedes Problem generiert ein Modell k Codebeispiele. Wenn eine dieser Stichproben die Komponententests besteht, gilt das Problem als korrekt gelöst. Die pass@k-Metrik schätzt die Wahrscheinlichkeit, dass mindestens eine der k Stichproben funktional korrekt ist.

AI Academy

Der Aufstieg der generativen KI für Unternehmen

Erfahren Sie mehr über den historischen Aufstieg der generativen KI sowie darüber, was sie für Unternehmen bedeutet.

Einschränkungen von HumanEval

HumanEval ist nur eines von vielen Benchmarks zur Bewertung von Code-LLMs. Software-Entwicklungsteams müssen LLM-generierten Code immer noch mit ihren eigenen internen Tests bewerten und mehrere Metriken kombinieren, um einen umfassenderen Überblick über die Modellleistung zu erhalten. Ein Human-in-the-Loop-Ansatz bleibt ebenfalls entscheidend, um die Genauigkeit von KI-generiertem Code sicherzustellen und die Feinabstimmung sowie maschinelles Lernen im Laufe der Zeit zu optimieren.

Einige Einschränkungen des HumanEval-Benchmarks sind:

  • Kontamination

  • Mangelnde Komplexität in der realen Welt

  • Enge Metrik der Codierungsfähigkeiten

  • Eingeschränkte Unterstützung für Programmiersprachen

Kontamination

Da sie weit verbreitet sind, kann es auch sein, dass ein Modell bereits im Rahmen seines Trainings auf einige Programmierprobleme gestoßen ist, die im Datensatz enthalten sind. Die Anzahl der Probleme ist zudem so gering, dass die Modelle zur Codegenerierung sie möglicherweise alle auswendig lernen können.

Fehlende Komplexität der realen Welt

Die Aufgaben zur Codegenerierung in HumanEval fallen in der Regel unter die Kategorie „Leicht bis mittelschwer“. Dennoch sind reale Programmieraufgaben in der Regel komplexer und umfassen API-Integrationen mit mehreren Systemen, riesigen Codebasen und großen Datensätzen.

Der Benchmark spiegelt auch nicht den oft verwickelten Zustand realer Softwareentwicklungsumgebungen und Workflows wider: sich entwickelnde Anwendungsfälle, unvollständige Testfälle, inkonsistente Anforderungen, Legacy-Code oder vage Spezifikationen, um nur einige zu nennen.

Enge Metriken der Codierungsfunktionen

Beim Programmieren geht es um mehr als nur funktionale Korrektheit. HumanEval berücksichtigt beispielsweise nicht die Effizienz. Das bedeutet, dass LLM-generierter Code, der korrekt ist und wie erwartet funktioniert, möglicherweise nicht die effizienteste und am besten optimierte Lösung in Bezug auf die Leistung ist.

Der Benchmark berücksichtigt auch keine Best Practices wie Codierung, Stilstandards, Fehlerbehandlung, Eingabe und sichere Codierung.

Eingeschränkte Unterstützung von Programmiersprachen

HumanEval ist speziell auf die Open-Source-Programmiersprache Python zugeschnitten. Quellcode, der in anderen Sprachen generiert wird, muss mit anderen Benchmarks ausgewertet werden.

HumanEval-Variationen

Der Benchmark hat einige verschiedene Versionen, die einige seiner Einschränkungen adressieren:

  • HumanEval+
     

  • HumanEval-V
     

  • HumanEval-X
     

  • HumanEvalNext

HumanEval+

Jedes Programmierproblem in HumanEval umfasst im Durchschnitt etwa 7 bis 8 Komponententests.1 HumanEval+ erhöht diese Testabdeckung für eine gründlichere Bewertung deutlich – auf durchschnittlich 764 Tests pro Problem.2

HumanEval-V

HumanEval-V baut auf seinem Vorgänger auf, um einen Benchmark für multimodale KI-Modelle zu schaffen, insbesondere für Vision Language Models (VLMs). Es misst die Fähigkeit von VLMs, Diagramme, Schaubilder und Graphen in Programmierkontexten zu verstehen und zu analysieren, wobei sie beispielsweise Code auf der Grundlage von Flussdiagrammen von Algorithmen oder Matrix-Transformationen generieren.

HumanEval-X

HumanEval-X erweitert den ursprünglichen Benchmark um die Programmiersprachen C++, Go, Java und JavaScript. Die 820 Aufgaben können zur Bewertung von Fähigkeiten in den Bereichen Codegenerierung und Codeübersetzung verwendet werden.

HumanEvalNext

HumanEvalNext verbessert HumanEval. Es fügt mehr Kontext durch Typannotationen hinzu (Programmiersyntax zur Anzeige der Datentypen von Funktionsparametern und Rückgabewerten), integriert mehr Randfälle, führt mehr Komponententests ein und erhöht die Schwierigkeit von Problemen.3

Autoren

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Verwandte Lösungen
IBM Bob

Beschleunigen Sie die Softwarebereitstellung mit Bob, Ihrem KI-Partner für sichere, absichtsorientierte Entwicklung.

IBM Bob erkunden
KI-Codierungslösungen

Optimieren Sie die Softwareentwicklung mit vertrauenswürdigen KI-gestützten Tools, die den Zeitaufwand für das Schreiben von Code, Debuggen, Code-Refactoring oder Codevervollständigung minimieren und mehr Raum für Innovation schaffen.

KI-Codierungslösungen erkunden
KI-Beratung und -Services

Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.

Erkunden Sie unsere KI-Beratungsleistungen
Machen Sie den nächsten Schritt

Mit generativer KI und fortschrittlicher Automatisierung schneller Code speziell für Unternehmen erstellen. Bob nutzt Modelle, um das Skill-Profil von Entwicklern zu erweitern und Ihre Entwicklungs- und Modernisierungsbemühungen zu vereinfachen und zu automatisieren.

  1. IBM Bob entdecken
  2. KI-Codierungslösungen erkunden