Tool-Use & Function Calling
Memberi agent kemampuan untuk 'bertindak' — dari calculator sederhana sampai API kompleks
Tujuan Pembelajaran
- Memahami function calling / tool-use di berbagai LLM provider
- Mampu mendefinisikan tools dengan schema yang tepat
- Mampu mengimplementasikan tool execution dengan error handling
Analogi
Tools = Perkakas untuk Agent:
Agent tanpa tools = Orang yang cuma bisa ngomong
Agent dengan tools:
- Calculator = Kalkulator (komputasi numerik)
- Search API = Google (informasi real-time)
- Database Query = Arsip kantor (data internal)
- Code Executor = Bengkel (eksekusi kode)
- Email API = Kurir (kirim pesan)
Setiap tool punya:
- Nama (calculator)
- Deskripsi ("Melakukan kalkulasi matematika")
- Parameter schema (expression: string)
- Return type (result: number)
Tools seperti perkakas untuk agent — setiap tool punya nama, deskripsi, parameter, dan return type yang jelas.
Penjelasan Konsep
Tool-use (function calling) adalah mekanisme di mana LLM bisa ‘memanggil’ fungsi eksternal — bukan hanya generate teks. Ini adalah fondasi agent capability.
Cara kerja function calling: (1) Kamu definisikan available tools (nama, deskripsi, parameter JSON Schema). (2) Kirim tools definition bersama user prompt ke LLM. (3) LLM decide: apakah perlu pakai tool? Kalau ya, LLM output function_call (nama tool + parameter). Kalau tidak, LLM output teks biasa. (4) Kode kamu mengeksekusi tool yang diminta. (5) Hasil tool dikirim kembali ke LLM sebagai function_result. (6) LLM melanjutkan reasoning dengan hasil tool.
Designing good tools: (1) Nama deskriptif (search_products, bukan tool_1). (2) Deskripsi jelas kapan tool digunakan. (3) Parameter schema presisi — tipe data, enum untuk nilai terbatas, required vs optional. (4) Return value terstruktur (JSON) dengan error handling.
Error handling tools: (1) Tool execution gagal → return error message, bukan throw exception. (2) LLM akan membaca error dan mencoba alternatif. (3) Timeout untuk tools yang lambat. (4) Rate limiting untuk tools yang mahal.
Multi-tool scenarios: Agent bisa pakai multiple tools dalam satu conversation. LLM memilih tool yang tepat berdasarkan konteks.
Inti yang Perlu Dipahami
Bagian ini berfokus pada memahami function calling / tool-use di berbagai LLM provider., mampu mendefinisikan tools dengan schema yang tepat., dan mampu mengimplementasikan tool execution dengan error handling. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Tool-Use & Function Calling, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Tools seperti perkakas untuk agent — setiap tool punya nama, deskripsi, parameter, dan return type yang jelas. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa typescript. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. Tool-use loop: definisikan tools → kirim ke LLM → LLM pilih tool → eksekusi → kirim hasil ke LLM → ulangi. Loop berhenti saat LLM tidak meminta tool lagi (jawaban final).
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
// Function calling dengan Anthropic
const tools = [{
name: 'search_knowledge_base',
description: 'Search internal documentation for relevant info',
input_schema: {
type: 'object',
properties: {
query: { type: 'string', description: 'Search query' },
max_results: { type: 'number', default: 5 },
category: { type: 'string', enum: ['api', 'guide', 'faq'] },
},
required: ['query'],
},
}];
// Agent loop
let messages = [{ role: 'user', content: 'How do I authenticate API requests?' }];
while (true) {
const response = await anthropic.messages.create({
model: 'claude-sonnet',
messages,
tools,
max_tokens: 2000,
});
const toolUse = response.content.find(c => c.type === 'tool_use');
if (!toolUse) break; // Agent selesai, jawaban final di response
const result = await executeTool(toolUse);
messages.push({ role: 'assistant', content: response.content });
messages.push({ role: 'user', content: [{ type: 'tool_result', tool_use_id: toolUse.id, content: JSON.stringify(result) }] });
}Penjelasan Kode
Prompt AI
Definisikan 5 tools untuk 'AI coding assistant': read_file, write_file, search_codebase, run_tests, git_diff. Minta AI untuk menggunakan tools tersebut dalam multi-step debugging scenario.
Pertanyaan Reflektif
Apakah function calling yang kamu implementasi handle error dengan baik? Kalau tool gagal, apakah agent stuck atau bisa recover dengan alternatif?