Beberapa pengembang bekerja menggunakan banyak layar

Apa itu HumanEval?

Definisi HumanEval

HumanEval adalah tolok ukur untuk menilai kemampuan pembuatan kode pada model bahasa besar (LLM). Solusi ini dikembangkan oleh OpenAI untuk mengevaluasi versi awal model AI yang mendukung Codex, agen rekayasa perangkat lunak perusahaan tersebut.

Tolok ukur HumanEval dirancang khusus untuk kode buatan Python. Solusi ini tidak hanya menangani sintaksis, tetapi juga memvalidasi bahwa kode yang dibuat akurat dan berfungsi sebagaimana mestinya.

Kerangka kerja tolok ukur ini dapat diakses di repositori GitHub OpenAI HumanEval. HumanEval juga memiliki papan peringkat yang memeringkat kinerja berbagai model pembuatan kode, antara lain rangkaian Claude, Kimi K2, Google Gemma dan Gemini, GPT-5 serta GPT-4o dan GPT-4 yang lebih lama, serta rangkaian IBM Granite.

Struktur kumpulan data

Kumpulan data HumanEval terdiri dari 164 soal pemrograman yang ditulis tangan dan pengujian unit yang berkaitan.1 Semua soal tersebut mengukur kemampuan model dalam memahami bahasa, memanipulasi string, serta melakukan pencarian dan pengurutan. Soal-soal tersebut juga menilai keterampilan pemecahan masalah dalam matematika sederhana dan algoritma kompleks. Tugas pemrograman ini mirip dengan pertanyaan algoritmik, latihan pengodean, atau tantangan desain sistem yang dikerjakan pengembang perangkat lunak selama wawancara teknis.

Setiap tugas pembuatan kode berisi komponen berikut:

  • Tanda tangan fungsi

  • Docstring

  • Isi fungsi

  • Pengujian unit

Tanda tangan fungsi

Tanda tangan menentukan nama dan parameter fungsi. Sebagai contoh, berikut adalah tanda tangan untuk fungsi yang menjumlahkan hasil perhitungan dua bilangan bulat:            

def multiply(a, b):

Docstring

Docstring adalah prompt bahasa alami atau deskripsi perilaku, tujuan, input, dan output yang diharapkan dari suatu fungsi. Komentar ini menguraikan kegunaan fungsi, dengan memandu model saat menghasilkan kode Python.

Sebagai contoh, docstring fungsi perkalian (multiply) adalah:

“””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
“””

Isi fungsi

Ini adalah segmen yang dialokasikan untuk kode yang dihasilkan model. Bagian ini berisi solusi yang diimplementasikan untuk soal yang diberi tanda tangan fungsi dan docstring.

Pengujian unit

Kasus pengujian ini memverifikasi kebenaran fungsional kode yang dihasilkan di berbagai skenario. Setiap pengujian memasukkan input spesifik ke fungsi, kemudian memeriksa output terhadap hasil yang diinginkan.

Berikut adalah beberapa sampel pengujian unit untuk fungsi perkalian:

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

Metrik evaluasi

Banyak tolok ukur LLM kode menerapkan metodologi yang digunakan untuk pembuatan teks, seperti metrik berbasis kecocokan yang membandingkan sampel kode yang dihasilkan dengan solusi referensi. Namun, metrik berbasis kecocokan biasanya tidak memperhitungkan berbagai cara untuk menyelesaikan soal, karena cara mana pun dapat secara fungsional setara dengan solusi referensi.

Inilah alasan tolok ukur HumanEval beralih ke kebenaran fungsional, yang menganggap sampel kode yang dihasilkan benar jika lulus serangkaian pengujian unit. Pendekatan ini mencerminkan cara pengembang menilai keberhasilan kode mereka dengan menjalankannya melalui serangkaian pengujian unit dan memastikan kode lulus pada tiap pengujian.

HumanEval mengukur kebenaran fungsional menggunakan metrik pass@k. Untuk setiap soal, model menghasilkan sampel kode k. Jika salah satu sampel tersebut lulus pengujian unit, soal akan dianggap terpecahkan dengan benar. Metrik pass@k memperkirakan probabilitas bahwa setidaknya satu dari sampel k secara fungsional benar.

Mixture of Experts | 12 Desember, episode 85

Decoding AI: Rangkuman Berita Mingguan

Bergabunglah dengan panel insinyur, peneliti, pemimpin produk, dan sosok kelas dunia lainnya selagi mereka mengupas tuntas tentang AI untuk menghadirkan berita dan insight terbaru seputar AI.

Keterbatasan HumanEval

HumanEval hanyalah salah satu dari banyak tolok ukur untuk menilai LLM kode. Tim pengembangan perangkat lunak masih harus mengevaluasi kode buatan LLM menggunakan pengujian internal mereka sendiri dan menggabungkan beberapa metrik untuk mendapatkan perspektif yang lebih komprehensif tentang kinerja model. Pendekatan human-in-the-loop juga tetap penting untuk membantu memastikan akurasi kode buatan AI, sekaligus menyempurnakan dan meningkatkan kualitas model machine learning dari waktu ke waktu.

