Melebihi had kadar: meningkatkan akses kepada Codex dan Sora
Oleh Jonah Cohen, Ahli Kakitangan Teknikal
Sepanjang tahun lalu, kedua-dua Codex dan Sora telah mengalami penerimaan yang pesat, dengan penggunaan yang meningkat lebih cepat daripada yang kami jangkakan pada asalnya. Kami telah melihat pola yang konsisten: pengguna mula meneroka, menemui nilai sebenar, dan kemudian menghadapi had kadar.
Had kadar boleh membantu melicinkan permintaan dan memastikan akses yang adil; namun, apabila pengguna mendapat nilai, mencapai had keras boleh mengecewakan. Kami mahukan cara untuk pengguna terus maju, sambil melindungi prestasi sistem dan kepercayaan pengguna terhadap pendekatan kami.
Untuk menyelesaikan ini, kami membina enjin akses masa nyata yang mengira penggunaan. Salah satu lapisan dalam enjin tersebut adalah keupayaan untuk membeli kredit. Apabila pengguna melebihi had kadar mereka, kredit membolehkan mereka terus menggunakan produk kami dengan menggunakan baki kredit mereka.
Di bawah ini terdapat sistem kompleks yang menggabungkan had, penjejakan penggunaan masa nyata, dan baki kredit dalam satu model akses. Catatan ini membincangkan mengapa penskalaan Codex dan Sora memerlukan pemikiran semula kawalan akses, bagaimana sistem masa nyata yang terbukti betul menggabungkan had kadar dan kredit bagi setiap permintaan, dan bagaimana asas itu kini membuka akses tambahan untuk kedua-dua produk.
Melihat dari sudut yang lebih luas, model akses tradisional cenderung memaksa satu pilihan:
- Had kadar boleh berguna pada mulanya, tetapi memberikan pengalaman buruk kepada pengguna apabila mereka kehabisan: “sila datang semula nanti”
- Pengebilan berasaskan penggunaan adalah fleksibel, tetapi menyebabkan pengguna membayar dari token pertama—tidak sesuai untuk menyokong penerokaan awal
Untuk Codex dan Sora, kedua-duanya tidak mencukupi jika berdiri sendiri. Jika kami hanya menaikkan had kadar, kami akan kehilangan kawalan penting untuk melicinkan permintaan dan memastikan keadilan, dan kami akan kehabisan kapasiti untuk melayani semua orang. Jika kami bergantung sepenuhnya pada pengebilan penggunaan tak segerak, kami akan memperkenalkan kelewatan, caj berlebihan, atau isu penyelarasan—tepat jenis masalah yang diperhatikan pengguna apabila mereka paling terlibat.
Apa yang kami perlukan sebaliknya ialah satu sistem hibrid tunggal yang menggabungkan had masa nyata dengan akses bayar mengikut penggunaan anda:
Sistem ini perlu untuk:
- Kuatkuasakan had kadar sehingga ia dicapai
- Beralih dengan lancar kepada kredit di dalam permintaan yang sama
- Buat keputusan tersebut dalam masa nyata
- Pastikan ketepatan dan kebolehauditan yang ketat apabila menjejaki penggunaan kredit
Salah satu peralihan konseptual utama yang kami lakukan ialah memodelkan akses sebagai air terjun keputusan. Daripada bertanya “adakah ini dibenarkan?”, kami bertanya “berapa banyak yang dibenarkan, dan dari mana?” Apabila mengira penggunaan, sistem akan melalui urutan berikut:
Model ini mencerminkan bagaimana pengalaman sebenar pengguna produk tersebut. Had kadar, peringkat percuma, kredit, promosi, dan kelayakan perusahaan semuanya hanyalah lapisan dalam timbunan keputusan yang sama. Dari perspektif pengguna, mereka tidak 'bertukar sistem'—mereka hanya terus menggunakan Codex dan Sora. Itulah sebabnya kredit terasa tidak kelihatan: ia hanyalah satu lagi elemen dalam aliran "waterfall".
Kami menilai platform pengebilan dan pemeteran penggunaan pihak ketiga untuk mengendalikan penggunaan kredit. Ia sangat sesuai untuk pengebilan dan pelaporan, tetapi tidak memenuhi dua syarat kritikal:
Apabila pengguna mencapai had dan mempunyai kredit yang tersedia, sistem mesti tahu segera. Pengiraan usaha terbaik atau tertangguh muncul sebagai blok mengejutkan, baki tidak konsisten, dan caj tidak tepat. Untuk produk interaktif seperti Codex dan Sora, kegagalan tersebut menjadi jelas dan mengecewakan.
Kami juga perlu menawarkan ketelusan dalam setiap hasil:
- Mengapa permintaan dibenarkan atau disekat
- Berapa banyak penggunaan yang telah digunakan
- Had atau baki yang mana telah dikenakan
Keupayaan ini perlu diintegrasikan dengan rapat ke dalam aliran keputusan kami, dan bukannya diselesaikan secara berasingan dalam platform pengebilan penggunaan yang terpisah yang hanya melihat satu bahagian daripada apa yang sedang berlaku. Untuk membolehkan pengguna mengakses produk kami tanpa menjejaskan kepercayaan, kami memerlukan kawalan penuh terhadap ketepatan, masa, dan kebolehlihatan. Itu mendorong kami ke arah penyelesaian dalaman.
Untuk menyokong ini, kami membina sistem penggunaan dan baki teragih yang direka khusus untuk keputusan akses segerak.
Pada tahap tinggi, sistem:
- Menjejak penggunaan setiap pengguna, setiap ciri
- Mengekalkan tetingkap had kadar
- Mengekalkan baki kredit masa nyata
- Mendebit baki secara idempoten melalui pemproses penstriman tak segerak
Setiap permintaan melalui satu laluan penilaian tunggal yang membuat keputusan masa nyata tentang berapa banyak penggunaan yang dibenarkan dengan menggunakan had kadar secara segerak dan, jika perlu, mengesahkan kredit yang mencukupi; kemudian ia mengembalikan satu hasil muktamad sambil menyelesaikan sebarang debit kredit secara tak segerak. Ini memastikan kelakuan yang konsisten merentasi produk dan menghapuskan logik yang digandakan merentasi pasukan.
Salah satu prinsip reka bentuk utama sistem ini ialah kami mesti dapat membuktikan bahawa pengebilan kami betul. Ini mencerminkan akar sokongan kredit kami, yang berasal daripada pelanggan perusahaan. Dalam rajah sistem di atas, kami mempunyai tiga set data berasingan yang semuanya saling berkait:
- Peristiwa penggunaan produk: Apa yang pengguna sebenarnya lakukan
- Acara pengewangan: Apa yang kami kenakan kepada pengguna untuk penggunaan mereka
- Kemas kini baki: Berapa banyak kami telah melaraskan baki kredit pengguna dan sebabnya
Set data ini bukan hasil sampingan yang biasa; ia sebenarnya memacu sistem, dengan setiap set data mencetuskan yang berikutnya. Memisahkan kejadian, caj berkaitan, dan apa yang kami debitkan membolehkan kami mengaudit, memainkan semula, dan mendamaikan setiap lapisan secara berasingan. Ini adalah pertukaran yang disengajakan di mana kami mengutamakan ketepatan yang boleh dibuktikan, dengan kos kemas kini baki kredit yang sedikit tertangguh. Bagaimana kami mencapai ini:
- Peristiwa penggunaan produk diterbitkan untuk semua aktiviti pengguna, sama ada ia mendorong penggunaan kredit atau tidak. Ini menyediakan jejak audit untuk aktiviti pengguna dan membolehkan kami menerangkan mengapa kami mengenakan, atau tidak mengenakan, kredit.
- Setiap acara mempunyai kunci idempotensi yang stabil, jadi percubaan semula, main semula, atau permulaan semula pekerja tidak akan mendebit baki dua kali, yang menghalang caj berganda. Ini juga membolehkan kami menjalankan penyelarasan kelompok untuk mengesahkan kerja kami di luar talian.
- Kami melakukan kemas kini baki secara tak segerak (tetapi masih hampir masa nyata) dan bukannya kemas kini segerak untuk mewujudkan jejak audit. Kami bertolak ansur dengan sedikit kelewatan dalam mengemas kini baki pengguna supaya kami dapat membuktikan bahawa sistem berfungsi dan meyakinkan pengguna kami bahawa kami tidak mengecaj mereka secara salah. Apabila kelewatan singkat itu menyebabkan kami terlebih guna baki kredit pengguna, kami secara automatik memulangkannya semula; kami memilih ketepatan yang boleh dibuktikan dan kepercayaan pengguna berbanding penguatkuasaan yang ketat.
- Kami mengurangkan Baki Kredit dan memasukkan rekod Kemas Kini Baki dalam satu transaksi pangkalan data atomik. Kemas kini baki disiri bagi setiap akaun, jadi permintaan serentak tidak akan pernah berlumba untuk menggunakan kredit yang sama. Rekod Kemas Kini Baki mengandungi kedua-dua jumlah debit serta atribusi kepada acara pengewangan yang mencetuskan kemas kini; membungkus ini dalam satu transaksi pangkalan data menjamin bahawa kami mempunyai jejak audit untuk setiap pelarasan kepada baki kredit.
Semua ketelitian ini menyokong satu objektif: untuk memudahkan dan memastikan keselamatan akses. Apabila orang sedang mencipta atau menulis kod, mereka tidak sepatutnya tertanya-tanya sama ada permintaan akan lepas, sama ada mereka akan dikenakan caj berlebihan, atau sama ada baki mereka tepat. Dengan memastikan penggunaan, pengebilan, dan baki adalah terbukti betul, kami memberikan pengguna sistem yang tidak mengganggu pengalaman mereka. Itulah yang membolehkan kami menggantikan had keras dengan akses berterusan—dan itulah yang menjadikan kredit boleh digunakan di tengah-tengah kerja sebenar, bukan hanya pada invois.
Prinsip panduan di sebalik pendekatan kami adalah melindungi momentum pengguna. Setiap keputusan seni bina merujuk kembali kepada hasil yang dihadapi pengguna: baki masa nyata menghalang gangguan yang tidak perlu, penggunaan atomik mengelakkan caj berganda, dan logik akses bersatu memastikan tingkah laku yang boleh diramal. Hasilnya ialah orang ramai boleh bekerja lebih lama, meneroka dengan lebih mendalam, dan membawa projek lebih jauh tanpa menghadapi had keras atau perubahan pelan pramatang.
Apabila pengguna terlibat, sistem sepatutnya membantu mereka meneruskan, bukan menghalang mereka. Had dan kredit lenyap ke latar belakang.
Membina pengalaman itu memerlukan pemikiran semula tentang akses, penggunaan, dan pengebilan sebagai satu sistem serta membina infrastruktur yang menganggap ketepatan sebagai ciri utama produk. Asas yang sama boleh diperluaskan kepada lebih banyak produk dari semasa ke semasa; Codex dan Sora hanyalah permulaan.


