Teknovidia – Function Calling di LLM adalah fitur yang memungkinkan model mengusulkan pemanggilan fungsi atau API secara terstruktur, lalu Anda sebagai developer mengeksekusinya di backend. Hasilnya: chatbot bisa memeriksa stok, memesan tiket, menghitung pajak, hingga mengontrol workflow bisnis nyata. Jika Anda pernah frustrasi karena LLM “mengarang” data, function calling adalah cara paling aman untuk membuat model “beraksi” tanpa kehilangan kontrol. Artikel ini merangkum konsep dasar, pola arsitektur, praktik terbaik, hingga contoh nyata, dikemas untuk developer pemula dan pro. Baca sampai tuntas: ada tips anti-nyasar, perbandingan ekosistem, dan Q&A praktis agar Anda cepat produksi tanpa drama.

Apa Itu Function Calling di LLM, Kenapa Penting, dan Mindset yang Tepat
Function calling di LLM adalah mekanisme di mana model tidak sekadar memproduksi teks, tetapi juga mengusulkan pemanggilan fungsi/tool tertentu melalui format terstruktur (biasanya JSON). Anda mendeskripsikan fungsi-fungsi yang tersedia—nama, parameter, tipe data—lalu LLM memilih fungsi yang relevan dan mengembalikan argument. Backend Anda mengeksekusi fungsi tersebut, mengirimkan hasilnya kembali ke model, dan model menyusun respons akhir untuk pengguna. Dengan alur ini, LLM berhenti “berimajinasi” saat butuh data aktual; ia meminta sistem Anda melakukannya secara deterministik.
Kenapa penting? Pertama, kontrol. Anda menentukan “apa yang boleh” dan “bagaimana cara memanggilnya” melalui skema parameter. Kedua, akurasi. Koneksi ke API internal, database, atau layanan pihak ketiga memastikan jawaban berbasis data real-time. Ketiga, keterlacakan. Log function calls dan payload JSON memudahkan debugging, audit, dan observasi kualitas. Keempat, efisiensi. Daripada memaksa model “menebak” data, function calling mengurangi token yang terbuang untuk reasoning yang tidak perlu, terutama saat jawaban bergantung pada sumber eksternal.
Mindset yang tepat: pikirkan LLM sebagai “planner” yang mengorkestrasi tools. Jangan berharap LLM menggantikan kontrol bisnis; justru Anda membatasinya dengan skema dan guardrail. Mulai dari fungsi kecil yang aman: get_weather, get_product, create_order. Pastikan idempotensi, validasi input, dan penanganan error yang eksplisit. Dalam uji coba internal pada asisten order sederhana (tiga fungsi: cek stok, hitung ongkir, buat order), latensi median turun karena model tidak lagi berputar-putar menjelaskan asumsi—ia langsung minta backend mengeksekusi. Hasilnya, tingkat penyelesaian tugas meningkat dan feedback pengguna lebih positif. Kabar baiknya: pola ini konsisten di berbagai penyedia, seperti OpenAI (function calling/tools), Anthropic Claude (tool use), dan Google Gemini (function calling), sehingga keterampilan Anda mudah “porting” ke vendor lain.
Arsitektur dan Pola Implementasi yang Stabil untuk Produksi
Alur standar terdiri dari lima langkah: definisikan fungsi dengan JSON Schema; kirim prompt dan daftar fungsi ke LLM; terima usulan function call beserta argumen; validasi dan eksekusi fungsi di server Anda; kirim hasilnya kembali ke LLM untuk dirangkai menjadi jawaban. Dari sini lahir beberapa pola produksi yang stabil. Pola single-call cocok untuk tugas sederhana seperti cek cuaca atau konversi mata uang; Pola multi-turn untuk rangkaian langkah, misalnya rencana perjalanan yang memerlukan cek harga hotel lalu memesan; Pola parallel calls untuk data independen yang bisa diambil bersamaan, seperti harga dari beberapa vendor.
Untuk ketahanan, siapkan strategi retry dan fallback. Jika API eksternal timeout, kembalikan error terstruktur yang mudah dipahami LLM—misalnya status dan pesan—agar model dapat menyarankan alternatif atau meminta klarifikasi pengguna. Terapkan timeouts ketat per fungsi, batas ukuran payload, dan sanitasi input agar tidak terjadi over-fetching. Validasi argumen menggunakan skema yang sama yang Anda kirim ke LLM; library validasi JSON Schema membantu mencegah eksekusi input yang tidak valid.
Observabilitas tidak boleh absen. Log setiap function call, argumen, waktu eksekusi, hasil, dan korelasikan dengan conversation_id. Metrik kunci: success rate per fungsi, median/95p latensi, token usage, dan tingkat “refusal” atau “hallucination”. Untuk pengujian, buat test harness yang mensimulasikan percakapan nyata dengan skenario go happy dan edge case (data kosong, error 429, validasi gagal). Evaluasi jawaban akhir menggunakan rubric otomatis: ketepatan fakta, kepatuhan kebijakan, dan kelengkapan langkah. Saat kompleksitas meningkat, pertimbangkan orchestrator seperti LangChain atau Semantic Kernel guna mengelola state, routing, dan memory; namun untuk use case awal, orchestrasi manual dengan prinsip KISS sering lebih mudah dirawat.
Perbandingan terminologi inti antar penyedia dapat membantu perancangan lintas-vendor berikut.
| Penyedia | Istilah Fitur | Skema Parameter | Catatan Singkat |
|---|---|---|---|
| OpenAI | Function Calling / Tools | JSON Schema | Model mengembalikan nama fungsi + args; developer eksekusi lalu kirim hasil. |
| Anthropic Claude | Tool Use | JSON-like schema | Model memanggil tool secara eksplisit; loop hasil ke respons akhir. |
| Google Gemini | Function Calling | Function declarations | Deklarasi fungsi mirip skema; dukung integrasi ke layanan Google Cloud. |
Dokumentasi resmi bermanfaat untuk melihat contoh payload terbaru: OpenAI di platform.openai.com, Anthropic di docs.anthropic.com, dan Gemini di ai.google.dev. Saat merancang antarmuka lintas-vendor, gunakan adapter internal yang menyamakan bentuk fungsi, agar migrasi model di masa depan tidak menyentuh logika bisnis.
Praktik Terbaik, Keamanan, dan Optimasi Biaya untuk Developer Pemula dan Pro
Mulailah dari skema yang ketat. Definisikan tipe data, enum, batas panjang string, dan format (email, uri, date-time) agar LLM tidak asal menebak. Hindari argumen “bebas” yang membuat Anda kebanjiran validasi manual. Gunakan nama fungsi yang deskriptif dan satu tanggung jawab; jika fungsi melakukan terlalu banyak hal, model cenderung memakai argumen yang salah. Terapkan idempotensi untuk operasi tulis: sertakan request_id atau dedup-key agar retry tidak menggandakan transaksi. Semua input dari LLM diperlakukan sebagai data tak tepercaya; validasi lagi di server dan sanitasi sebelum diteruskan ke database atau layanan lain.
Keamanan adalah prioritas. Jangan pernah memasukkan secret langsung ke prompt; lakukan pemanggilan API sensitif di backend Anda. Batasi akses fungsi berdasarkan konteks pengguna—misalnya, fungsi refund hanya tersedia untuk role tertentu. Log data secara minimal namun cukup untuk audit; redaksi PII bila tidak perlu. Tambahkan rate limit dan circuit breaker untuk melindungi sistem hulu; saat terjadi throttling, kirimkan sinyal yang mudah dipahami model agar ia menawarkan retry terjadwal atau alternatif jawaban.
Optimasi biaya dan performa berjalan bersama. Kurangi token dengan mendesain fungsi yang mengembalikan data secukupnya, bukan seluruh objek raksasa. Kirim ringkasan terstruktur (misalnya kolom penting saja), lalu sediakan fungsi “get_details” saat dibutuhkan. Pertimbangkan caching hasil fungsi yang deterministik, seperti konversi mata uang harian. Pengalaman kami pada prototipe katalog 10 ribu produk menunjukkan penggabungan function calling + caching menurunkan total token per sesi, karena model tidak harus menganalisis daftar panjang—ia langsung memanggil “search” yang disiapkan untuk pagination. Untuk kualitas, lakukan evaluasi berulang: terapkan regression test pada percakapan contoh, bandingkan hasil sebelum-sesudah perubahan skema, dan ukur dampak ke CSAT atau task completion rate.
Terakhir, rawat dokumentasi internal. Tuliskan tujuan tiap fungsi, contoh input-output, batasan, dan error yang mungkin terjadi. Rilis versi skema (v1, v1.1) agar perubahan kompatibel ke belakang. Jika Anda memakai orkestrasi seperti LangChain atau Semantic Kernel, konsolidasikan log dan telemetry di satu tempat. Rekomendasi rujukan lanjutan: OpenAI Function Calling, Anthropic Tool Use, Google Gemini Function Calling, dan Panduan JSON Schema.
Contoh Kasus Nyata: Asisten Travel dengan Function Calling (Dari Nol ke Demo Cepat)
Bayangkan Anda membangun asisten travel yang bisa membuat itinerary 3 hari, mencari hotel, dan memberi estimasi biaya. Tanpa function calling, model cenderung mengarang harga atau ketersediaan kamar. Dengan function calling, Anda mendeklarasikan tiga fungsi: search_hotels(kota, tanggal, budget), get_flight_price(asal, tujuan, tanggal), dan summarize_cost(rincian). Pengguna bertanya: “Buatkan itinerary Bandung 3 hari, start Jumat ini, budget 3 juta.” Model merencanakan langkah: memanggil search_hotels, lalu get_flight_price jika perlu, lalu menyusun ringkasan biaya.
Alur jalan. Pertama, LLM memilih search_hotels dengan argumen kota=Bandung, tanggal=YYYY-MM-DD, budget=3000000. Backend Anda mengeksekusi ke API mitra atau basis data, lalu mengembalikan daftar ringkas hotel (nama, area, harga per malam, rating). Kedua, bila pengguna juga perlu tiket, LLM memanggil get_flight_price dengan parameter rute dan tanggal. Hasil kedua fungsi dikirim balik ke LLM. Ketiga, LLM memanggil summarize_cost dengan rincian harga hotel dan tiket untuk menghasilkan total estimasi. Terakhir, model menyajikan itinerary per hari, opsi hotel, dan kisaran biaya dengan tautan pemesanan.
Detail produksi. Validasi tanggal dan batas anggaran; jika argumen tidak valid, backend mengembalikan error terstruktur agar LLM meminta klarifikasi secara sopan. Hindari mengembalikan terlalu banyak hotel—cukup 5-10 teratas. Log setiap panggilan untuk audit. Saat API penerbangan sedang padat, tambahkan fallback ke cache harga 24 jam terakhir dan beri label “perkiraan”. Dengan pola ini, demo yang meyakinkan bisa dibangun dalam hitungan jam, sekaligus siap diekspansi: Anda tinggal menambah fungsi add_to_cart atau hold_booking dengan kontrol akses yang ketat.
Q & A: Pertanyaan yang Sering Diajukan
T: Apa bedanya function calling dengan prompt engineering biasa? Jawab: Prompt engineering mengarahkan model menulis teks, sedangkan function calling memberi jalur terstruktur agar model meminta sistem Anda mengeksekusi aksi nyata. Keduanya saling melengkapi, namun function calling memberi kontrol, akurasi, dan jejak audit yang lebih kuat.
T: Apakah saya butuh framework khusus? Jawab: Tidak wajib. Banyak tim memulai dengan orkestrasi minimal di server. Saat skala dan kompleksitas naik, pertimbangkan alat seperti LangChain atau Semantic Kernel untuk routing, memory, dan evaluasi.
T: Bagaimana mencegah penyalahgunaan fungsi berbahaya? Jawab: Batasi daftar fungsi per konteks pengguna, validasi argumen ketat, sanitasi input, dan log semua panggilan. Gunakan rate limit serta policy check sebelum eksekusi.
T: Apakah semua model LLM mendukung function calling? Jawab: Banyak model modern mendukung, namun perilaku dan skema bervariasi. Rujuk dokumentasi vendor untuk kompatibilitas terbaru dan sesuaikan adapter internal Anda.
Kesimpulan: Mulai Kecil, Rilis Cepat, Naikkan Standar
Intinya, function calling mengubah LLM dari “penulis pintar” menjadi “planner” yang mengorkestrasi aksi nyata melalui fungsi-fungsi terstruktur. Dengan mendeklarasikan fungsi beserta skema, Anda mendapatkan kontrol yang jelas, akurasi bersumber data real-time, serta observabilitas yang memudahkan debugging dan audit. Mulailah dari use case kecil yang paling bernilai, seperti cek stok, perhitungan ongkir, atau ringkasan transaksi. Terapkan validasi argumen, idempotensi, timeouts, retry, dan logging sejak awal agar pondasi Anda tahan skala. Untuk performa dan biaya, kirim data secukupnya, gunakan caching, dan evaluasi kualitas secara berkala. Saat kebutuhan bertambah, barulah bawa orkestrator atau agen yang lebih canggih—tetap pegang prinsip KISS agar sistem tidak cepat kusut.
Call to action yang spesifik: pilih satu proses bisnis yang sering ditanyakan pelanggan, petakan menjadi 2–3 fungsi kecil, dan rilis prototipe dalam 48 jam. Uji di lingkungan terbatas, logging menyala, lalu iterasi berdasarkan metrik sukses dan umpan balik nyata. Rujuk dokumentasi resmi untuk detail payload dan contoh skema, misalnya OpenAI, Anthropic, dan Google Gemini. Jika butuh orkestrasi lintas-tool, lihat LangChain atau Semantic Kernel. Anda akan terkejut betapa cepatnya value terasa ketika LLM tidak lagi “mengarang”, melainkan menjalankan aksi yang benar.
Semangat membangun! Jika Anda bisa mengubah satu alur manual menjadi otomatis minggu ini, alur lain akan menyusul. Pertanyaan ringan untuk memulai: fungsi pertama apa yang paling aman dan paling sering dipakai pengguna Anda hari ini? Jawab itu, rancang skemanya, dan biarkan LLM mengeksekusinya dengan elegan.
Sumber: OpenAI Function Calling; Anthropic Tool Use; Google Gemini Function Calling; Understanding JSON Schema; LangChain Docs; Microsoft Semantic Kernel.