Pada Oktober 2024, kami telah membincangkan tentang menyimpan berbilion-bilion log daripada aplikasi AI anda menggunakan AI Gateway, dan cara kami menggunakan Platform Pembangun Cloudflare untuk melakukan ini.
Pada Oktober 2024, kami membincangkan cara menyimpan berbilion-bilion log daripada aplikasi AI anda menggunakan AI Gateway, dan cara kami menggunakan Platform Pembangun Cloudflare untuk melakukan ini.
Dengan AI Gateway sudah memproses lebih 3 bilion log dan mengalami pertumbuhan pesat, bilangan sambungan ke platform terus meningkat dengan stabil. Untuk membantu pembangun mengurus skala ini dengan lebih berkesan, kami ingin menawarkan alternatif untuk melaksanakan HTTP/2 keep-alive untuk mengekalkan sambungan HTTP(S) yang berterusan, dengan itu mengelakkan overhed jabat tangan berulang dan rundingan TLS dengan setiap sambungan HTTP baharu ke AI Gateway . Kami faham bahawa melaksanakan HTTP/2 boleh menimbulkan cabaran, terutamanya apabila banyak perpustakaan dan alatan mungkin tidak menyokongnya secara lalai dan kebanyakan bahasa pengaturcaraan moden mempunyai perpustakaan WebSocket yang mantap tersedia.
Dengan mengambil kira perkara ini, kami menggunakan Platform Pembangun Cloudflare dan Objek Tahan Lama (ya, sekali lagi!) untuk membina API WebSockets yang mewujudkan sambungan tunggal yang berterusan, membolehkan komunikasi berterusan.
Melalui API ini, semua penyedia AI yang disokong oleh AI Gateway boleh diakses melalui WebSocket, membolehkan anda mengekalkan satu sambungan TCP antara aplikasi klien atau pelayan anda dan AI Gateway. Bahagian yang terbaik? Walaupun pembekal pilihan anda tidak menyokong WebSockets, kami mengendalikannya untuk anda, menguruskan permintaan kepada pembekal AI pilihan anda.
Dengan menyambung melalui WebSocket ke AI Gateway, kami membuat permintaan kepada perkhidmatan inferens untuk anda menggunakan protokol yang disokong penyedia (HTTPS, WebSocket, dll.), dan anda boleh memastikan sambungan terbuka untuk melaksanakan seberapa banyak permintaan inferens seperti yang anda mahu.
Untuk menjadikan sambungan anda ke AI Gateway lebih selamat, kami juga memperkenalkan pengesahan untuk AI Gateway. API WebSockets baharu akan memerlukan pengesahan. Apa yang anda perlu lakukan ialah mencipta token Cloudflare API dengan kebenaran “AI Gateway: Run” dan hantarkannya dalam pengepala cf-aig-authorization.
Dalam rajah alir di atas:
1. Apabila Gerbang Disahkan didayakan dan token yang sah disertakan, permintaan akan berjaya diluluskan.
2. Jika Gerbang Disahkan didayakan, tetapi permintaan tidak mengandungi pengepala kebenaran cf-aig yang diperlukan dengan token yang sah, permintaan itu akan gagal. Ini memastikan hanya permintaan yang disahkan melalui get laluan.
3. Apabila Gerbang Disahkan dilumpuhkan, pengepala cf-aig-authorization dipintas sepenuhnya dan sebarang token — sama ada sah atau tidak sah — diabaikan.
Cara kami membinanya
Kami baru-baru ini menggunakan Objek Tahan Lama (DO) untuk menskalakan penyelesaian pengelogan kami untuk AI Gateway, jadi menggunakan WebSockets dalam DO yang sama adalah kesesuaian semula jadi.
Apabila sambungan WebSocket baharu diterima oleh Cloudflare Workers kami, kami melaksanakan pengesahan dalam dua cara untuk menyokong pelbagai keupayaan pelanggan WebSocket. Kaedah utama melibatkan pengesahan token Cloudflare API melalui pengepala cf-aig-authorization, memastikan token itu sah untuk akaun penghubung dan get laluan.
Walau bagaimanapun, disebabkan oleh pengehadan dalam pelaksanaan WebSocket penyemak imbas, kami juga menyokong pengesahan melalui pengepala "sec-websocket-protocol". Pelanggan WebSocket Penyemak Imbas tidak membenarkan pengepala tersuai dalam API standard mereka, merumitkan penambahan token pengesahan dalam permintaan. Walaupun kami tidak mengesyorkan anda menyimpan kunci API dalam penyemak imbas, kami memutuskan untuk menambah kaedah ini untuk menambahkan lebih banyak kefleksibelan kepada semua pelanggan WebSocket.
Selepas langkah pengesahan awal ini, kami meningkatkan sambungan kepada Objek Tahan Lama, bermakna ia kini akan mengendalikan semua mesej untuk sambungan. Sebelum sambungan baharu diterima sepenuhnya, kami menjana UUID rawak, jadi sambungan ini boleh dikenal pasti antara semua mesej yang diterima oleh Objek Tahan Lama. Semasa sambungan terbuka, sebarang tetapan Gerbang AI yang diluluskan melalui pengepala — seperti cf-aig-skip-cache (yang memintas cache apabila ditetapkan kepada benar) — disimpan dan digunakan pada semua permintaan dalam sesi. Walau bagaimanapun, pengepala ini masih boleh ditindih atas dasar setiap permintaan, sama seperti dengan Titik Akhir Universal hari ini.
Cara ia berfungsi
Setelah sambungan diwujudkan, Objek Tahan Lama mula mendengar mesej masuk. Mulai saat ini, pengguna boleh menghantar mesej dalam format universal AI Gateway melalui WebSocket, memudahkan peralihan aplikasi anda daripada persediaan HTTP sedia ada kepada komunikasi berasaskan WebSockets.
Apabila mesej baharu sampai ke Objek Tahan Lama, ia diproses menggunakan kod yang sama yang menggerakkan Titik Akhir Universal HTTP, membolehkan penggunaan semula kod lancar merentas Pekerja dan Objek Tahan Lama — salah satu faedah utama membina Cloudflare.
Untuk permintaan bukan penstriman, respons dibungkus dalam sampul JSON, membolehkan kami memasukkan maklumat tambahan di luar inferens AI itu sendiri, seperti ID log AI Gateway untuk permintaan itu.
Berikut ialah contoh jawapan untuk permintaan di atas:
Untuk permintaan penstriman, AI Gateway menghantar mesej awal dengan metadata permintaan memberitahu pembangun strim itu bermula.
Selepas mesej awal ini, semua bahagian penstriman disampaikan dalam masa nyata kepada sambungan WebSocket apabila ia tiba daripada pembekal inferens. Ambil perhatian bahawa hanya medan eventId disertakan dalam metadata untuk potongan penstriman ini (maklumat lanjut tentang medan baharu ini di bawah).
Pendekatan ini mempunyai dua tujuan:
Atas ialah kandungan terperinci Inferens AI Masa Nyata pada Skala dengan Soket Web dan Objek Tahan Lama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!