berita

Biarkan AI mengelola basis kode yang besar, kabar baik bagi pengembang |. Alibaba/Universitas Nasional Singapura/Universitas Xi'an Jiaotong

2024-08-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Pengiriman tim CodexGraph
Qubit |. Akun publik QbitAI

Tidak dapat menyelesaikan tugas pembuatan dan penyelesaian kode? !

Lebih baik mencoba membiarkan Model Bahasa Besar (LLM) membantu.

Namun, jika yaLLM dapat kesulitan ketika berhadapan dengan basis kode multi-file yang besar.Saat ini, sistem Retrieval-Augmented Code Generation (RACG) seringkali dibutuhkan untuk mengambil informasi kode yang relevan.

Solusi yang ada, seperti pengambilan berbasis kesamaan semantik dan alat serta API yang dirancang secara manual, meskipun efektif pada tugas tertentu, memiliki keterbatasan dalam kemampuan generalisasi dan penerapan universal.



Untuk mengatasi kekurangan universalitas metode RACG yang ada, para peneliti dari Universitas Nasional Singapura, Alibaba, dan Universitas Xi'an Jiaotong mengusulkanGrafik KodeksSuatu sistem yang menggunakan database grafik kode sebagai media untuk menghubungkan model bahasa dan basis kode.

Tim peneliti mengevaluasi CodexGraph pada tiga tolok ukur akademik yang representatif, dan juga mengimplementasikan CodexGraph dalam lima skenario penerapan kode nyata berdasarkan ModelScope-Agent.

Eksperimen dan praktik dunia nyata menunjukkan efektivitas dan fleksibilitas CodexGraph.



metode penelitian

CodexGraph secara inovatif menghubungkan model bahasa ke basis kode melalui antarmuka basis data grafik kode., untuk mengatasi kekurangan metode yang ada.

Alur kerja sistem ini terutama mencakup langkah-langkah berikut:

Pertama, buat database grafik kode

Gunakan teknologi analisis statis untuk memetakan simbol kode (seperti modul, kelas, fungsi, dll.) dalam basis kode dan hubungan di antara simbol-simbol tersebut ke dalam node dan tepi dalam database grafik sesuai dengan Skema yang telah ditentukan.



Kedua, kueri yang sadar akan struktur kode.

Memanfaatkan fleksibilitas bahasa kueri grafik dan menggabungkannya dengan karakteristik struktural database grafik untuk mencapai kueri kompleks dan pengambilan grafik kode secara mendalam.

Ketiga, strategi “Tulis lalu terjemahkan”.

Agen LM Utama pertama-tama menganalisis masalah kode dan menghasilkan kueri bahasa alami.

Agen LM terjemahan khusus kemudian menerjemahkan kueri ini ke dalam bahasa kueri grafik yang diformat.



Keempat, jalur pipa berulang.

Melalui pendekatan berulang, agen LM secara bertahap mengoptimalkan hasil kueri dan pengambilan berdasarkan pertanyaan pengguna dan informasi yang diperoleh.

percobaan

Pada bagian eksperimental, CodexGraph dievaluasi pada tiga tolok ukur tingkat dasar kode yang representatif: CrossCodeEval, EvoCodeBench, dan SWE-bench.



Tes-tes iniMeliputi penyelesaian kode lintas file, pembuatan kode, dan penyelesaian masalah GitHub otomatisdll dari berbagai aspek.

Hasil eksperimen menunjukkan bahwa CodexGraph menunjukkan kinerja yang sangat baik dan stabil di semua pengujian benchmark, memverifikasi efektivitas database grafik kode sebagai antarmuka antara model bahasa dan pustaka kode.



Analisis makalah asli lebih lanjut menunjukkan bahwa,Ketika CodexGraph menangani tugas penalaran dengan tingkat kesulitan yang berbeda, terdapat perbedaan dalam efek strategi kueri tunggal dan beberapa strategi kueri.

Di CrossCodeEval, beberapa strategi kueri lebih efektif; sedangkan di SWE-bench, strategi kueri tunggal berperforma lebih baik.



Selain itu, menghapus agen Cypher LM akan meningkatkan beban inferensi agen LM primer secara signifikan, sehingga mengakibatkan penurunan kinerja.

Hal ini menunjukkan bahwa agen Cypher LM memainkan peran kunci dalam mengurangi tekanan penalaran Agen LM utama.

Contoh skenario aplikasi nyata

Berdasarkan kerangka ModelScope-Agent, nilai penerapan praktis CodexGraph telah tercermin dalam beberapa skenario, seperti:

  • Asisten obrolan kode(Obrolan Kode)
  • Alat debugging kode(Debugger Kode)
  • Generator uji unit(Penguji Unit Kode)
  • pembuat kode(Generator Kode)
  • Alat anotasi kode(Komentar Kode)

Aplikasi ini menunjukkan bagaimana CodexGraph dapat membantu pengembang memecahkan masalah praktis dalam lingkungan produksi dan meningkatkan efisiensi dan kualitas pengembangan kode.

Meringkaskan

Menggunakan database grafik sebagai medianya, CodexGraph menyediakan metode interaksi baru antara model bahasa dan basis kode.

Ini tidak hanya meningkatkan kemampuan model bahasa untuk memahami basis kode yang kompleks, namun juga meningkatkan keakuratan pengambilan kode dan navigasi secara keseluruhan.

Ini muncul di bidang rekayasa perangkat lunak otomatis,Apalagi saat menghadapi tantangan RACG, menghadirkan solusi baru yang menunjukkan potensi luas dan nilai nyata dalam beragam tugas pengkodean dan aplikasi dunia nyata.

Dengan perkembangan teknologi yang berkelanjutan, CodexGraph diharapkan dapat mendukung lebih banyak bahasa pemrograman di masa depan dan lebih mengoptimalkan alur kerja dan efisiensi konstruksi indeks.

Tautan kode:

https://github.com/modelscope/modelscope-agent/tree/master/apps/codexgraph_agent

tautan arXiv:

https://arxiv.org/pdf/2408.03910