Saya sangka saya bijak. Saya menulis satu fungsi pembantu yang menyisihkan tepat tiga puluh peratus daripada tetingkap konteks sebagai bajet pemikiran untuk saluran paip AI kami. Ia bersih, boleh diramal, dan berfungsi dengan cantik pada Opus 4.5. Kemudian saya beralih ke Opus 4.8 dan setiap satu permintaan gagal dengan ralat 400. Pengiraan token yang saya susun dengan teliti telah menjadi sampah dalam sekelip mata.

Corak lama itu mudah. Anda menetapkan nilai budget_tokens dan model akan membahagikan pemikirannya supaya muat di dalam had tersebut. Jika saya menyerahkan konteks 128K, kod saya akan menyisihkan kira-kira 38,000 token untuk penaakulan dan meninggalkan selebihnya untuk jawapan. Ia terasa bertanggungjawab. Seperti memandu kereta di bawah had laju.

Model itu sudah tiada. Versi baharu seperti Opus 4.7 dan 4.8 menggunakan pemikiran adaptif. Anda tidak lagi memilih satu angka. Sebaliknya, anda menghantar pelaras usaha (effort knob). Ia kedengaran seperti sekadar penukaran nama, tetapi kedua-dua kawalan ini tidak mungkin lebih berbeza. budget_tokens menetapkan siling keras tentang berapa banyak model dibenarkan berfikir. effort mengawal bagaimana model berfikir dan bertindak dari awal lagi. Satu adalah meter pam minyak. Yang satu lagi adalah peta enjin.

Memetakan Usaha kepada Kerja Sebenar

Apabila kawalan berubah, intuisi lama saya tidak lagi berfungsi. Saya perlu mempelajari semula apa yang sebenarnya dibeli oleh setiap tetapan. Saya menjalankan ujian merentasi trafik dalaman kami untuk mencari di mana setiap tahap usaha berakhir dalam praktiknya.

Klasifikasi dan penghalaan sepatutnya hampir sentiasa menggunakan usaha low. Tugasan ini adalah keputusan pantas. Adakah ini permintaan bayaran balik atau soalan jualan? Adakah entri log ini memerlukan eskalasi? Anda tidak memerlukan monolog. Usaha low mengekalkan latensi yang rendah dan kos yang sangat kecil.

Kebanyakan trafik aplikasi, iaitu kerja harian seperti ringkasan, penulisan semula, balasan sokongan, dan pengekstrakan kandungan, sesuai dengan usaha medium hingga high. Ini adalah titik keseimbangan. Model mendapat ruang yang mencukupi untuk menyelesaikan kekaburan sebenar tanpa membazirkan token pada tugasan yang tidak memerlukan rantaian pemikiran yang panjang.

Pengkodan dan gelung ejen (agentic loops) memerlukan usaha xhigh. Di sinilah kesilapan akan bertambah buruk. Jika model menulis pelan yang buruk pada pusingan pertama gelung panggilan alat (tool-calling loop), ia akan menghabiskan tiga langkah seterusnya untuk membaiki kerosakan tersebut. Atau lebih teruk lagi, ia akan memanggil alat yang salah, berhalusinasi parameter, dan membiarkan pengguna merenung aliran kerja yang rosak. Penaakulan yang lebih baik di peringkat awal dapat mengelakkan kemelut tersebut.

Tugas kritikal harus mendapat usaha max. Jangan gunakan ini untuk semua perkara. Simpan ia untuk saat di mana jawapan yang salah menelan kos yang lebih tinggi daripada sebarang bil token. Penyelarasan kewangan, semakan keselamatan, keputusan seni bina, dan triaj perubatan adalah padanan yang tepat. Jika ralat bermaksud manusia perlu menyelesaikan kekusutan tersebut selama berjam-jam, bayarlah untuk pemikiran tambahan itu.

Kejutan Kos

Inilah bahagian yang merosakkan model mental saya. Saya mengandaikan usaha max akan sentiasa melonjakkan kos saya. Untuk satu pusingan, memang benar. Jejak penaakulannya lebih panjang. Tetapi untuk tugasan ejen berbilang langkah, jumlah bil sering kali menurun.

