Benchmark · coding
Aider Polyglot
Aider Polyglot adalah benchmark penyuntingan kode dari alat pemrograman Aider yang menguji seberapa baik sebuah LLM menyunting kode yang sudah ada di banyak bahasa pemrograman. Skornya adalah persentase tugas yang suntingannya menghasilkan kode benar dan lolos tes tugas tersebut.
Selengkapnya
- Contoh
- Item tipikal berupa latihan pemrograman bergaya Exercism dalam salah satu dari beberapa bahasa (Python, Rust, Go, Java, JavaScript, atau C++), di mana model harus menyunting berkas sumber yang disediakan untuk mengimplementasikan fungsi yang diminta agar tesnya lolos.
- Penilaian
- Metriknya adalah persentase tugas yang berhasil diselesaikan: sebuah tugas dihitung hanya jika kode yang disunting lolos semua tes otomatisnya. Aider juga melacak seberapa sering suntingan kembali dalam format yang benar dan dapat diterapkan.
- Verifikasi
- Hasil diperiksa secara otomatis: berkas yang disunting dijalankan terhadap rangkaian unit test setiap latihan, dan sebuah tugas lolos hanya jika semua tes lolos — tanpa suara manusia maupun perbandingan kecocokan persis.
- Mengapa penting
- Ini mencerminkan alur kerja pengembang yang nyata — menyunting berkas yang sudah ada di banyak bahasa alih-alih menulis potongan kode dari nol — sehingga menjadi sinyal praktis seberapa berguna sebuah model sebagai asisten pemrograman.
Contoh penyelesaian
Aider Polyglot mengambil 225 latihan pemrograman tersulit dari Exercism yang tersebar di C++, Go, Java, JavaScript, Python, dan Rust; model diberi instruksi beserta berkas rangka (stub) dan harus mengembalikan suntingan (dalam format blok SEARCH/REPLACE milik aider) yang membuat uji unit tersembunyi lulus, dengan satu percobaan ulang otomatis jika percobaan pertama gagal. Sebuah item Python yang representatif, "Acronym", meminta untuk mengubah sebuah frasa menjadi akronimnya dengan mengambil huruf pertama tiap kata dalam huruf besar, memperlakukan spasi dan tanda hubung sebagai pemisah serta mengabaikan tanda baca lainnya: diberikan `acronym.py` berisi `def abbreviate(text): pass`, buatlah uji seperti `abbreviate("Portable Network Graphics") == "PNG"` dan `abbreviate("Ruby on Rails") == "ROR"` lulus. Solusi yang benar mengganti rangka itu dengan blok SEARCH/REPLACE:
```
acronym.py
<<<<<<< SEARCH
def abbreviate(text):
pass
=======
import re
def abbreviate(text):
words = re.split(r"[^A-Za-z']+", text)
return "".join(word[0].upper() for word in words if word)
>>>>>>> REPLACE
```
Penalaran: pisahkan teks pada setiap rangkaian karakter non-huruf sehingga spasi maupun tanda hubung sama-sama membatasi kata, buang potongan kosong, lalu gabungkan huruf pertama berhuruf besar dari tiap kata yang tersisa — menghasilkan "ROR" untuk "Ruby on Rails". Item dihitung terpecahkan hanya jika semua uji unit lulus, dan tolok ukur ini melaporkan persentase dari 225 latihan yang terpecahkan dengan cara ini.
Belum ada skor terverifikasi yang dilaporkan untuk benchmark ini.