Kejuruteraan konteks: kerja sebelum gesaan
· 6 min read · Filippo Spinella · AI, Agents, Prompting, Developer Tools
Perkataan masa kini, dalam dunia kecil ejen AI, ialah kejuruteraan konteks.
Nampaknya satu lagi label dicipta untuk menjual sesuatu yang telah kami lakukan. Sebahagiannya adalah. Walau bagaimanapun, seperti yang sering berlaku, label itu terperangkap kerana ia memberi nama kepada kesakitan yang sebenar.
Kesakitan adalah ini: model tidak gagal hanya kerana mereka "tidak berfikir". Mereka sering gagal kerana kami menghantar mereka bekerja dengan bilik yang salah.
Kami memberi mereka arahan lama. Kami menyembunyikan fail penting daripadanya. Kami memberikan mereka dokumen yang terlalu panjang dan tidak menyatakan apa yang penting. Kami menunjukkan kepada mereka log tanpa keutamaan. Kami memberi mereka sepuluh alat tanpa menjelaskan bila untuk menggunakannya. Kemudian kami terkejut jika ejen itu bergerak seperti orang yang terbangun di apartmen yang tidak diketahui.
Gesaan ialah frasa yang anda ucapkan kepadanya. Konteksnya ialah dunia yang anda sediakan di sekelilingnya.
Daripada kejuruteraan segera kepada kejuruteraan konteks
Kejuruteraan segera sering dianggap sebagai menulis. Pilih perkataan yang betul, tanya dengan cara yang betul, tambah contoh, nyatakan format.
Kejuruteraan konteks lebih dekat dengan seni bina.
Anda tidak hanya bertanya "bagaimana cara saya merumuskan permintaan?". Ia bertanya:
- apakah maklumat yang benar-benar diperlukan?
- apakah bunyi bising?
- apa yang perlu dipulihkan dengan cepat?
- apa yang perlu diingat?
- alatan yang manakah harus didedahkan?
- arahan yang manakah stabil dan yang mana bergantung pada tugasan?
- bagaimana saya boleh membuat ejen memahami apa yang berwibawa?
Ia adalah perubahan yang halus tetapi besar. Kerana apabila anda bekerja dengan ejen, konteks bukanlah blok statik. Ia berubah pada setiap langkah.
Ejen membuka fail, mempelajari sesuatu, menjalankan ujian, menerima ralat, mengemas kini rancangan, memanggil alat, menemui pergantungan. Dengan setiap pusingan dia perlu memutuskan apa yang perlu dibawa dan apa yang perlu ditinggalkan.
Ini adalah kejuruteraan.
Konteksnya bukan tapak pelupusan sampah
Templat dengan tetingkap konteks yang besar memberi kami godaan: mari kita masukkan semuanya.
Ia boleh difahami. Jika saya mempunyai sejuta token, mengapa saya harus memilih?
Kerana walaupun anda boleh memasukkan semuanya, itu tidak bermakna semuanya membantu. Sesungguhnya, bunyi bising mempunyai kos. Ia kos token, ia memerlukan perhatian, ia kos kependaman, ia kos kualiti. Model boleh tersesat dalam butiran yang tidak berkaitan sama seperti kami apabila kami membuka dua puluh tab dan tidak lagi mengingati sebabnya.
Konteks yang baik mempunyai hierarki:
- arahan dan polisi sistem;
- objektif khusus;
- status semasa;
- data yang berkaitan;
- kekangan;
- alatan yang ada;
- mengesan keputusan yang telah dibuat.
Tidak perlu merawat semuanya pada tahap yang sama. Arahan pengguna bernilai lebih daripada nota lama. Ujian yang gagal kini bernilai lebih daripada keutamaan estetik dari tiga bulan lalu. Dasar keselamatan bernilai lebih daripada pintasan pengeluaran.
Kejuruteraan konteks juga bermakna memberi pemberat, bukan hanya data.
Ingatan: kurang ingat, ingat lebih baik
Memori dalam ejen adalah salah satu topik yang paling licin.
Sebagai pengguna, anda mahu ejen mengenali anda. Anda mahu dia mengingati nada, rancangan, konvensyen, perkara yang telah diputuskan. Sebagai seorang jurutera, anda tahu bahawa setiap ingatan yang berterusan juga merupakan risiko: ia boleh menjadi salah, lama, terlalu peribadi, terlalu generik, tidak dapat disahkan.
Ingatan yang berguna harus mempunyai sekurang-kurangnya tiga kualiti:
- asal: dari mana maklumat ini datang?
- tarikh: bila ia benar?
- tujuan: apakah jenis tugas yang patut digunakan?
Tanpa tiga perkara ini, ingatan menjadi khurafat.
Saya suka memikirkan ingatan agen sebagai buku kerja, bukan sebagai minda ajaib. Terdapat nota sementara, keputusan yang disahkan, pilihan gaya, kekangan teknikal, pautan ke sumber. Beberapa perkara luput. Ada yang perlu ditulis semula. Ada yang mesti disingkirkan kerana ejen itu salah sangka.
Sistem yang baik mesti menjadikan penyelenggaraan ini normal. Bukan heroik.
Pengambilan semula dan alatan bukanlah perkara yang sama
Apabila kita bercakap tentang konteks, kita sering berakhir dengan serta-merta pada RAG. Pembenaman, pangkalan data vektor, chunking, penarafan semula.
Semua berguna. Tetapi pengambilan semula hanyalah satu cara untuk membawa maklumat kepada model. Dia bukan seorang sahaja.
Ejen boleh mendapatkan konteks dengan membaca fail, menanyakan API, memanggil pelayan MCP, membuka penyemak imbas, menjalankan ujian, mencari Slack, melihat papan pemuka, bertanya kepada manusia.
Bahagian yang menarik ialah menentukan laluan mana yang hendak digunakan dan bila.
Jika ejen perlu menjawab soalan sejarah, mungkin hanya mencari semula sudah memadai. Jika dia perlu membetulkan pepijat, dia perlu membaca kod sebenar. Jika dia perlu memahami mengapa penggunaan gagal, dia perlu melihat log baru. Jika anda perlu menulis surat kepada pelanggan, anda perlu mendapatkan semula nada, sejarah dan status tiket. Jika dia mesti bertindak dalam pengeluaran, dia mesti meminta izin.
Konteks bukan pangkalan data. Ia adalah satu aliran kerja.
Ejen yang baik juga tahu mengabaikan
Tanda kematangan dalam ejen ialah keupayaan untuk berkata: Saya tidak memerlukan maklumat ini.
Nampak remeh, tetapi sangat sukar. Banyak sistem agen terkumpul. Setiap panggilan alat menambah teks. Setiap ralat kekal dalam penimbal. Setiap fail yang dibaca menambah pada timbunan. Pada akhirnya model itu mempunyai sejarah yang sangat panjang dan tiada peta.
Pemampatan diperlukan. Sintesis perantaraan diperlukan. Ia perlu distrukturkan.
Bukan "itu sahaja yang berlaku", tetapi:
- objektif masih sah;
- hipotesis semasa;
- fail sudah diperiksa;
- keputusan yang dibuat;
- risiko terbuka;
- tindakan seterusnya.
Ini menjadikan ejen kurang teater dan lebih membantu. Bukan kerana dia kelihatan lebih bijak, tetapi kerana dia bekerja dengan meja yang kemas.
Kejuruteraan konteks untuk pasukan, bukan untuk artis segera
Sebab topik ini menarik minat saya ialah ia mengalihkan tanggungjawab daripada individu kepada sistem.
Dalam kejuruteraan segera, orang yang boleh bercakap dengan model yang terbaik selalunya menang. Dalam kejuruteraan konteks, pasukan yang paling baik mengatur kerjanya menang: dokumentasi, konvensyen, isu, log, ujian, pemilikan, penamaan, sumber.
Repositori yang bersih menjadi konteks yang lebih baik. Isu yang ditulis dengan baik menjadi bahan api yang lebih baik. Buku panduan yang dikemas kini menjimatkan token dan kebimbangan. Log perubahan yang jelas mengurangkan halusinasi.
Ini berita baik dan agak tidak selesa. Cantik kerana ia memberi ganjaran kepada amalan yang baik. Menyusahkan kerana anda tidak boleh menyelesaikan segala-galanya dengan gesaan yang bijak.
Ejen menguatkan kebersihan sistem yang mereka temui.
Bagaimana saya akan menggunakannya esok
Jika saya memperkenalkan kejuruteraan konteks ke dalam projek sebenar, saya akan bermula dari perkara kecil:
- fail arahan projek yang pendek dan diselenggara;
- contoh baik output yang dijangkakan;
- senarai alat dan kes yang tersedia untuk menggunakannya;
- keputusan seni bina yang ditulis dengan cara yang boleh dirujuk;
- isu dengan konteks mandatori minimum;
- mudah untuk mendapatkan semula log dan ujian;
- ingatan berterusan yang boleh diubah suai oleh manusia.
Kemudian saya akan mengukur perkara mudah: berapa kali ejen perlu meminta penjelasan atau pergi ke arah yang salah?
Jika ia kerap berlaku, saya tidak akan menambah model yang lebih besar serta-merta. Saya akan melihat konteksnya.
Bacaan saya
Kejuruteraan konteks adalah perkataan yang agak kembung, ya. Tetapi konsepnya mantap.
Ia mengingatkan kita bahawa kecerdasan ejen bukan hanya dalam model. Ia terletak pada persekitaran yang kita sediakan untuknya: apa yang dia lihat, apa yang dia ingat, apa yang dia boleh buat, apa yang dia dilarang lakukan, sumber mana yang dia akui sebagai benar.
Bahagian manusia adalah ini: menyediakan konteks dengan baik adalah satu bentuk penjagaan. Ia memberitahu ejen, tetapi juga pasukan, "Saya tidak mahu anda meneka, saya mahu anda mempunyai apa yang anda perlukan."
Kurang sihir. Bilik yang lebih bersih. Ejen memerlukannya sama seperti kita.