Lompat ke konten

Cara model memanggil alat

Skema alat, argumen, hasil, dan error sebagai data.

Memuat progres latihan…

Model tidak bisa membuka berkas. Yang bisa ia lakukan adalah meminta programmu membukanya, dalam format yang disepakati. Format itu disebut tool calling, dan hampir semua penyedia model memakainya dengan cara yang mirip.

Definisi alat

Setiap alat dikirim ke model bersama percakapan, dalam bentuk definisi alat: nama, deskripsi, dan skema argumen dalam JSON Schema.

json
{
  "name": "baca_berkas",
  "description": "Membaca isi berkas teks di dalam workspace. Pakai sebelum mengubah berkas.",
  "parameters": {
    "type": "object",
    "properties": {
      "path": { "type": "string", "description": "Path relatif dari root workspace" }
    },
    "required": ["path"]
  }
}

Saat model ingin memakai alat, balasannya berisi panggilan terstruktur: nama alat, argumen dalam JSON, dan sebuah id. Programmu membaca panggilan itu, memeriksa argumennya, menjalankan alat, lalu mengirim hasilnya kembali sebagai pesan dengan id yang sama, supaya model tahu hasil mana untuk panggilan mana.

Skema alat baca_berkas belum menandai path sebagai wajib. Tulis baris yang hilang di dalam parameters.

Latihan 1/3
json
{
  "name": "baca_berkas",
  "description": "Membaca isi berkas teks di dalam workspace.",
  "parameters": {
    "type": "object",
    "properties": {
      "path": { "type": "string", "description": "Path relatif dari root workspace" }
    },
    ???
  }
}

Error juga hasil

Alat bisa gagal: berkas tidak ada, perintah keluar dengan error, argumen tidak valid. Godaan pertamanya adalah menghentikan program. Jangan. Kirim pesan error itu ke model sebagai hasil alat.

Model yang melihat ENOENT: no such file or directory bisa memperbaiki langkahnya sendiri: mendaftar isi folder, mencari nama berkas yang benar, lalu mencoba lagi. Model yang menerima string kosong justru mengira berkasnya kosong.

Alat gagal. Apa yang sebaiknya dilakukan program agen?

Latihan 2/3
kamuPerbaiki harga es teh di menu.
agen→ baca_berkas({ "path": "src/menu.ts" })
keluaran alatENOENT: no such file or directory, open 'src/menu.ts'

Agen menunggu. Apa langkahmu?

Deskripsi adalah instruksi

Model tidak pernah melihat kode di balik alatmu. Ia memutuskan alat mana yang dipakai, dan bagaimana, hanya dari nama, deskripsi, dan skemanya. Deskripsi yang baik menyebut kapan alat dipakai, apa batasnya, dan apa yang dikembalikan. “Membaca berkas” cukup untuk mulai, tapi “Membaca berkas teks di dalam workspace. Pakai sebelum mengubah berkas.” memberi model kebiasaan yang kamu inginkan.

Dari mana model tahu kapan harus memakai alat jalankan_perintah?

Latihan 3/3

Yang perlu dibawa

  • Alat dijelaskan ke model dengan nama, deskripsi, dan JSON Schema.
  • Model mengirim panggilan terstruktur; programmu memeriksa dan menjalankannya.
  • Kembalikan error sebagai hasil, bukan crash.