Tool Calling: Cara Model 'Memegang' Dunia Nyata
Model tidak benar-benar memanggil fungsi — ia mengajukan permintaan panggilan dalam format JSON yang rapi. Sistemmu yang menjalankannya. Ini kontrak antara keduanya.
LLM tidak punya tangan. Ia tidak bisa membuka database atau memanggil API. Tool calling adalah protokolnya: kamu memperkenalkan daftar fungsi ke model, dan model "mengangkat tangan" dengan mengeluarkan teks terstruktur: "tolong jalankan fungsi ini dengan argumen ini."
Yang menjalankan fungsi itu sistemmu — bukan model. Hasil eksekusi dikirim kembali ke model, dan model melanjutkan pekerjaan.
Kontraknya bentuknya begini
Kamu mendeklarasikan tool:
{
"name": "cek_cuaca",
"description": "Cek cuaca kota Indonesia hari ini.",
"parameters": {
"type": "object",
"properties": {
"kota": { "type": "string", "description": "Nama kota, mis: Bandung" }
},
"required": ["kota"]
}
}
Model menjawab bukan dengan kalimat, tapi dengan tool call:
{ "name": "cek_cuaca", "arguments": { "kota": "Bandung" } }
Sistemmu menjalankan fungsi aslinya, lalu mengirim hasilnya ke model dengan role tool. Model menerima, lalu menyusun jawaban akhir untuk user.
Kenapa deskripsi parameternya penting banget
Model memilih tool dan mengisi argumen murni dari deskripsinya. "kota: Nama kota" → model bisa isi "Jawa Barat". Tulis: "kota: nama kota tingkat kota, contoh: Yogyakarta" — isinya langsung rapi. Deskripsi buruk = tool dipanggil salah = sistem kelihatan bodoh padahal modelnya tidak.
Detail kecil yang menyelamatkan
- Validasi argumen. Model bisa mengarang field yang tidak ada. Validasi dengan skema (mis. zod) sebelum mengeksekusi.
- Timeout & error yang bisa dicerna. Kalau tool gagal, kembalikan pesan error yang jelas ke model ("sumber data sedang tidak tersedia") — ia akan mencoba jalan lain atau memberi tahu user.
- Jangan tumpuk terlalu banyak tool. Di atas ~10, model makin sering salah pilih. Kelompokkan atau gabungkan.
- Deterministik tetap lebih baik kalau bisa. Tool untuk menghitung pajak jauh lebih andal daripada meminta model "menghitung" — model menjalankan, matematika tetap milik kode.
Tool calling vs function calling
Di praktik keduanya sama; istilahnya warisan sejarah (OpenAI dulu menyebut function calling, lalu berubah ke tool calling yang lebih umum — satu permintaan bisa memuat banyak definisi tool). API provider besar sekarang memakai istilah tool. Bedah khusus soal pola ini ada di materi Function Calling.
Lanjut ke Fine-tuning — kapan kamu perlu mengubah model itu sendiri, bukan hanya mengarahkannya.