00:00:00(musik ceria)
00:00:01Jadi Cloudflare baru saja mengumumkan dynamic workers,
00:00:04sebuah primitif worker tingkat rendah
00:00:06yang dapat dibuat secara programatik oleh worker yang sudah ada.
00:00:09Mereka seratus kali lebih cepat dan lebih efisien memori
00:00:12daripada kontainer tradisional karena berjalan pada isolat V8.
00:00:16Dan karena biayanya sangat murah,
00:00:18Anda bisa membuat sebanyak yang Anda mau
00:00:20untuk menjalankan kode buatan AI, pratinjau pengembangan,
00:00:23otomatisasi khusus, dan banyak lagi.
00:00:25Maksud saya, mereka bahkan bilang Anda bisa menjalankan 1 juta dynamic workers
00:00:29per detik jika Anda mau.
00:00:31Tapi apakah fakta bahwa Anda hanya bisa menjalankan
00:00:33JavaScript pada mereka membatasi penggunaannya?
00:00:36Klik subscribe dan mari kita cari tahu.
00:00:37(musik ceria)
00:00:40Tahun lalu, saya membuat video tentang sandbox Cloudflare,
00:00:44yang pada dasarnya adalah kontainer Linux berumur pendek
00:00:47yang berjalan pada durable object.
00:00:49Jika itu tidak masuk akal bagi Anda,
00:00:50silakan tonton video tersebut.
00:00:52Tapi mereka sempurna jika Anda menginginkan kontainer OS lengkap
00:00:55dengan sistem berkas dan kemampuan menjalankan hampir semua bahasa
00:00:59dan biner apa pun.
00:01:01Namun jika Anda menginginkan sesuatu yang agak lebih cepat,
00:01:03sebenarnya jauh lebih cepat dan jauh lebih ringan
00:01:06dengan kemampuan menjalankan sandbox bersamaan tanpa batas
00:01:09dalam sesuatu yang memiliki batasan yang sama dengan worker biasa,
00:01:12maka Anda mungkin ingin menggunakan dynamic worker.
00:01:15Mari kita bahas cara menyiapkannya.
00:01:16Jadi di sini ada worker dasar yang baru saja saya buat dengan Wrangler,
00:01:19penuh dengan kesalahan TypeScript,
00:01:21mungkin karena saya lupa menjalankan tipe Wrangler.
00:01:23Tetapi dalam file konfigurasi Wrangler kami,
00:01:26saya telah menambahkan array worker loaders ini
00:01:28dengan binding yang disebut loader.
00:01:30Sekarang ini bisa disebut apa pun yang Anda inginkan,
00:01:32tapi saya memilih loader karena lebih konvensional.
00:01:34Dan binding ini memungkinkan kita untuk membuat
00:01:37dan mengontrol worker lainnya.
00:01:38Jadi dalam kode yang diperbarui, kita memiliki konstanta worker baru,
00:01:42yang menggunakan binding loader dengan nilai-nilai ini.
00:01:45Sekarang Anda bisa membayangkan ini sebagai file konfigurasi Wrangler
00:01:49untuk worker yang bersarang,
00:01:50tetapi di sini tanggal kompatibilitas memberi tahu worker
00:01:53versi runtime apa yang harus digunakannya.
00:01:55Dan inilah kode yang akan dijalankannya.
00:01:57Jadi seperti yang Anda lihat, kodenya sangat mirip
00:01:59dengan worker itu sendiri.
00:02:00Ia memiliki fungsi fetch
00:02:02dengan argumen request env dan context.
00:02:05Dan yang dilakukannya di sini hanyalah merespons
00:02:06dengan "hello world" dari sandbox.
00:02:08Kami kemudian mencegah semua akses jaringan,
00:02:10menjalankan fungsi fetch dengan argumen request
00:02:13dari worker awal dan mengembalikan hasilnya.
00:02:16Jadi jika kita menjalankan worker kita secara lokal lalu curl localhost,
00:02:19kita akan melihat "hello from the sandbox".
00:02:21Tetapi jika kita menjalankan permintaan curl yang sama lagi,
00:02:24kita akan mendapatkan kesalahan.
00:02:24Dan ini karena saat ini
00:02:26kita sedang memuat worker yang benar-benar baru.
00:02:28Tapi yang bisa kita lakukan sebagai gantinya adalah mengambil worker yang sudah ada,
00:02:31yang akan kita beri nama worker satu
00:02:33dan kemudian jalankan kodenya sebagai fungsi asinkron.
00:02:35Artinya sekarang jika kita jalankan curl, kita dapat "hello from the sandbox".
00:02:38Tapi jika kita menjalankannya lagi, ia mengambil informasi
00:02:41dari sandbox worker satu yang sudah ada.
00:02:43Nah, apa yang baru saja saya tunjukkan
00:02:45tentu saja adalah contoh yang sangat sederhana,
00:02:47tapi Anda bisa melakukan beberapa hal keren dengan dynamic workers
00:02:50seperti menentukan binding khusus,
00:02:52seperti metode post chatroom ini untuk membuat stub,
00:02:55yang dikomunikasikan oleh worker menggunakan cap n proto,
00:02:57yang ya, kami sudah membuat videonya,
00:02:59jadi silakan tonton jika Anda tertarik.
00:03:00Anda dapat menggunakan dependensi NPM seperti Hono
00:03:03dan membundelnya menggunakan fungsi create worker.
00:03:05Dan Anda bahkan dapat mencegat permintaan keluar
00:03:08untuk melakukan hal-hal seperti menyuntikkan kredensial.
00:03:10Tapi salah satu alasan besar menggunakan dynamic workers
00:03:13adalah untuk menjalankan kode yang dihasilkan oleh agen AI.
00:03:17Jadi mari kita coba lakukan itu.
00:03:18Ini adalah beberapa kode dari E2B cookbook
00:03:21yang menggunakan SDK Anthropic untuk menjalankan Sonnet 3.5
00:03:25dengan prompt sistem ini dan alat khusus
00:03:28untuk mengeksekusi beberapa Python di Jupyter notebook.
00:03:31Jadi cara kerjanya adalah ia akan mendeteksi
00:03:33kapan alat khusus tersebut digunakan
00:03:34dan kemudian menjalankannya di dalam sandbox E2B,
00:03:38yang kodenya bisa kita lihat di sini.
00:03:40Sekarang ia menjalankannya dengan prompt yang sangat spesifik ini
00:03:42untuk menghitung nilai pi menggunakan metode Monte Carlo
00:03:46pada seribu iterasi.
00:03:47Dan karena ia memiliki akses ke sistem berkas,
00:03:50ia dapat membuat gambar PNG ini
00:03:52dan menyimpannya untuk diunduh oleh pengguna
00:03:54atau apa pun yang diinginkan pengguna.
00:03:56Sayangnya, dynamic workers tidak memiliki akses
00:03:58ke sistem berkas,
00:04:00meskipun mereka dapat membuat yang virtual
00:04:02dengan pustaka shell ini.
00:04:04Tapi karena mereka berjalan melalui worker,
00:04:06kita dapat memberikan detail kepadanya seperti bucket R2,
00:04:08yang merupakan versi S3 milik Cloudflare
00:04:11di mana gambar tersebut dapat disimpan.
00:04:12Jadi jika kita melihat kodenya,
00:04:14yang mirip dengan yang dari E2B,
00:04:16pertama-tama kita bisa melihat prompt sistem yang sedang digunakan.
00:04:19Dan alat eksekusi Python khusus
00:04:22yang dalam hal ini tidak menggunakan Jupyter notebook,
00:04:25tetapi menghasilkan SVG dari visualnya.
00:04:28Dan di sini kita punya kode untuk worker
00:04:30yang selain menjalankan JavaScript juga bisa menjalankan Python.
00:04:33Jadi kita bisa lihat di sini ia menggunakan Sonnet 4.6.
00:04:35Ini adalah prompt yang digunakan.
00:04:37Di sini kode agen dieksekusi di sandbox.
00:04:41Dan respons dari sandbox
00:04:43kembali ke worker utama,
00:04:45yang mencarinya untuk kode SVG
00:04:47dan kemudian menyimpannya di R2.
00:04:49Jadi jika kita mengunjungi URL itu, butuh waktu agak lama,
00:04:51tetapi ia benar-benar menghasilkan halaman
00:04:53dengan informasi yang relevan dari Claude.
00:04:55Dan jika kita gulir ke bawah,
00:04:56kita bisa melihat SVG ini yang sedang dimuat dari R2.
00:05:01Memang terlihat sangat berbeda dari yang milik E2B,
00:05:03tapi saya percaya bahwa Claude Sonnet
00:05:04telah menghasilkan informasi yang benar.
00:05:06Dan tentu saja saya tadi menyebutkan bahwa sangat mungkin
00:05:09untuk membuat sebanyak mungkin dynamic workers secara programatik,
00:05:13yang bisa Anda lakukan dengan kode seperti ini.
00:05:16Itu adalah loop for yang membuat worker-worker baru
00:05:19berdasarkan nilai dari API.
00:05:21Dan ia juga memeriksa apakah worker sudah ada
00:05:23dan menggunakannya kembali jika ada.
00:05:25Kode yang dijalankannya pada dasarnya adalah console log
00:05:27dan respons dari worker
00:05:29dengan ID spesifik dari worker tersebut
00:05:31berdasarkan indeks dari loop for.
00:05:32Jadi dengan kode yang berjalan,
00:05:34saya bisa membuat 50 dynamic workers yang baru
00:05:36dan kita bisa melihat semuanya dibuat secara instan.
00:05:40Itu sangat cepat.
00:05:41Sekarang mari kita coba dengan 10.000,
00:05:43tapi saya tidak akan melakukannya secara lokal
00:05:44karena saya tidak ingin komputer saya meledak.
00:05:46Jadi saya telah menerapkan worker induk saya ke Cloudflare
00:05:49sehingga saya bisa menggunakan infrastruktur mereka.
00:05:50Jadi di sini saya akan membuat 10.000 worker yang berbeda.
00:05:53Dan jika saya tekan enter, semuanya dibuat dengan sangat cepat.
00:05:56Kita bisa melihat ada halaman berisi 30 dari mereka di sini
00:05:59sehingga saya bisa terus melihat semua ID worker yang berbeda.
00:06:03Dan sebenarnya semakin jauh saya pergi, semakin banyak halaman yang ditampilkan.
00:06:05Dan saya bisa berkomunikasi dengan worker tertentu
00:06:07seperti worker 1156,
00:06:09yang merespons dengan "hello from worker 1156".
00:06:12Jadi itulah ringkasan singkat tentang dynamic workers
00:06:15yang sudah digunakan oleh Cloudflare untuk mode kode
00:06:18dan Zite untuk menjalankan aplikasi buatan LLM.
00:06:21Tetapi saya harus menyebutkan bahwa meskipun sekarang gratis,
00:06:24itu tidak akan gratis selamanya.
00:06:25Jadi meskipun Anda bisa menjalankan satu juta dynamic workers
00:06:28per detik, Anda mungkin ingin menahan diri
00:06:30kecuali Anda memiliki anggaran yang besar.
00:06:32Dan selagi kita membahas tentang Cloudflare,
00:06:34jika Anda ingin mempelajari lebih lanjut tentang SDK VIVE sumber terbuka mereka
00:06:38yang memungkinkan Anda membangun generator aplikasi seperti vZero dan Lovable,
00:06:42maka tontonlah video berikutnya.