AI Ordbog
HumanEval
En benchmark der tester AI-modellers evne til at skrive korrekt kode ved at løse 164 programmeringsopgaver i Python.
Skrevet og redigeret af Kristian Primdal · Sidst opdateret 3. oktober 2026Indhold
Hvad er HumanEval?
HumanEval er en benchmark der tester AI-modellers evne til at skrive korrekt kode. Den blev udviklet af OpenAI i 2021 og består af 164 programmeringsopgaver i Python. For hver opgave modtager modellen en funktionssignatur og en docstring (beskrivelse af hvad funktionen skal gøre), og modellen skal skrive funktionens krop. Den faktiske kode der løser opgaven.
Det afgørende er at modellens kode testes automatisk mod et sæt unit tests. Det er ikke nok at koden “ser rigtig ud”. Den skal faktisk køre korrekt og producere de rigtige resultater. Det gør HumanEval til en objektiv og præcis benchmark: enten består koden testene, eller også gør den ikke.
HumanEval har siden lanceringen været den mest refererede benchmark for AI-kodningsevner og har været central for udviklingen af kodningsværktøjer som GitHub Copilot, Cursor og Claude Code.
Hvordan fungerer HumanEval?
Opgaveformat
Hver HumanEval-opgave har tre dele:
1. Funktionssignatur: Funktionens navn og parametre.
2. Docstring: En beskrivelse af hvad funktionen skal gøre, ofte med eksempler.
3. Unit tests: Automatiserede tests der verificerer at funktionen virker korrekt.
Her er et eksempel på en typisk HumanEval-opgave:
def has_close_elements(numbers: List[float], threshold: float) -> bool:
"""Check if in given list of numbers, are any two numbers
closer to each other than given threshold.
>>> has_close_elements([1.0, 2.0, 3.0], 0.5)
False
>>> has_close_elements([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3)
True
"""
Modellen skal skrive funktionens krop. For eksempel:
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
if abs(numbers[i] - numbers[j]) < threshold:
return True
return False
Scoring: Pass@k
HumanEval bruger en metric kaldet Pass@k, sandsynligheden for at mindst ét af k genererede forsøg består alle tests:
| Metric | Betydning |
|---|---|
| Pass@1 | Procent korrekte ved første forsøg (mest brugt) |
| Pass@10 | Sandsynlighed for mindst ét korrekt svar ud af 10 forsøg |
| Pass@100 | Sandsynlighed for mindst ét korrekt svar ud af 100 forsøg |
Pass@1 er den mest krævende og mest citerede metric. Den viser hvor ofte modellen skriver korrekt kode i første forsøg, svarende til den oplevelse en bruger har i praksis.
Beregningen er statistisk: modellen genererer n forsøg (typisk n=200), og Pass@k beregnes som den forventede andel af opgaver hvor mindst ét af k tilfældigt valgte forsøg er korrekt.
Opgavernes sværhed
De 164 opgaver spænder i sværhed:
Lette opgaver: Simpel strengmanipulation, listeoperationer, grundlæggende matematik.
def strlen(string: str) -> int:
"""Return length of given string
>>> strlen('')
0
>>> strlen('abc')
3
"""
Mellemsvære opgaver: Sortering, rekursion, datastrukturmanipulation.
def sort_third(l: list):
"""Sort every third element of the list, keeping others unchanged.
>>> sort_third([1, 2, 3])
[1, 2, 3]
>>> sort_third([5, 6, 3, 4, 8, 9, 2])
[2, 6, 3, 4, 8, 9, 5]
"""
Svære opgaver: Kompleks logik, kanttilfælde, matematiske algoritmer.
De fleste opgaver svarer til det niveau man ville se i en typisk programmeringssamtale eller et universitetskursus i programmering, ikke konkurrenceprogrammering.
HumanEval-scorer over tid
Udviklingen i HumanEval-scorer illustrerer den hurtige fremgang i AI-kodningsevner:
| År | Model | Ca. Pass@1 |
|---|---|---|
| 2021 | Codex (GPT-3 baseret) | ~29% |
| 2022 | code-davinci-002 | ~47% |
| 2023 | GPT-4 | ~67% |
| 2024 | Claude 3.5 Sonnet, GPT-4o | ~90%+ |
| 2025 | Frontier-modeller | ~95%+ |
Fra under 30% i 2021 til over 95% i 2025. En tredobling på fire år. HumanEval er nu nær-satureret for de bedste modeller, hvilket har drevet udviklingen af sværere benchmarks.
Menneskeligt niveau
Erfarne programmører løser typisk 90-100% af HumanEval-opgaverne. De fleste er relativt standard programmeringsopgaver. At de bedste AI-modeller nu matcher dette niveau er en vigtig milepæl for AI-kodning.
Hvorfor er HumanEval vigtig?
Objektiv kodningsevaluering
Før HumanEval blev AI-kodningsevner typisk evalueret subjektivt eller via benchmarks der testede kodforståelse (multiple choice om kodning) snarere end kodegenerering. HumanEval var den første store benchmark der testede om modellen faktisk kan skrive kode der virker.
Standardiseret sammenligning
HumanEval giver et fælles sammenligningsgrundlag for kodningsmodeller. Når Model A har Pass@1 på 92% og Model B har 85%, er det et klart, reproducer bart mål.
Drev udviklingen af kodningsværktøjer
HumanEval spillede en direkte rolle i udviklingen af AI-kodningsværktøjer. GitHub Copilot, Cursor, Windsurf og Claude Code er alle bygget på modeller der er evalueret og optimeret med HumanEval (og efterfølgere) som en central benchmark.
Bro mellem forskning og praksis
HumanEval viste konkret at AI-modeller kan generere brugbar kode, ikke bare i teorien men med verificerbare, korrekte resultater. Det var med til at drive den kommercielle adoption af AI-kodningsassistenter.
Begrænsninger ved HumanEval
Kun Python
HumanEval tester kun Python. Den siger intet om modellens evne til at skrive JavaScript, TypeScript, Rust, Go, Java eller andre sprog. Udvidelsen MultiPL-E adresserer dette ved at oversætte HumanEval-opgaverne til 18 andre programmeringssprog.
Korte, isolerede funktioner
Alle 164 opgaver er korte, selvstændige funktioner, typisk 5-20 linjer. Virkelig softwareudvikling involverer at forstå store kodebaser, bevæge sig mellem filer, forstå eksisterende arkitektur og integrere ny kode i en kompleks kontekst. HumanEval tester ingen af disse færdigheder.
Saturering
Med de bedste modeller over 95% kan HumanEval ikke længere differentiere mellem topmodeller. Forskellen mellem 94% og 96% er minimal og kan skylde tilfældigheder. Sværere benchmarks som SWE-bench er nødvendige for at vurdere frontier-modeller.
Begrænset opgavevariation
164 opgaver er et relativt lille datasæt. Opgaverne dækker primært standard algoritmiske problemer og mangler mange vigtige aspekter af programmering: API-integration, fejlhåndtering, databaseinteraktion, concurrency, performance-optimering og mere.
Kontaminering
HumanEval-opgaverne har været offentligt tilgængelige siden 2021. Der er en reel risiko for at modeller har set opgaverne (eller meget lignende opgaver) under træning. Nyere modeller kan score højt delvist fordi de har memoreret løsninger, ikke fordi de er bedre til at ræsonnere om kode.
Manglende kontekst
I virkeligheden skriver udviklere sjældent isolerede funktioner fra en docstring. De arbejder i eksisterende kodebaser, læser dokumentation, debugger fejl og itererer på løsninger. HumanEval fanger ingen af disse virkelige workflows.
HumanEval vs. andre kodningsbenchmarks
| Benchmark | Fokus | Opgaver | Sværhed | Status (2025) |
|---|---|---|---|---|
| HumanEval | Funktionsgenerering | 164 Python-opgaver | Let-middel | Nær-satureret |
| HumanEval+ | Strengere tests | 164 opgaver, flere tests | Let-middel | Delvist satureret |
| MBPP | Basis Python | 974 opgaver | Let | Satureret |
| SWE-bench | Rigtige GitHub-issues | ~2000 opgaver | Svær | Differentierende |
| LiveCodeBench | Nye konkurrenceopgaver | Løbende opdateret | Middel-svær | Differentierende |
| MATH | Matematisk kodning | 500 opgaver | Svær | Differentierende |
HumanEval+ og EvalPlus
HumanEval+ er en forbedret version der tilføjer langt flere unit tests til de oprindelige 164 opgaver, typisk 80x flere tests per opgave. Mange modeller der scorer højt på originale HumanEval fejler på de ekstra tests, fordi deres kode håndterer kanttilfælde forkert.
EvalPlus er det bredere projekt der vedligeholder HumanEval+ og tilsvarende forbedringer af andre kodningsbenchmarks.
SWE-bench: Den naturlige efterfølger
SWE-bench tester en fundamentalt anden kapabilitet: at løse rigtige softwareproblemer i store, eksisterende kodebaser. Hvor HumanEval beder modellen om at skrive én funktion, beder SWE-bench modellen om at diagnosticere et bug i et projekt med tusindvis af filer og skrive et patch der løser det. De bedste modeller scorer omkring 80% på SWE-bench Verified, men under 50% på den strengere SWE-bench Pro.
HumanEval i praksis
For udviklere der vælger kodningsværktøjer
HumanEval-scorer giver en indikation af modellens grundlæggende kodningsevne, men bør suppleres med SWE-bench-scorer og egne tests:
- Grundlæggende screening: En model med lav HumanEval-score (under 70%) er sandsynligvis ikke et godt valg til kodningsassistance
- Nuancering: Blandt topmodeller (over 90%) siger HumanEval-scores meget lidt, brug SWE-bench og egne tests
- Sprogspecifik: Tjek MultiPL-E eller sprogspecifikke benchmarks hvis du primært arbejder i andre sprog end Python
For modeludviklere
HumanEval er en obligatorisk benchmark at rapportere, men den er ikke længere tilstrækkelig som eneste kodningsevaluering. Moderne modelrapporter inkluderer typisk HumanEval, SWE-bench, LiveCodeBench og ofte sprogspecifikke evalueringer.
For virksomheder
HumanEval-scorer er et godt udgangspunkt for at forstå en models kodningsniveau, men virksomheder bør altid supplere med evaluering på egne opgaver, i eget teknologistack og med egne kodestandarder.
Ofte stillede spørgsmål
Hvad er HumanEval?
HumanEval er en benchmark udviklet af OpenAI der tester AI-modellers evne til at generere korrekt Python-kode. Den består af 164 programmeringsopgaver hvor modellen får en funktionsbeskrivelse og skal skrive koden der løser opgaven. Koden testes automatisk mod unit tests. Enten virker den eller også gør den ikke. HumanEval er den mest citerede kodnings-benchmark og har været central for udviklingen af AI-kodningsværktøjer som GitHub Copilot og Cursor.
Hvad betyder Pass@1 i HumanEval?
Pass@1 er den mest brugte metric i HumanEval og angiver procentdelen af opgaver som modellen løser korrekt i første forsøg. En Pass@1 på 90% betyder at modellen skriver korrekt, fungerende kode 9 ud af 10 gange ved første forsøg. Det er den mest krævende metric fordi den afspejler den reelle brugeroplevelse: når du beder en AI-kodningsassistent om at skrive en funktion, virker den typisk kun ved den kode modellen genererer først.
Hvorfor er HumanEval ikke nok til at vurdere kodnings-AI?
Fordi HumanEval kun tester korte, isolerede Python-funktioner. Virkelig softwareudvikling kræver at forstå store kodebaser, debugge komplekse fejl, integrere med eksisterende arkitektur og skrive kode i mange sprog. HumanEval er desuden nær-satureret. De bedste modeller scorer alle over 90%, så den kan ikke differentiere mellem dem. SWE-bench, der tester modellers evne til at løse rigtige GitHub-issues i store kodebaser, giver et langt mere realistisk billede af AI-kodningsevner.
Hvad er forskellen på HumanEval og SWE-bench?
HumanEval tester om modellen kan skrive en kort Python-funktion baseret på en beskrivelse. Isolerede opgaver der typisk kræver 5-20 linjer kode. SWE-bench tester om modellen kan løse rigtige bugs og issues i store open source-projekter med tusindvis af filer. HumanEval er nær-satureret (95%+), mens SWE-bench stadig er udfordrende (omkring 80% Verified, under 50% Pro). SWE-bench er langt mere repræsentativt for virkelig softwareudvikling men også langt sværere at evaluere.