Benchmark · agentic
Multi-SWE-bench
Multi-SWE-bench mengukur apakah agen pengodean AI dapat menyelesaikan issue GitHub nyata di banyak repositori dan bahasa pemrograman, bukan hanya Python. Metrik utamanya adalah tingkat penyelesaian (resolution rate): persentase instance tugas yang perbaikannya membuat rangkaian uji tersembunyi lulus.
Selengkapnya
- Contoh
- Tugas representatif: diberikan laporan bug atau permintaan fitur nyata dari proyek sumber terbuka yang ditulis dalam bahasa seperti Java, Go, Rust, TypeScript, JavaScript, C, atau C++, beserta repositori yang di-checkout pada commit sebelum perbaikan, agen harus menghasilkan patch kode yang menyelesaikan masalah yang dijelaskan.
- Penilaian
- Setiap instance dinilai lulus/gagal melalui eksekusi. Patch agen diterapkan ke repositori dan uji proyek dijalankan; instance dihitung selesai hanya jika uji FAIL_TO_PASS yang ditentukan kini lulus dan semua uji PASS_TO_PASS tetap lulus. Skor yang dilaporkan adalah tingkat penyelesaian (instance yang selesai ÷ total), biasanya pada pass@1, dan dapat dirinci per bahasa serta per tingkat kesulitan yang dianotasi pakar (easy/medium/hard).
- Verifikasi
- Penerimaan sepenuhnya berbasis eksekusi di dalam image Docker per-instance yang mereproduksi persis toolchain bahasa dan dependensinya. Patch yang dihasilkan harus dapat diterapkan tanpa konflik, lalu uji fail-to-pass dan pass-to-pass dijalankan; tidak ada penilaian oleh LLM maupun perbandingan teks dengan patch acuan pengembang.
- Mengapa penting
- SWE-bench berpengaruh tetapi hanya untuk Python, sementara rekayasa perangkat lunak nyata mencakup banyak bahasa. Multi-SWE-bench menguji apakah agen pengodean menggeneralisasi lintas bahasa pada issue autentik, dengan label kesulitan dari pakar, memberikan sinyal kemampuan rekayasa perangkat lunak praktis yang lebih sulit, realistis, dan tidak mudah jenuh.
Contoh penyelesaian
Tugas
Instance ilustratif dalam format Multi-SWE-bench — bahasa: Go, sebuah pustaka koleksi generik kecil. problem_statement: «Stack.Pop() pada stack kosong mengembalikan nilai nol dengan error nil, diam-diam menyembunyikan bug pada pemanggilnya; seharusnya mengembalikan sentinel ErrEmpty.» Anda diberi repositori pada commit dasar yang bermasalah dan uji yang gagal. FAIL_TO_PASS: TestPopEmptyReturnsError. PASS_TO_PASS: TestPushThenPop, TestLen. Kirimkan patch yang membuat uji yang gagal menjadi lulus tanpa merusak uji yang sudah lulus.
Solusi
--- a/stack.go
+++ b/stack.go
@@ func (s *Stack[T]) Pop() (T, error) {
+ if len(s.items) == 0 {
+ var zero T
+ return zero, ErrEmpty
+ }
n := len(s.items)
v := s.items[n-1]
s.items = s.items[:n-1]
return v, nil
}
Penjelasan
Perbaikan ini menambahkan pemeriksaan kekosongan pada Pop yang mengembalikan sentinel ErrEmpty (bersama nilai nol tipe tersebut) persis seperti yang diharapkan TestPopEmptyReturnsError, sementara jalur pop normal dibiarkan tidak berubah sehingga TestPushThenPop dan TestLen tetap lulus. Penilaian murni berbasis eksekusi: harness menerapkan patch di image Docker instance tersebut dan menandainya selesai hanya jika uji FAIL_TO_PASS berubah menjadi lulus dan tidak ada uji PASS_TO_PASS yang mundur.
Belum ada skor terverifikasi yang dilaporkan untuk benchmark ini.