Tool calling API: schema & dispatch
P0 — Runbook Agent
Tool calling bukan fitur framework — ini kontrak JSON antara model dan kode kamu.
Bagian 1 — Schema
Satu fungsi = satu objek:
name— unik,snake_case, deskriptif.description— kapan dipakai, dengan contoh (1–2 kalimat). Ini yang paling menentukan kualitas.parameters— JSON Schema:type,properties,required. Tipe ketat (integer vs number) mengurangi hallucinated argument.
Bagian 2 — Dispatch
const tools: Record<string, ToolFn> = { search: searchImpl, calc: calcImpl };
const call = modelOutput.toolCall; // { name, args }
const fn = tools[call.name];
if (!fn) return { error: `tool tak dikenal: ${call.name}` };
const result = await fn(call.args);
Error tool harus jadi pesan balik ke model ("tool gagal: timeout"), bukan exception yang mematikan loop.
Latihan
Tulis schema 3 tool untuk kalkulator CLI: add, multiply, sqrt — lengkap dengan description dan required. Bandingkan dengan lesson m8-mcp: MCP hanya standarisasi kontrak ini agar lintas-proses.
P0