Berikut adalah beberapa batasan tolok ukur HumanEval:

  • Kontaminasi

  • Kurangnya kompleksitas dunia nyata

  • Terbatasnya metrik pada kemampuan pengodean

  • Dukungan bahasa pemrograman terbatas

Kontaminasi

Soal pemrograman yang disertakan dalam kumpulan data mungkin sudah pernah ditemui selama pelatihan model karena ketersediaannya yang luas. Jumlah soal juga cukup sedikit, sehingga model pembuatan kode mungkin dapat menghafal semuanya.

Kurangnya kompleksitas dunia nyata

Tingkat kesulitan tugas pembuatan kode pada HumanEval biasanya berkisar dari mudah hingga menengah. Sebaliknya, tugas pemrograman di dunia nyata cenderung lebih kompleks, yang antara lain mencakup integrasi API dengan banyak sistem, basis kode besar, dan kumpulan data besar.

Tolok ukur ini juga gagal mencerminkan kondisi lingkungan dan alur kerja pengembangan perangkat lunak di dunia nyata yang sering kali rumit: contoh penggunaan yang terus berkembang, kasus pengujian yang tidak lengkap, persyaratan yang tidak konsisten, kode lama atau spesifikasi yang kurang jelas, dan itu hanyalah beberapa di antaranya.

Terbatasnya metrik pada kemampuan pengodean

Pemrograman tidak hanya mencakup kebenaran fungsional. Sebagai contoh, HumanEval tidak memperhitungkan efisiensi. Ini berarti kode buatan LLM yang akurat dan berfungsi sesuai harapan mungkin bukan solusi yang paling efisien dan optimal dari segi kinerja.

Tolok ukur ini juga tidak memperhitungkan praktik terbaik pemrograman, seperti konvensi pengodean, standar gaya, penanganan kesalahan, validasi input, dan pengodean yang aman.

Dukungan bahasa pemrograman terbatas

HumanEval disesuaikan khusus untuk bahasa pemrograman Python sumber terbuka . Kode sumber yang dihasilkan dalam bahasa lain harus dievaluasi menggunakan tolok ukur lain.

Variasi HumanEval

Tolok ukur ini memiliki beberapa versi berbeda yang mengatasi beberapa keterbatasannya:

  • HumanEval+
     

  • HumanEval-V
     

  • HumanEval-X
     

  • HumanEvalNext

HumanEval+

Setiap soal pemrograman di HumanEval memiliki rata-rata sekitar 7 hingga 8 pengujian unit.1 HumanEval+ meningkatkan cakupan pengujian tersebut secara signifikan menjadi rata-rata 764 pengujian per soal untuk penilaian yang lebih ketat.2

HumanEval-V

HumanEval-V dirancang berdasarkan versi sebelumnya untuk membuat tolok ukur bagi model AI multimodal, khususnya model bahasa visi (VLM). Versi ini mengukur kemampuan VLM dalam memahami dan bernalar atas bagan, diagram, dan grafik pada konteks pemrograman, dengan menghasilkan kode berdasarkan, antara lain, diagram alir algoritma atau transformasi matriks.

HumanEval-X

Sebagai perluasan dari tolok ukur versi asli, HumanEval-X juga mencakup bahasa pemrograman C++, Go, Java, dan JavaScript. Sebanyak 820 tugas pada versi ini dapat digunakan untuk mengevaluasi pembuatan kode dan keterampilan penerjemahan kode.

HumanEvalNext

HumanEvalNext merupakan penyempurnaan dari HumanEval. Versi ini menambahkan lebih banyak konteks melalui anotasi jenis (sintaksis pemrograman untuk menunjukkan jenis data parameter fungsi dan nilai yang ditampilkan), menggabungkan lebih banyak kasus edge, menghadirkan lebih banyak pengujian unit dan menaikkan tingkat kerumitan soal.3

Penyusun

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Solusi terkait
IBM Bob

Percepat pengiriman perangkat lunak dengan Bob, mitra AI Anda untuk pengembangan yang aman dan memahami maksud.

Jelajahi IBM® Bob
Solusi pengodean AI

Optimalkan upaya pengembangan perangkat lunak dengan alat berbasis AI tepercaya yang meminimalkan waktu yang dihabiskan untuk menulis kode, debugging, pemfaktoran ulang kode, atau penyelesaian kode dan membuat lebih banyak ruang untuk inovasi.

Jelajahi solusi pengodean AI
Konsultasi dan layanan AI

Ciptakan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara waktu nyata, dan nilai bisnis.

Jelajahi layanan konsultasi AI
Ambil langkah selanjutnya

Manfaatkan AI generatif dan otomatisasi canggih untuk membuat kode perusahaan siap pakai lebih cepat. Model Bob untuk menambah keahlian pengembang, menyederhanakan dan mengotomatiskan upaya pengembangan dan modernisasi Anda.

  1. Jelajahi IBM Bob
  2. Jelajahi solusi pengodean AI