Cara menggunakan TOON dengan LLM
Jika Anda pernah menempelkan array JSON yang besar ke ChatGPT atau Claude, Anda mungkin pernah merasakan kesulitan saat jendela konteks ditutup. JSON sangat bagus untuk API web, tetapi untuk Model Bahasa Besar (LLM), ini sangat boros. Mengulangi nama field seperti "id":, "name":, dan "timestamp": untuk setiap record bukan hanya mubazir; itu membakar token yang membutuhkan uang nyata dan ruang konteks yang berharga.
Di sinilah TOON (Table Object Notation) bersinar. Ini bukan hanya format data; ini adalah strategi untuk mengoptimalkan interaksi LLM. Dengan menghilangkan pajak sintaksis JSON dan menambahkan header struktur eksplisit, TOON memungkinkan Anda meneruskan lebih banyak data ke model Anda dan mendapatkan keluaran terstruktur yang lebih andal sebagai imbalannya.
Ekonomi Token TOON
Mengapa repot-repot berpindah format? Perhitungannya sederhana. Dalam array objek JSON standar, skema diulangi untuk setiap baris. Jika Anda memiliki daftar 50 pengguna, Anda membayar nama bidang 50 kali.
TOON menghilangkan redundansi ini dengan mendeklarasikan skema satu kali di header. Data mengikuti dalam format yang padat dan mengalir. Dalam praktiknya, hal ini biasanya menghasilkan pengurangan penggunaan token sebesar 30-60% untuk array seragam dibandingkan dengan JSON yang diformat. Saat Anda berurusan dengan jendela konteks besar atau panggilan API bervolume tinggi, efisiensi tersebut berarti tagihan yang lebih rendah dan latensi yang lebih rendah.
Mengirim Data: Aturan "Tunjukkan, Jangan Katakan".
Saat Anda membutuhkan LLM untuk menganalisis data, strategi cepat Anda sangat penting. Pemula sering kali menulis paragraf panjang yang menjelaskan format data. Dengan TOON, Anda tidak perlu melakukan itu.
LLM adalah mesin pencocokan pola. Mereka secara intuitif memahami TOON karena terlihat seperti gabungan YAML dan CSV—format yang telah mereka lihat miliaran kali selama pelatihan.
Untuk mengirim data, cukup bungkus dalam blok kode berpagar. Anda dapat memberi label toon, namun meskipun penyorot sintaks model tidak secara resmi mendukungnya, model akan segera memahami strukturnya.
Contoh Masukan
Daripada menjelaskan skemanya, cukup berikan bloknya:
Header users[3]{id,name,role,lastLogin} memberi tahu model segala hal yang perlu diketahui: jenis entitas, jumlah (3 baris), dan urutan bidang. Indentasi menangani hierarki. Sifat "mendokumentasikan sendiri" ini membebaskan permintaan Anda untuk fokus pada tugas logika aktual daripada instruksi penguraian sintaksis.
Ini adalah log aktivitas pengguna. Data dalam format TOON (indentasi 2 spasi, header eksplisit).
pengguna[3]{id,nama,peran,Login terakhir}:
1,Alice,admin,15-01-2025T10:30:00Z
2,Bob,pengguna,14-01-2025T15:22:00Z
3,Charlie,pengguna,13-01-2025T09:45:00Z
Tugas: Menganalisis log dan mengidentifikasi pengguna mana yang belum login dalam 24 jam terakhir.
Menghasilkan Output yang Andal
Mendapatkan LLM untuk membaca data itu mudah; mendapatkan menghasilkan data terstruktur yang valid adalah bagian yang sulit. Model suka berhalusinasi, memotong JSON, atau lupa kurung kurawal.
TOON menambahkan lapisan keamanan melalui sintaks headernya, khususnya hitungan [N]. Saat Anda meminta model untuk mengeluarkan TOON, Anda memintanya untuk berkomitmen pada suatu struktur sebelum model tersebut menghasilkan data.
Mendorong Generasi
Untuk mendapatkan hasil terbaik, berikan format header yang Anda harapkan dan perintahkan model untuk mengisi baris.
Dengan meminta model menghitung [N], Anda memaksakan proses "rantai pemikiran" yang mengharuskan model merencanakan ukuran keluaran. Batasan yang tampaknya kecil ini secara signifikan mengurangi kemungkinan model terpotong di tengah-tengah daftar.
Tugas: Mengembalikan daftar pengguna aktif dengan peran "pengguna".
Format: Gunakan TOON. Tetapkan nilai [N] di header agar sesuai dengan jumlah baris yang Anda hasilkan.
Format yang diharapkan:
pengguna[N]{id,nama,peran,Login terakhir}:
Memvalidasi dengan Mode Ketat
Saat Anda menerima respon dari LLM, Anda tidak boleh begitu saja mempercayainya. Di sinilah mode ketat perpustakaan TOON menjadi kekuatan super untuk aplikasi produksi.
Jika Anda menggunakan perpustakaan TypeScript, decoding dengan mode ketat memvalidasi bahwa baris yang dihasilkan cocok dengan jumlah header:
Hal ini memungkinkan Anda menangkap keluaran model "malas" atau pemotongan jaringan secara terprogram dengan segera, daripada menemukan data buruk di hilir aplikasi Anda.
impor { dekode } dari '@toon-format/toon';
coba {
// Jika model mengatakan [5] tetapi menyediakan 4 baris, ini menimbulkan kesalahan.
const data = decode(modelOutput, { ketat: benar });
console.log('Data valid diterima:',data);
} tangkapan (kesalahan) {
console.error('Halusinasi atau pemotongan model terdeteksi:', error.message);
}
Pengoptimalan Tingkat Lanjut: Trik Tab
Jika Anda terobsesi dengan pengoptimalan (dan di dunia LLM, Anda mungkin seharusnya begitu), Anda dapat meningkatkan efisiensi dengan memilih pembatas dengan bijak.
Koma adalah standar, namun tab (\t) sering direpresentasikan sebagai token tunggal dalam banyak kosakata pembuat token. Selain itu, tab jarang muncul di dalam bidang teks alami, sehingga mengurangi kebutuhan karakter escape (seperti membungkus string dalam tanda kutip).
Anda dapat menyandikan data Anda menggunakan tab sebelum mengirimkannya ke model:
Ingatlah untuk memberi tahu model dalam perintah: "Data TOON dipisahkan tab." Ini menciptakan representasi hiper-kompak yang sangat mudah diurai dan dihasilkan oleh model.
const toonPrompt = encode(data, { pembatas: '\t' });
Contoh Alur Kerja Lengkap
Mari kita lihat skenario dunia nyata: memfilter log sistem. Anda ingin mengirim log mentah ke model dan mendapatkan kembali daftar kesalahan terstruktur.
Permintaan:
Keluaran Model:
Log sistem dalam format TOON (dipisahkan dalam tab):
acara[4]{id,level,pesan,stempel waktu}:
1, kesalahan, Batas waktu koneksi habis, 15-01-2025T10:00:00Z
2, peringatkan, Kueri lambat, 15-01-2025T10:05:00Z
3,info,Login pengguna,15-01-2025T10:10:00Z
4, kesalahan, Kesalahan basis data025-01-15T10:15:00Z
Tugas: Ekstrak semua peristiwa dengan tingkat 'kesalahan'. Kembalikan hasilnya sebagai TOON yang valid dengan jumlah header yang diperbarui.
Hasilnya:
acara[2]{id,level,pesan,stempel waktu}:
1, kesalahan, Batas waktu koneksi habis, 15-01-2025T10:00:00Z
4, kesalahan, Kesalahan basis data, 15-01-2025T10:15:00Z
Model memfilter daftar dengan benar dan, yang terpenting, memperbarui header menjadi events[2]. Dengan mendekode respons ini, Anda mendapatkan array yang bersih dan aman untuk tipe yang siap untuk logika aplikasi Anda.
Ringkasan
TOON menjembatani kesenjangan antara keterbacaan manusia dan efisiensi mesin. Ini menghormati batasan biaya LLM sambil menyediakan struktur yang diperlukan untuk pengembangan perangkat lunak yang kuat.
- Tetap kecil: Gunakan 2-5 baris dalam contoh Anda; model akan menggeneralisasi.
- Bersikap eksplisit: Tentukan header dengan jelas sehingga model mengetahui skemanya.
- Validasi secara ketat: Gunakan metadata format untuk mengetahui kesalahan pembuatan.
Dengan beralih dari JSON untuk payload cepat, Anda tidak hanya menyimpan token—Anda juga membangun pipeline AI yang lebih andal.