Dari chat ke agen
Loop model, panggilan alat, dan hasil yang berulang sampai tugas selesai.
Chat dengan model itu satu arah: kamu bertanya, model menjawab, selesai.
Agen berbeda. Agen bisa membaca berkas, menjalankan tes, membaca hasilnya, lalu mencoba lagi. Kemampuan itu tidak datang dari model yang lebih pintar, tapi dari program kecil di sekelilingnya.
Loop di balik setiap agen
Agen adalah program yang memanggil model berulang kali dalam sebuah loop:
- Program mengirim percakapan dan daftar alat yang tersedia ke model.
- Model membalas. Balasannya bisa berupa jawaban biasa, atau permintaan memanggil alat.
- Kalau ada permintaan alat, program menjalankannya di komputer, misalnya membaca berkas.
- Program menambahkan hasil alat ke percakapan, lalu kembali ke langkah 1.
- Kalau model membalas tanpa meminta alat, itu jawaban akhirnya. Loop berhenti.
Dalam TypeScript, intinya kurang lebih seperti ini:
const messages = [{ role: "user", content: tugas }];
for (let langkah = 0; langkah < 20; langkah++) {
const balasan = await model.chat(messages, alat);
messages.push(balasan);
if (balasan.toolCalls.length === 0) return balasan.content;
for (const panggilan of balasan.toolCalls) {
const hasil = await jalankanAlat(panggilan);
messages.push({ role: "tool", toolCallId: panggilan.id, content: hasil });
}
}
throw new Error("Agen tidak selesai dalam 20 langkah");Itu bukan penyederhanaan berlebihan. Agen produksi menambahkan banyak hal di sekitarnya, seperti persetujuan, pemadatan konteks, dan antarmuka, tapi jantungnya tetap loop ini.
Urutkan satu putaran loop agen.
Latihan 1/3- 1Program menjalankan alat yang diminta di komputermu.
- 2Program mengirim percakapan dan daftar alat ke model.
- 3Model membalas tanpa panggilan alat, dan loop berhenti.
- 4Model membalas dengan permintaan memanggil alat.
- 5Program menambahkan hasil alat ke percakapan, lalu memanggil model lagi.
Model tidak menjalankan apa pun
Model hanya menghasilkan teks. Saat agen “menjalankan tes”, yang terjadi adalah model menulis
permintaan seperti bash({ "command": "npm test" }), lalu programmu yang menjalankan perintah
itu, di mesinmu, dengan hak aksesmu. Hasilnya dikirim kembali ke model sebagai teks.
Ini punya dua akibat penting. Pertama, kamu yang menentukan alat apa yang tersedia dan apa batasnya. Kedua, apa pun yang dijalankan alat terjadi sungguhan, termasuk perintah yang keliru.
Saat agen “menjalankan tes”, siapa yang benar-benar mengeksekusi npm test?
Latihan 2/3Batas langkah
Perhatikan langkah < 20 di contoh tadi. Tanpa batas, model yang bingung bisa memanggil alat
terus-menerus dan menghabiskan waktu serta biaya.
Batas langkah adalah rem darurat yang sederhana.
Agen ini terus mengulang panggilan alat yang sama karena model tidak pernah melihat hasilnya. Baris mana penyebabnya?
Latihan 3/3Ketuk baris yang bermasalah.
Yang perlu dibawa
- Agen = model + loop + alat.
- Model meminta alat; program yang menjalankannya.
- Hasil alat harus kembali ke percakapan, atau model bekerja tanpa melihat apa pun.