Benchmark · coding
HumanEval+
HumanEval+ adalah versi ketat dan diperluas dari benchmark pembuatan kode HumanEval milik OpenAI: ia mempertahankan 164 soal pemrograman Python tulisan tangan yang asli tetapi menambahkan sekitar 80x lebih banyak kasus uji (melalui framework EvalPlus), dan dinilai dengan metrik pass@k (biasanya pass@1).
Selengkapnya
- Contoh
- Setiap item memberikan signature fungsi Python plus docstring bahasa alami — sering dengan contoh doctest — yang menggambarkan perilaku yang diinginkan (misalnya, 'kembalikan elemen list yang benar-benar lebih besar dari suatu ambang, secara berurutan'), dan model harus menghasilkan body fungsi yang mengimplementasikannya.
- Penilaian
- Metriknya adalah pass@k: untuk setiap soal, n >= k penyelesaian disampel, c di antaranya lolos semua uji, dan estimator tak bias pass@k = 1 - C(n-c, k) / C(n, k) dirata-ratakan atas 164 soal (pass@1 paling sering dilaporkan). Sebuah penyelesaian dihitung hanya jika lolos seluruh suite uji yang diperluas, sehingga skor HumanEval+ lebih rendah daripada HumanEval biasa.
- Verifikasi
- Setiap penyelesaian dijalankan dalam sandbox terisolasi terhadap suite uji yang diperluas di bawah batas waktu dan memori, dan diterima hanya jika semua kasus uji lolos — uji asli ditambah input yang dihasilkan EvalPlus. Tidak ada nilai sebagian: satu saja uji yang gagal atau kehabisan waktu membuat seluruh sampel gagal.
- Mengapa penting
- Uji asli HumanEval jarang, sehingga solusi yang keliru secara halus bisa lolos dan menggelembungkan tingkat kelulusan yang dilaporkan; uji HumanEval+ yang ~80x lebih rapat mengungkap positif palsu ini dan menyusun ulang peringkat model, menjadikannya pemeriksaan kebenaran standar yang lebih ketat untuk model pembuatan kode.
Contoh penyelesaian
Tugas
Item representatif bergaya HumanEval+ — signature Python bertipe dengan docstring dan doctest, di mana model harus melengkapi body fungsi:
```python
from typing import List
def above_threshold(numbers: List[float], threshold: float) -> List[float]:
"""Return the numbers from the input list that are strictly
greater than the given threshold, preserving their original order.
>>> above_threshold([1.0, 5.5, 2.3, 8.0], 3.0)
[5.5, 8.0]
"""
```
Solusi
```python
from typing import List
def above_threshold(numbers: List[float], threshold: float) -> List[float]:
return [n for n in numbers if n > threshold]
```
Penjelasan
List comprehension ini mempertahankan tepat elemen yang benar-benar lebih besar dari ambang dan menjaga urutan input, memenuhi spesifikasi dan doctest ([5.5, 8.0]). Penilaian menjalankannya terhadap seluruh suite HumanEval+ — banyak kasus tepi yang dihasilkan otomatis seperti list kosong, bilangan negatif, dan nilai yang semuanya sama — dan memberi 1 hanya jika semua uji lolos.
| Tanggal | Model | Skor | Sumber |
|---|---|---|---|
| 2026-07-13 | Qwen3.5-4B | 13.0% | Flint memampatkan jejak penalaran untuk mengurangi penggunaan token sambil mempertahankan akurasi |