Membangun AI Agent yang Benar-benar Dipakai
Saya sudah membangun beberapa AI agent. Sebagian dipakai setiap hari. Sebagian lagi ditinggalkan dalam dua minggu.
Perbedaannya hampir tidak pernah soal model.
Pertanyaan sebelum menulis kode
Sebelum membangun agent, jawab empat hal ini dengan jujur:
- Apakah tugasnya memang sulit dijabarkan? Kalau langkahnya bisa ditulis lengkap sebagai
if-else, tulis saja sebagai kode. Lebih murah, lebih cepat, dan bisa dites. - Apakah hasilnya sepadan? Agent lebih lambat dan lebih mahal daripada kode biasa.
- Apakah kesalahan bisa dideteksi? Kalau agent salah dan tidak ada yang tahu, kamu sedang membangun mesin pembuat masalah diam-diam.
- Apakah kesalahan bisa dibatalkan? Agent yang bisa menghapus data tanpa konfirmasi adalah kecelakaan yang menunggu waktu.
Kalau ada satu saja yang jawabannya "tidak", pertimbangkan ulang.
Tiga tingkat, dari yang paling sederhana
1. Satu panggilan. Klasifikasi, ringkasan, ekstraksi. Satu permintaan, satu jawaban. Ini menyelesaikan lebih banyak masalah nyata daripada yang orang kira.
2. Alur terkendali. Beberapa langkah, tapi kamu yang menentukan urutannya. Model mengerjakan bagian yang butuh pemahaman bahasa; kode mengurus alurnya.
def proses_tiket(tiket):
kategori = klasifikasi(tiket.isi) # LLM
if kategori == "teknis":
konteks = cari_dokumentasi(tiket.isi) # kode
balasan = susun_balasan(tiket, konteks) # LLM
else:
balasan = teruskan_ke_manusia(tiket) # kode
return balasan
Sebagian besar yang orang sebut "AI agent" sebenarnya cukup di tingkat ini. Bisa diprediksi, bisa dites, bisa di-debug.
3. Agent sebenarnya. Model yang memutuskan sendiri langkah apa berikutnya, memakai alat yang kamu sediakan, sampai tugasnya selesai. Paling fleksibel, paling sulit dikendalikan.
Merancang alat yang baik
Kualitas agent sangat ditentukan oleh alat yang kamu berikan. Beberapa prinsip yang saya pegang:
Deskripsinya harus menjelaskan kapan dipakai, bukan cuma apa fungsinya. "Cari data pelanggan berdasarkan email — gunakan ketika pengguna menyebut alamat email atau menanyakan riwayat akun" jauh lebih efektif daripada "Cari pelanggan".
Alat yang berbahaya harus dipisah dan dijaga. Jangan beri satu alat jalankan_sql. Buat alat spesifik: cari_pesanan, ubah_status — masing-masing dengan validasi sendiri.
Sedikit tapi jelas lebih baik daripada banyak. Dua puluh alat membuat model bingung memilih.
Contoh sederhana
from anthropic import Anthropic, beta_tool
client = Anthropic()
@beta_tool
def cari_pesanan(email: str) -> str:
"""Cari pesanan terakhir seorang pelanggan.
Gunakan ketika pengguna menanyakan status pesanan
dan menyebutkan alamat email.
Args:
email: Alamat email pelanggan.
"""
pesanan = Pesanan.objects.filter(email=email).order_by("-dibuat")[:5]
if not pesanan:
return "Tidak ada pesanan untuk email tersebut."
return "\n".join(f"{p.kode}: {p.get_status_display()}" for p in pesanan)
runner = client.beta.messages.tool_runner(
model="claude-opus-5",
max_tokens=8000,
tools=[cari_pesanan],
messages=[{"role": "user", "content": pertanyaan_pengguna}],
)
for pesan in runner:
...
Pelajaran termahal saya
Agent pertama saya diberi akses tulis ke database sejak hari pertama. Berhasil sembilan dari sepuluh kali. Yang kesepuluh menghabiskan satu hari penuh untuk membereskannya.
Sekarang aturannya tetap: mulai dari hanya-baca. Amati keputusannya selama beberapa minggu. Baru berikan izin menulis satu per satu, masing-masing dengan konfirmasi.
Kecerdasan model bukan bagian yang sulit. Yang sulit adalah membangun pagar pengaman di sekelilingnya.
Baca Juga
pgvector: Pencarian Semantik Tanpa Menambah Infrastruktur
Sebelum memasang vector database khusus, cek dulu — PostgreSQL yang sudah kamu punya mungkin sudah cukup.
RAG: Membuat AI Menjawab dari Dokumenmu Sendiri
Model bahasa tidak tahu isi dokumen perusahaanmu. RAG adalah cara memberitahunya — tanpa melatih ulang apa pun.
Otomasi Tanpa Coding dengan n8n: Panduan Mulai
Tidak semua otomasi layak ditulis dengan kode. Kadang seret-lepas sudah cukup — dan jauh lebih mudah dirawat.
Komentar (0)
Belum ada komentar. Jadilah yang pertama!
Tinggalkan Komentar
Komentar akan tampil setelah disetujui.