Function Calling: Pola Menghubungkan AI ke Fungsi Program
Skema yang jelas, argumen yang tervalidasi, hasil yang kembali terstruktur — pola dasarnya bisa dipakai di semua provider besar.
Function calling adalah pola di mana model bahasa tidak menjawab dengan kalimat, melainkan dengan permintaan pemanggilan fungsi: nama fungsi + argumen dalam format terstruktur. Fungsinya yang benar-benar jalan adalah kode kamu; model cuma "memesan".
Materi tool calling sudah membahas protokolnya dari sisi agent. Artikel ini fokus ke pola rekayasanya — hal-hal yang menentukan berhasil-gagalnya di produksi.
Anatomi satu siklus
- Deklarasikan skema — nama, deskripsi, dan parameter (JSON Schema) kamu kirim bersama prompt.
- Model mengajukan — alih-alih teks jawaban, ia mengeluarkan
{name, arguments}dalam JSON. - Kamu jalankan — fungsi asli dieksekusi di servermu, hasilnya (atau errornya) dikirim balik dengan role
tool. - Model menyimpulkan — jawaban akhir untuk user, memakai hasil fungsi tadi.
Siklus ini bisa berulang: model boleh memanggil beberapa fungsi berturut-turut sebelum merasa selesai — itulah bahan dasar agent.
Dua variasi yang perlu kamu kenal
Panggilan tunggal vs paralel. "Berapa 15% dari 240.000 dan sekarang jam berapa?" — model modern bisa mengajukan dua pemanggilan sekaligus (parallel tool calls) karena keduanya tak bergantungan. Sistem kamu harus siap mengeksekusi keduanya lalu mengirim hasilnya berurutan.
Chained calls. "Cari produk 'kopi', lalu hitung total stoknya" — panggilan kedua butuh hasil yang pertama. Di sini deskripsi fungsi dan format hasil yang rapi menentukan: model harus bisa membaca keluaran fungsi pertama untuk menyusun argumen kedua.
Praktik yang memisahkan demo dan produksi
- Skema sempit itu bagus. Field secukupnya, tipe eksplisit,
requiredjelas, danenumkalau pilihannya terbatas. Skema longgar = argutan ngawur. - Contoh di deskripsi. "ekspresi: ekspresi aritmetika, contoh: 1200*12/3" — satu contoh menaikkan akurasi argumen secara dramatis.
- Validasi sebelum eksekusi, selalu. Argumen datang dari mesin penebak. JSON Schema-validate, tolak yang aneh, dan kembalikan pesan error yang bisa dibaca model supaya ia memperbaiki dirinya di putaran berikutnya.
- Fungsi idempoten & aman. Model bisa memanggil dua kali. Jangan jadikan fungsi berdampak uang/hapus-data sebagai tool tanpa konfirmasi manusia.
- Timeout + hasil yang bisa dicerna. Fungsi gagal jangan bikin loop mati — kirim "ERROR: sumber data tidak tersedia", model akan menjelaskan ke user atau mencoba jalan lain.
Function calling vs JSON mode — jangan tertukar
JSON mode memaksa keluaran berformat JSON sesuai skema yang kamu jelaskan di prompt — bagus untuk ekstraksi data (sentimen, entitas, ringkasan terstruktur). Function calling adalah model yang memutuskan sendiri kapan dan fungsi apa dipanggil — bagus untuk aksi (hitung, cari, kirim). Kalau kamu cuma butuh bentuk data yang stabil, JSON mode lebih murah dan lebih sederhana.
Coba langsung
Playground Mini Agent menjalankan siklus ini secara nyata — lengkap dengan log pemanggilan dan hasilnya, termasuk bagaimana model bereaksi saat tool yang diminta tidak ada.
Lanjut ke Fine-tuning — kapan kamu perlu mengubah model itu sendiri, bukan hanya mengarahkannya.