Model merancang dengan lebih baik pada percubaan pertama. Ia membuat panggilan alat yang lebih sedikit. Ia menghalang dirinya daripada tersesat ke jalan buntu. Saya memerhatikan seorang ejen pengekstrakan data yang biasanya memerlukan lima pusingan berbalas-balas, selesai dalam dua pusingan sahaja kerana model mempunyai ruang penaakulan yang mencukupi untuk menghurai skema dengan betul pada permulaan. Apabila anda mengukur kos, lihat pada penyelesaian tugasan, bukan pada permintaan. Bajet pemikiran yang lebih besar bagi setiap langkah boleh bermakna langkah yang lebih sedikit secara keseluruhan.

Cara Migrasi Tanpa Merosakkan Perkara Lain

Jika anda masih mempunyai budget_tokens yang bertebaran dalam kod anda, inilah jalan keluar yang tepat. Jangan langkau langkah ketiga dan kelima. Saya pernah melakukannya, dan ia memakan masa satu petang untuk proses penyahpepijatan (debugging).

Cari budget_tokens dalam kod anda. Setiap instans perlu dibuang. Parameter ini sudah tidak berfungsi pada model baharu dan akan mencetuskan ralat 400.

Gantikan objek bajet dengan blok pemikiran adaptif. Gunakan thinking: { type: "adaptive" }.

Tambah output_config dengan tahap usaha yang eksplisit untuk setiap panggilan. Jangan biarkan ini kepada tetapan lalai global jika trafik anda bercampur. Titik akhir (endpoint) klasifikasi ringan anda tidak sepatutnya secara tidak sengaja mewarisi tetapan usaha yang sama dengan ejen pengkodan anda. Jadilah eksplisit pada tapak panggilan.

Padamkan fungsi pembantu pengiraan bajet anda. Saya tahu. Ia mungkin mempunyai ujian unit. Saya juga ada. Tetapi ia kini hanyalah beban yang tidak berguna. Platform tidak mahukan pengiraan token anda. Model mengendalikan rentaknya sendiri.

Buang temperature, top_p, dan top_k. Pada Opus 4.7 dan 4.8, parameter pensampelan ini akan menyebabkan ralat 400. Platform telah membuangnya daripada generasi ini. Trik pelarasan temperature lama anda tidak terpakai di sini, dan membiarkannya akan merosakkan migrasi anda secara senyap.

Uji setiap model secara individu. Opus 4.5 dan 4.8 adalah sangat berbeza. Konfigurasi yang berfungsi pada satu model tidak semestinya berfungsi pada model yang lain. Jika anda menyokong pelbagai versi, pecahkan logik anda atau layan ia sebagai backend yang berasingan.

Memperbaiki Pembekuan UI

Terdapat satu tingkah laku penstriman yang akan mengelirukan pengguna anda jika anda tidak menanganinya. Pada model baharu, blok pemikiran akan distrim keluar tetapi teks adalah kosong secara lalai. Dalam antara muka anda, ini kelihatan seperti jeda yang lama dan janggal tanpa sebarang kemajuan yang kelihatan. Pengguna akan menganggap aplikasi tersebut telah tergantung.

Untuk memperbaikinya, masukkan thinking: { type: "adaptive", display: "summarized" }. Itu akan memberikan anda penunjuk kemajuan yang kelihatan tanpa memaparkan aliran pemikiran mentah ke dalam tetingkap sembang. Frontend anda kekal responsif dan pengguna anda tahu sesuatu sedang berlaku di sebalik tabir.

Pengajaran Sebenar

Saya membina keseluruhan lapisan abstraksi di atas satu parameter yang tidak pernah dimaksudkan oleh vendor untuk kekal lama. Saya membungkus tetapan mereka dalam logik saya sendiri kerana saya fikir saya lebih memahami pertukaran tersebut berbanding platform itu sendiri. Saya silap. Pemikiran adaptif adalah pilihan yang lebih baik kerana model tersebut sebenarnya memutuskan bila ia perlu berfikir secara mendalam dan bila ia boleh berfungsi secara santai. Kod sumber saya kini lebih kecil. Hasilnya menjadi lebih tajam. Kadangkala langkah kejuruteraan yang betul adalah dengan memadam kod yang "bijak" dan membiarkan platform menjalankan tugasnya.

Jika anda ingin membaca nota migrasi asal, anda boleh menemuinya di sini. Untuk perbincangan praktikal seperti ini, sertai komuniti AI GyaanSetu di Telegram.