Log in to leave a comment
No posts yet
Alat seperti Cursor atau Devin memang praktis. Namun, sulit untuk mengetahui apa yang sebenarnya terjadi di dalamnya, dan terkadang mereka mengacak-acak kode dengan cara yang tidak kita inginkan. Bagi pengembang backend, jauh lebih ekonomis dan meyakinkan untuk membuat agen yang dioptimalkan sendiri dengan menggabungkan pustaka standar Python dan API LLM.
Agar agen bisa melakukan lebih dari sekadar menulis kode dan mampu menjalankan perintah terminal secara langsung, Anda harus menangani modul subprocess dengan cermat. Menggunakan opsi shell=True secara sembarangan akan membuat sistem terpapar serangan shell injection atau menyebabkan proses tetap hidup seperti zombi tanpa mati saat terjadi timeout.
Saat mengimplementasikannya sendiri, atur shell=False pada pemanggilan subprocess.run() dan teruskan perintah dalam bentuk daftar (list). Atur timeout singkat sekitar 30 detik, dan jika pengecualian TimeoutExpired terjadi, segera panggil process.kill() untuk menarik kembali sumber daya. Saat mengirimkan hasil eksekusi ke model, Anda tidak perlu mengirimkan seluruh konten. Jika teks melebihi 1.000 karakter, potong dan kembalikan hanya 20 baris terakhir. Ini cukup untuk membantu model memahami penyebab kesalahan sekaligus mencegah pemborosan token.
Semakin panjang percakapan, data yang menumpuk di context window akan menjadi bom biaya. Menurut pengumuman Anthropic, penggunaan penanda cache_control pada model Claude 3.5 dapat menghemat biaya pembacaan data yang di-cache hingga 90%. Biayanya hanya sekitar $0,30 per 1 juta token.
Untuk menekan biaya, pisahkan pesan sistem dan input pengguna secara ketat. Tetapkan informasi yang tidak berubah, seperti struktur pohon file proyek, di bagian atas prompt sistem dan atur sebagai titik cache. Saat riwayat percakapan menumpuk dan melebihi batas token, gunakan metode ringkasan hierarkis dengan menghitung jumlahnya menggunakan tiktoken, lalu ringkas pesan-pesan lama melalui pemanggilan LLM terpisah. Dengan menerapkan sliding window yang hanya mempertahankan konteks ringkasan ini di bagian atas dan menambahkan pesan terbaru, Anda dapat menghemat biaya lebih dari 40% sekaligus menjaga akurasi penalaran model bahkan dalam sesi pengembangan yang panjang.
Meminta agen untuk mencetak ulang seluruh file adalah cara yang tidak efisien dan lambat. Semakin banyak token keluaran, semakin tinggi kemungkinan model melewatkan kode di tengah atau menghasilkan halusinasi. Metode yang disebut "Edit Trick" mengarahkan model untuk hanya mencari dan mengubah teks di sekitar bagian yang perlu diperbaiki (anchor). Teknik ini terbukti efektif mengurangi jumlah token keluaran hingga 86% pada data aktual.
Gunakan re.sub() di Python untuk membuat fungsi yang hanya menerapkan perubahan pada file lokal berdasarkan tag XML tertentu atau ekspresi reguler yang dikirimkan. Selain itu, alih-alih memasukkan semua dokumentasi teknis ke dalam prompt, rancang sistem untuk mengambil fragmen dokumen yang diperlukan saja dengan menghubungkan DB vektor ringan seperti LanceDB. Dengan struktur ini, kecepatan modifikasi file akan terasa lebih cepat hingga 79% dan dapat menyelesaikan masalah kronis di mana model menjadi bingung saat menangani file berukuran besar.
Berhentilah menyalin pesan debugging secara manual dan menempelkannya ke model. Buatlah agen menulis kode tes berbasis pytest sebelum menulis kode fitur.
Anda cukup membangun feedback loop yang mengirimkan kembali seluruh traceback yang muncul saat tes gagal ke model agar ia dapat memperbaikinya sendiri. Namun, untuk perintah berbahaya seperti rm atau deploy, Anda harus menyisipkan guardrail yang memerlukan persetujuan pengguna menggunakan fungsi input() di Python. Setelah struktur sirkulasi ini selesai, pengembang hanya perlu memeriksa ringkasan git diff yang diajukan oleh agen dan menekan tombol commit.
Pada akhirnya, inti dari membangun agen bukanlah kerangka kerja (framework) yang mewah, melainkan seberapa cermat Anda menyaring dan melakukan caching data antara terminal dan LLM. 600 baris kode Python yang Anda tulis sendiri akan mencerminkan niat Anda jauh lebih baik daripada alat kotak hitam (black box) yang berisi puluhan ribu baris kode.