Merintis kerangka kerja komputer otomatis program tersimpan tujuan umum (arsitektur von Neumann) praktis pertama berbasis LLM dalam sistem multi-agen berbasis LLM, untuk menyelesaikan tugas-tugas kompleks melalui menghasilkan keluaran yang luas dan konsisten, tidak dibatasi oleh batasan jendela konteks tetap LLM .
? Mungkin. 7 - 11, 2024: Kami akan mempresentasikan L2MAC di International Conference on Learning Representations (ICLR) 2024. Temui kami di ICLR di Wina Austria! Silakan hubungi saya di sih31 (at) cam.ac.uk agar kita bisa bertemu, pertemuan virtual juga diterima!
? April. 23 Agustus 2024: L2MAC sepenuhnya bersumber terbuka dengan versi awal dirilis.
16 Januari 2024: Makalah L2MAC: Komputer Otomatis Model Bahasa Besar untuk Pembuatan Kode Ekstensif diterima untuk presentasi di ICLR 2024!
Instansiasi LLM-Komputer Otomatis (L2MAC) untuk mengkodekan basis kode kompleks yang besar untuk seluruh aplikasi berdasarkan pada satu perintah pengguna . Di sini kami menyediakan L2MAC alat tambahan untuk memeriksa kesalahan sintaksis apa pun dalam kode dan menjalankan pengujian unit apa pun jika ada.
Pastikan Python 3.7+ diinstal pada sistem Anda. Anda dapat memeriksanya dengan menggunakan:
python --version
. Anda dapat menggunakan conda seperti ini:conda create -n l2mac python=3.9 && conda activate l2mac
pip install --upgrade l2mac
# or `pip install --upgrade git+https://github.com/samholt/l2mac`
# or `git clone https://github.com/samholt/l2mac && cd l2mac && pip install --upgrade -e .`
Untuk panduan instalasi terperinci, silakan merujuk ke instalasi
Anda dapat memulai konfigurasi L2MAC dengan menjalankan perintah berikut, atau membuat file ~/.L2MAC/config.yaml
secara manual:
# Check https://samholt.github.io/L2MAC/guide/get_started/configuration.html for more details
l2mac --init-config # it will create ~/.l2mac/config.yaml, just modify it to your needs
Anda dapat mengonfigurasi ~/.l2mac/config.yaml
sesuai dengan contoh dan dokumen:
llm :
api_type : " openai " # or azure etc. Check ApiType for more options
model : " gpt-4-turbo-preview " # or "gpt-4-turbo"
base_url : " https://api.openai.com/v1 " # or forward url / other llm url
api_key : " YOUR_API_KEY "
Setelah instalasi, Anda dapat menggunakan L2MAC CLI
l2mac " Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid. " # this will create a codebase repo in ./workspace
atau menggunakannya sebagai perpustakaan
from l2mac import generate_codebase
codebase : dict = generate_codebase ( "Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid." )
print ( codebase ) # it will print the codebase (repo) complete with all the files as a dictionary, and produce a local codebase folder in ./workspace
? Bergabunglah dengan Saluran Perselisihan Kami! Sampai jumpa di sana! ?
Jika Anda memiliki pertanyaan atau masukan tentang proyek ini, jangan ragu untuk menghubungi kami. Kami sangat menghargai saran Anda!
Kami akan menjawab semua pertanyaan dalam 2-3 hari kerja.
Untuk terus mendapat informasi terkini tentang penelitian dan pengembangan terkini, ikuti @samianholt di Twitter.
Untuk mengutip L2MAC dalam publikasi, silakan gunakan entri BibTeX berikut.
@inproceedings {
holt2024lmac,
title = { L2{MAC}: Large Language Model Automatic Computer for Unbounded Code Generation } ,
author = { Samuel Holt and Max Ruiz Luyten and Mihaela van der Schaar } ,
booktitle = { The Twelfth International Conference on Learning Representations } ,
year = { 2024 } ,
url = { https://openreview.net/forum?id=EhrzQwsV4K }
}
Instansiasi LLM-Komputer Otomatis (L2MAC) untuk mengkodekan basis kode kompleks yang besar untuk seluruh aplikasi berdasarkan pada satu perintah pengguna . Hasil tugas desain sistem pembangkitan basis kode menunjukkan persentase fitur fungsional yang ditentukan yang diterapkan sepenuhnya ( Features % ), jumlah kesalahan sintaksis dalam kode yang dihasilkan ( # Errors ), jumlah baris kode ( LOC ), dan jumlah lulus tes ( Tes Lulus ). L2MAC sepenuhnya mengimplementasikan persentase tertinggi dari persyaratan fitur tugas yang ditentukan pengguna di semua tugas dengan menghasilkan kode yang berfungsi penuh yang memiliki kesalahan sintaksis minimal dan sejumlah besar pengujian unit yang dihasilkan sendiri, oleh karena itu L2MAC merupakan yang tercanggih untuk menghasilkan basis kode keluaran besar, dan juga kompetitif untuk menghasilkan tugas keluaran besar. Hasilnya dirata-ratakan pada 10 benih acak.
LLM-Automatic Computer (L2MAC) mencapai kinerja yang kuat pada benchmark pengkodean HumanEval dan saat ini menduduki peringkat ke-3 agen pengkodean AI terbaik di dunia pada papan peringkat standar industri pengkodean global HumanEval.
Persentase persyaratan fitur yang ditentukan pengguna yang dipertahankan dalam instruksi tugas metode dan digunakan dalam konteks.
Untuk mengetahui apakah metode yang dijadikan patokan selama operasi berisi informasi dalam konteksnya untuk menyelesaikan tugas secara langsung, kami mengadaptasi metrik Features % untuk menghitung jumlah persyaratan fitur tugas yang ditentukan pengguna yang dipertahankan dalam instruksi tugas metode, yaitu, yang instruksi yang pada akhirnya dimasukkan ke dalam jendela konteksnya selama pengoperasiannya, seperti yang ditunjukkan pada gambar di atas. Secara empiris, kami mengamati bahwa L2MAC mampu mempertahankan sejumlah besar persyaratan fitur tugas yang ditentukan pengguna dalam program cepatnya dan melakukan tugas-tugas jangka panjang yang berorientasi pada instruksi. Kami mencatat bahwa AutoGPT juga pada awalnya menerjemahkan persyaratan fitur tugas yang ditentukan pengguna ke dalam instruksi tugas; namun, ia melakukannya dengan kompresi yang lebih tinggi—meringkas informasi menjadi deskripsi enam kalimat belaka. Proses ini mengakibatkan hilangnya informasi tugas penting yang diperlukan untuk menyelesaikan keseluruhan tugas dengan benar, sehingga selaras dengan detail tugas yang ditentukan pengguna.
Peta panas akses file. Menunjukkan pembacaan, penulisan, dan kapan file dibuat pada setiap langkah operasi tulis selama satu episode untuk tugas Aplikasi Obrolan Online.
Kami ingin memahami, selama pengoperasian pelaksanaan instruksi tugas, jika L2MAC dapat memahami file kode yang ada yang dihasilkan dalam basis kode---yang dapat dibuat banyak instruksi yang lalu, dan melalui pemahamannya, membuat file baru yang saling berhubungan dengan file yang ada, dan yang terpenting perbarui file kode yang ada saat fitur baru diterapkan. Untuk memperoleh wawasan, kami memplot peta panas pembacaan, penulisan, dan kapan file dibuat pada setiap langkah operasi penulisan selama satu episode pada gambar di atas. Kami mengamati bahwa L2MAC memiliki pemahaman tentang kode yang dihasilkan yang ada yang memungkinkannya untuk memperbarui file kode yang ada, bahkan yang awalnya dibuat beberapa langkah instruksi yang lalu, dan dapat melihat file ketika tidak pasti dan memperbarui file melalui penulisan ke file. Sebaliknya, AutoGPT sering kali hanya menulis ke file satu kali, saat pertama kali membuatnya, dan hanya dapat memperbarui file yang diketahuinya yang disimpan dalam jendela konteksnya saat ini. Meskipun ia juga memiliki alat baca file, ia sering lupa tentang file yang dibuat beberapa iterasi yang lalu karena pendekatan penanganan jendela konteksnya yang merangkum pesan dialog terlama di jendela konteksnya, yaitu, kompresi lossy yang terus-menerus dari kemajuan yang dibuat sebelumnya selama operasi menyelesaikan tugas.
(b) Jumlah kesalahan sintaksis dalam basis kode. (c) Histogram bertumpuk dari pengujian unit yang lulus dan gagal yang dihasilkan sendiri.
Saat menggunakan model probabilistik (LLM) sebagai generator untuk mengeluarkan kode, kesalahan secara alami dapat terjadi pada keluarannya. Oleh karena itu, kami ingin memverifikasi apakah, ketika kesalahan muncul, masing-masing metode benchmark dapat memperbaiki kesalahan pada basis kode. Kami memplot jumlah kesalahan sintaksis dalam basis kode selama proses di mana kesalahan terjadi pada gambar (b) di atas. Kami mengamati bahwa L2MAC dapat memperbaiki kesalahan dengan benar pada basis kode yang dihasilkan sebelumnya yang memiliki kesalahan di dalamnya, yang dapat timbul dari kesalahan sintaksis dari file terakhir yang ditulis atau file lain yang bergantung pada file terbaru yang ditulis, yang sekarang mengandung kesalahan. Hal ini dilakukan dengan menyajikan keluaran kesalahan ketika kesalahan itu muncul dan memodifikasi basis kode untuk mengatasi kesalahan sambil tetap menyelesaikan instruksi saat ini. Sebaliknya, AutoGPT tidak dapat mendeteksi kapan kesalahan terjadi pada basis kode dan terus beroperasi, sehingga dapat menambah jumlah kesalahan yang terjadi dalam basis kode.
Selain itu, L2MAC menghasilkan pengujian unit di samping kode fungsional dan menggunakannya sebagai pemeriksa kesalahan untuk memeriksa fungsionalitas basis kode saat dihasilkan dan dapat menggunakan kesalahan ini untuk memperbaiki basis kode agar lulus pengujian unit yang sekarang gagal setelah memperbarui bagian dari yang sudah ada. mengajukan. Kami menunjukkan hal ini pada gambar (c) di atas dan mengamati bahwa AutoGPT, meskipun diminta untuk juga menulis pengujian unit untuk semua kode yang dihasilkan, tidak dapat menggunakan pengujian ini sebagai pemeriksaan kesalahan integritas, yang dapat diperparah dengan pengamatan bahwa AutoGPT lupa yang mana file yang telah dibuat sebelumnya dan karenanya tidak dapat mengubah file kode yang terlupakan saat ada modifikasi baru, yang menyebabkan file kode tidak kompatibel.
Kami menghadirkan L2MAC, kerangka kerja komputer program tersimpan tujuan umum berbasis LLM pertama yang secara efektif dan terukur menambah LLM dengan penyimpanan memori untuk tugas-tugas menghasilkan keluaran yang panjang di mana hal ini sebelumnya tidak berhasil dicapai. Secara khusus, L2MAC, ketika diterapkan untuk tugas pembuatan kode yang panjang, akan melampaui solusi yang sudah ada—dan merupakan alat yang sangat berguna untuk pengembangan yang cepat. Kami menyambut kontribusi dan mendorong Anda untuk menggunakan dan mengutip proyek ini. Klik di sini untuk memulai.
Kami menyertakan galeri contoh aplikasi yang seluruhnya dihasilkan oleh LLM Automatic Computer (L2MAC) dari satu input prompt. L2MAC unggul dalam menyelesaikan tugas-tugas besar yang kompleks, seperti yang canggih dalam menghasilkan basis kode yang besar, atau bahkan dapat menulis seluruh buku, yang semuanya melewati batasan tradisional dari batasan jendela konteks tetap LLM.
Cukup ketik l2mac "Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid."
, Anda akan mendapatkan basis kode lengkap untuk game yang dapat dimainkan sepenuhnya, seperti yang ditunjukkan di sini.
Klik di sini untuk file lengkap di github atau unduh di sini. Kode dan perintah untuk menghasilkan ini ada di sini.
Klik di sini untuk file lengkap di github atau unduh di sini. Kode dan perintah untuk menghasilkan ini ada di sini.
Berikan saja L2MAC prompt untuk Write a complete recipe book for the following book title of "Twirls & Tastes: A Journey Through Italian Pasta". Description: "Twirls & Tastes" invites you on a flavorful expedition across Italy, exploring the diverse pasta landscape from the sun-drenched hills of Tuscany to the bustling streets of Naples. Discover regional specialties, learn the stories behind each dish, and master the art of pasta making with easy-to-follow recipes that promise to delight your senses.
dan dapat menghasilkan buku lengkap sepanjang 26 halaman secara otomatis.
Klik di sini untuk buku selengkapnya; L2MAC memproduksi semua teks untuk buku tersebut, dan semua gambar dibuat dengan DALLE.
File teks keluaran lengkap ada di github; Anda dapat mengunduhnya di sini. Kode dan perintah untuk menghasilkan ini ada di sini.
Klik di sini untuk file lengkap di github atau unduh di sini. Kode dan perintah untuk menghasilkan ini ada di sini.
Kami secara aktif mencari Anda untuk mengunggah aplikasi luar biasa Anda di sini dengan mengirimkan PR dengan aplikasi yang Anda buat, membagikannya dengan masalah GitHub, atau membagikannya di saluran Discord.