00:00:00(उत्साहपूर्ण संगीत)
00:00:01तो Cloudflare ने हाल ही में डायनेमिक वर्कर्स की घोषणा की है,
00:00:04जो एक लो-लेवल वर्कर प्रिमिटिव है
00:00:06जिसे किसी मौजूदा वर्कर द्वारा प्रोग्रामेटिक रूप से बनाया जा सकता है।
00:00:09ये पारंपरिक कंटेनर की तुलना में सौ गुना तेज़
00:00:12और मेमोरी के मामले में अधिक कुशल हैं क्योंकि ये V8 आइसोलेट्स पर चलते हैं।
00:00:16और क्योंकि ये इतने सस्ते हैं,
00:00:18तो आप जितने चाहें उतने वर्कर बना सकते हैं
00:00:20AI द्वारा जनरेटेड कोड चलाने, डेवलपमेंट प्रीव्यू,
00:00:23कस्टम ऑटोमेशन और बहुत कुछ करने के लिए।
00:00:25मेरा मतलब है, उन्होंने यहाँ तक कहा कि आप चाहें तो
00:00:29प्रति सेकंड 10 लाख डायनेमिक वर्कर्स चला सकते हैं।
00:00:31लेकिन क्या इस पर केवल जावास्क्रिप्ट ही
00:00:33चला पाने की मजबूरी इसके उपयोग को सीमित करती है?
00:00:36सब्सक्राइब बटन दबाएं और आइए इसका पता लगाते हैं।
00:00:37(उत्साहपूर्ण संगीत)
00:00:40पिछले साल, मैंने Cloudflare सैंडबॉक्स पर एक वीडियो बनाया था,
00:00:44जो मूल रूप से कम समय के लिए चलने वाले लिनक्स कंटेनर हैं
00:00:47जो ड्यूरेबल ऑब्जेक्ट पर चलते हैं।
00:00:49अगर आपको यह समझ नहीं आया,
00:00:50तो आप जाकर वह वीडियो देख सकते हैं।
00:00:52लेकिन अगर आप फ़ाइल सिस्टम वाला एक पूरा OS कंटेनर चाहते हैं
00:00:55जो लगभग किसी भी भाषा और किसी भी बाइनरी
00:00:59को चलाने में सक्षम हो, तो वे इसके लिए एकदम सही हैं।
00:01:01लेकिन अगर आप कुछ ऐसा चाहते हैं जो थोड़ा तेज़ हो,
00:01:03वास्तव में बहुत अधिक तेज़ और बहुत हल्का हो
00:01:06जिसमें असीमित कंकरेंट सैंडबॉक्स चलाने की क्षमता हो
00:01:09और जिसकी सीमाएं एक सामान्य वर्कर जैसी ही हों,
00:01:12तो आप डायनेमिक वर्कर का चुनाव कर सकते हैं।
00:01:15आइए देखते हैं कि इसे सेटअप कैसे करना है।
00:01:16तो यहाँ एक बेसिक वर्कर है जिसे मैंने अभी Wrangler से बनाया है,
00:01:19जिसमें कुछ टाइपस्क्रिप्ट एरर्स हैं,
00:01:21शायद इसलिए क्योंकि मैं Wrangler types चलाना भूल गया।
00:01:23लेकिन हमारी Wrangler कॉन्फ़िगरेशन फ़ाइल में,
00:01:26मैंने यह 'worker loaders' एरे जोड़ा है
00:01:28जिसमें एक बाइंडिंग है जिसे 'loader' कहा जाता है।
00:01:30अब इसे आप जो चाहें कह सकते हैं,
00:01:32लेकिन मैंने 'loader' चुना है क्योंकि यह अधिक पारंपरिक है।
00:01:34और यह बाइंडिंग हमें अन्य वर्कर्स को
00:01:37बनाने और नियंत्रित करने की अनुमति देती है।
00:01:38तो अपडेटेड कोड में, हमारे पास एक नया वर्कर कॉन्स्टेंट है,
00:01:42जो इन वैल्यूज के साथ लोडर बाइंडिंग का उपयोग करता है।
00:01:45अब आप इसकी कल्पना नेस्टेड वर्कर के लिए
00:01:49एक Wrangler कॉन्फ़िग फ़ाइल की तरह कर सकते हैं,
00:01:50जहाँ कॉम्पैटिबिलिटी डेट वर्कर को बताती है
00:01:53कि उसे किस रनटाइम वर्ज़न का उपयोग करना चाहिए।
00:01:55और यहाँ वह कोड है जिसे यह चलाने वाला है।
00:01:57तो जैसा कि आप देख सकते हैं, कोड बिल्कुल
00:01:59एक वर्कर की तरह ही है।
00:02:00इसमें एक फ़ेच (fetch) फ़ंक्शन है
00:02:02जिसमें रिक्वेस्ट, env और कॉन्टेक्स्ट आर्ग्युमेंट्स हैं।
00:02:05और यह यहाँ बस सैंडबॉक्स से
00:02:06"Hello World" का रिस्पॉन्स दे रहा है।
00:02:08इसके बाद हमने सभी नेटवर्क एक्सेस को रोक दिया है,
00:02:10शुरुआती वर्कर के रिक्वेस्ट आर्ग्युमेंट्स के साथ फ़ेच फ़ंक्शन चला रहे हैं
00:02:13और रिजल्ट्स वापस कर रहे हैं।
00:02:16तो अगर हम अपना वर्कर लोकली चलाएं और फिर curl localhost करें,
00:02:19तो हमें सैंडबॉक्स से "Hello World" दिखना चाहिए।
00:02:21लेकिन अगर हम वही curl रिक्वेस्ट दोबारा चलाते हैं,
00:02:24तो हमें एक एरर मिलेगा।
00:02:24और ऐसा इसलिए है क्योंकि अभी
00:02:26हम एक बिल्कुल नया वर्कर लोड कर रहे हैं।
00:02:28लेकिन इसके बजाय हम एक मौजूदा वर्कर प्राप्त कर सकते हैं,
00:02:31जिसे हम 'worker 1' नाम देंगे
00:02:33और फिर कोड को एक async फ़ंक्शन के रूप में चलाएंगे।
00:02:35इसका मतलब है कि अब अगर हम curl चलाते हैं, तो हमें सैंडबॉक्स से रिस्पॉन्स मिलता है।
00:02:38लेकिन अगर हम इसे फिर से चलाते हैं, तो यह मौजूदा
00:02:41'worker 1' सैंडबॉक्स से जानकारी प्राप्त करता है।
00:02:43अब, मैंने अभी जो दिखाया
00:02:45वह निश्चित रूप से एक बहुत ही सरल उदाहरण था,
00:02:47लेकिन आप डायनेमिक वर्कर्स के साथ कुछ बेहतरीन चीज़ें कर सकते हैं
00:02:50जैसे कस्टम बाइंडिंग्स को डिफाइन करना,
00:02:52जैसे स्टब बनाने के लिए यह 'chatroom post' मेथड,” जिससे
00:02:55वर्कर cap-and-web का उपयोग करके कम्युनिकेट करता है,
00:02:57जिस पर हमने एक वीडियो बनाया है,
00:02:59तो अगर आपकी रुचि हो तो उसे ज़रूर देखें।
00:03:00आप Hono जैसी NPM डिपेंडेंसीज़ का उपयोग कर सकते हैं
00:03:03और 'create worker' फ़ंक्शन का उपयोग करके उन्हें बंडल कर सकते हैं।
00:03:05और आप क्रेडेंशियल्स इंजेक्ट करने जैसी चीज़ें करने के लिए
00:03:08आउटबाउंड रिक्वेस्ट्स को इंटरसेप्ट भी कर सकते हैं।
00:03:10लेकिन डायनेमिक वर्कर्स का उपयोग करने का एक बड़ा कारण
00:03:13AI एजेंटों द्वारा जनरेटेड कोड को चलाना है।
00:03:17तो चलिए ऐसा करने की कोशिश करते हैं।
00:03:18यहाँ E2B कुकबुक का कुछ कोड है
00:03:21जो Sonnet 3.5 चलाने के लिए Anthropic SDK का उपयोग करता है
00:03:25इस सिस्टम प्रॉम्प्ट और एक कस्टम टूल के साथ
00:03:28जुपिटर नोटबुक में कुछ पायथन कोड चलाने के लिए।
00:03:31तो यह इस तरह काम करता है कि यह पता लगाएगा
00:03:33कि कस्टम टूल का उपयोग कब किया जाता है
00:03:34और फिर उसे E2B सैंडबॉक्स के अंदर चलाएगा,
00:03:38जिसका कोड हम यहाँ देख सकते हैं।
00:03:40अब यह इसे इस बहुत ही विशिष्ट प्रॉम्प्ट के साथ चलाता है
00:03:42ताकि 1000 इटरेशन्स पर मोंटे कार्लो मेथड का उपयोग करके
00:03:46पाई (pi) की वैल्यू की गणना की जा सके।
00:03:47और क्योंकि इसके पास फ़ाइल सिस्टम का एक्सेस है,
00:03:50तो यह यह image.png बना सकता है
00:03:52और इसे यूज़र द्वारा डाउनलोड करने के लिए सेव कर सकता है
00:03:54या यूज़र जो भी चाहे वो कर सकता है।
00:03:56दुर्भाग्य से, डायनेमिक वर्कर्स के पास
00:03:58फ़ाइल सिस्टम का एक्सेस नहीं होता है,
00:04:00भले ही वे इस शेल लाइब्रेरी के साथ
00:04:02एक वर्चुअल फ़ाइल सिस्टम बना सकते हैं।
00:04:04लेकिन क्योंकि वे एक वर्कर के माध्यम से चलते हैं,
00:04:06तो हम इसे R2 बकेट जैसी डिटेल्स दे सकते हैं,
00:04:08जो Cloudflare का S3 वर्ज़न है
00:04:11जहाँ इमेज को सेव किया जा सकता है।
00:04:12तो अगर हम कोड को देखें,
00:04:14जो E2B वाले कोड के समान ही है,
00:04:16तो हम सबसे पहले इस्तेमाल किए जा रहे सिस्टम प्रॉम्प्ट को देख सकते हैं।
00:04:19और कस्टम पायथन एक्ज़ीक्यूशन टूल,
00:04:22जो इस मामले में जुपिटर नोटबुक का उपयोग नहीं करता है,
00:04:25लेकिन विज़ुअल्स की एक SVG ज़रूर जनरेट करता है।
00:04:28और यहाँ हमारे पास वर्कर का कोड है
00:04:30जो जावास्क्रिप्ट के साथ-साथ पायथन भी चला सकता है।
00:04:33तो हम यहाँ देख सकते हैं कि यह Sonnet 4.6 का उपयोग कर रहा है।
00:04:35यहाँ वह प्रॉम्प्ट है जिसका उपयोग किया जाता है।
00:04:37यहाँ एजेंट का कोड सैंडबॉक्स में एक्ज़ीक्यूट होता है।
00:04:41और सैंडबॉक्स से मिलने वाला रिस्पॉन्स
00:04:43वापस मुख्य वर्कर के पास जाता है,
00:04:45जो इसमें SVG कोड ढूंढता है
00:04:47और फिर उसे R2 में सेव कर देता है।
00:04:49तो अगर हम उस URL पर जाएं, तो इसमें थोड़ा समय लगता है,
00:04:51लेकिन यह क्लाउड (Claude) से प्राप्त
00:04:53सम्बन्धित जानकारी के साथ पेज जनरेट कर देता है।
00:04:55और अगर हम नीचे स्क्रॉल करें,
00:04:56तो हम इस SVG को देख सकते हैं जो R2 से लोड हो रही है।
00:05:01यह E2B वाले से काफी अलग दिख रहा है,
00:05:03लेकिन मुझे भरोसा है कि Claude Sonnet ने
00:05:04सही जानकारी ही दी होगी।
00:05:06और ज़ाहिर है कि मैंने ज़िक्र किया था कि प्रोग्रामेटिक रूप से
00:05:09जितने चाहें उतने डायनेमिक वर्कर बनाना भी संभव है,
00:05:13जिसे आप इस तरह के कोड से कर सकते हैं।
00:05:16यह एक 'for loop' है जो API से मिलने वाली वैल्यू के
00:05:19आधार पर बिल्कुल नए वर्कर्स बनाता है।
00:05:21और यह यह भी चेक करता है कि क्या कोई वर्कर पहले से मौजूद है
00:05:23और अगर है, तो उसे ही दोबारा इस्तेमाल करता है।
00:05:25यह जो कोड चलाता है वह मूल रूप से एक कंसोल लॉग है
00:05:27और वर्कर से मिलने वाला रिस्पॉन्स है
00:05:29जिसमें 'for loop' के इंडेक्स के आधार पर
00:05:31वर्कर की विशिष्ट ID होती है।
00:05:32तो कोड चलने के साथ,
00:05:34मैं 50 बिल्कुल नए डायनेमिक वर्कर्स बना सकता हूँ
00:05:36और हम देख सकते हैं कि वे सभी तुरंत बन जाते हैं।
00:05:40यह बहुत तेज़ था।
00:05:41अब चलिए 10,000 वर्कर्स के साथ कोशिश करते हैं,
00:05:43लेकिन मैं इसे लोकली नहीं करूँगा
00:05:44क्योंकि मैं अपनी मशीन को उड़ाना नहीं चाहता।
00:05:46इसलिए मैंने अपने पैरेंट वर्कर को Cloudflare पर डिप्लॉय कर दिया है
00:05:49ताकि मैं उनके इंफ्रास्ट्रक्चर का उपयोग कर सकूँ।
00:05:50तो यहाँ मैं 10,000 अलग-अलग वर्कर बनाने जा रहा हूँ।
00:05:53और अगर मैं एंटर दबाता हूँ, तो वे सभी बेहद तेज़ी से बन जाते हैं।
00:05:56हम देख सकते हैं कि यहाँ उनमें से 30 का एक पेज है
00:05:59तो मैं अलग-अलग वर्कर ID देखने के लिए आगे बढ़ सकता हूँ।
00:06:03और जैसे-जैसे मैं आगे बढ़ता हूँ, यह और अधिक पेज दिखाता जाता है।
00:06:05और मैं किसी विशिष्ट वर्कर से बात कर सकता हूँ
00:06:07जैसे 'worker 1156',
00:06:09जो रिस्पॉन्स देता है: "Hello from worker 1156"।
00:06:12तो यह डायनेमिक वर्कर्स का एक त्वरित अवलोकन था,
00:06:15जिनका उपयोग Cloudflare पहले से ही कोड मोड के लिए
00:06:18और Zite, LLM द्वारा जनरेटेड ऐप्स चलाने के लिए कर रहे हैं।
00:06:21लेकिन मुझे यह बताना चाहिए कि हालांकि वे अभी मुफ़्त हैं,
00:06:24वे हमेशा के लिए मुफ़्त नहीं रहेंगे।
00:06:25तो भले ही आप प्रति सेकंड 10 लाख
00:06:28डायनेमिक वर्कर चला सकते हैं, फिर भी आप रुकना चाह सकते हैं
00:06:30जब तक कि आपकी जेब बहुत भारी न हो।
00:06:32और जब हम Cloudflare के विषय पर बात कर रहे हैं,
00:06:34अगर आप उनके ओपन सोर्स VIVE SDK के बारे में अधिक जानना चाहते हैं
00:06:38जो आपको vZero और Lovable जैसे ऐप जनरेटर बनाने की सुविधा देता है,
00:06:42तो अगला वीडियो देखें।