Transcript
00:00:00यह Flu है, एक ओपन सोर्स फ्रेमवर्क जिसे Astro की टीम ने AI एजेंट बनाने के लिए बनाया है,
00:00:04जो मूल रूप से Claude Code को एक हार्नेस के रूप में लेता है और इसे 100% प्रोग्राम करने योग्य बनाता है।
00:00:09तो स्किल्स, टूल्स और सैंडबॉक्स जैसी चीजें पहले से ही सपोर्टेड हैं,
00:00:13जिससे आप कुछ ही लाइनों के TypeScript कोड में एक पूर्ण फीचर्स वाला एजेंट हार्नेस बना सकते हैं और उसे कहीं भी तैनात कर सकते हैं।
00:00:19लेकिन Astro टीम ने आखिरकार एक एजेंट हार्नेस फ्रेमवर्क बनाने का फैसला क्यों किया?
00:00:23और सैंडबॉक्स के साथ वह कौन सी शानदार ट्रिक है जो आपको एजेंटों को बहुत सस्ते में चलाने की अनुमति देती है?
00:00:28सब्सक्राइब बटन दबाएं और चलिए जानते हैं।
00:00:33Flu को Astro के सह-संस्थापक ने बनाया था, और मजे की बात यह है,
00:00:36कि उन्होंने एजेंट हार्नेस फ्रेमवर्क बनाने की शुरुआत नहीं की थी।
00:00:39Fred और उनकी टीम ने Flu को Astro के अपने GitHub रिपॉजिटरी के अंदर AI वर्कफ़्लो चलाने के लिए बनाया था।
00:00:44लेकिन जब Amplitude के एक अन्य इंजीनियर को यह मिला,
00:00:47तो टीम को एहसास हुआ कि यह एक ऐसा टूल है जिसका उपयोग कोई भी एजेंट कर सकता है,
00:00:51जो वास्तव में समझ में आता है अगर आप इसके बारे में सोचें।
00:00:53मेरा मतलब है, Claude Code का उदाहरण लेते हैं।
00:00:55टर्मिनल या UI चैट इंटरफ़ेस के नीचे एक हार्नेस होता है,
00:00:58इसलिए यह MCP सर्वरों से कस्टम टूल को सपोर्ट करता है, यह Cloud MD फ़ाइलें पढ़ता है,
00:01:02इसमें सैंडबॉक्स सपोर्ट और पुनः प्रयोज्य स्किल्स (reusable skills) के लिए सपोर्ट है।
00:01:05यह और भी बहुत कुछ मॉडल को वास्तविक काम करने में सक्षम बनाता है,
00:01:08जो Flu आपको केवल कुछ लाइनों के कोड में दे सकता है।
00:01:11यह Pi के ऊपर निर्मित होकर ऐसा करता है, जो खुद एक न्यूनतम एजेंट हार्नेस है,
00:01:16वही चीज़ जिस पर OpenClaw बना है,
00:01:18और यह Pi के एजेंट कोर के चारों ओर एक वास्तविक फ्रेमवर्क लपेटता है।
00:01:21Flu वास्तव में सैंडबॉक्स के साथ कुछ चतुर काम करता है ताकि आप उन्हें बहुत सस्ते में चला सकें,
00:01:25जिसके बारे में मैं थोड़ी देर बाद बात करूँगा।
00:01:26लेकिन अगर हम Claude Code के उदाहरण पर वापस जाएं,
00:01:28तो यह मानता है कि एजेंट को चलाने के लिए पीछे एक इंसान है,
00:01:31जो आमतौर पर होता भी है।
00:01:33लेकिन Flu के साथ ऐसी कोई सीमा नहीं है।
00:01:35Flu के साथ, आप Claude Code जैसे एजेंट बना सकते हैं जिन्हें मानवीय इनपुट की आवश्यकता होती है,
00:01:38लेकिन आप ऐसे वर्कफ़्लो भी बना सकते हैं जिन्हें बिल्कुल भी इंसान की ज़रूरत नहीं होती,
00:01:42जो उन एजेंटिक प्रक्रियाओं के लिए उपयोगी है जो बहुत विशिष्ट हैं
00:01:44और जिन्हें ज्यादा बदलने की जरूरत नहीं है।
00:01:46अब, आप सोच रहे होंगे,
00:01:47यह Mastra या Vercel AI SDK जैसी किसी चीज़ के समान लगता है,
00:01:52और मैं इनके अंतर के बारे में बाद में बात करूँगा।
00:01:54वास्तव में, अंतर बहुत स्पष्ट हो जाएंगे अगर हम एक सरल डेमो के माध्यम से चलें।
00:01:57तो चलिए आगे बढ़ते हैं और ऐसा करते हैं।
00:01:58शुरुआत करने के लिए, आपको Flu रनटाइम इंस्टॉल करना होगा,
00:02:01जिस पर आपका एजेंट इंपोर्ट होकर चलता है,
00:02:04और फिर आपको Flu CLI इंस्टॉल करना होगा,
00:02:06जो आपके एजेंट को कंपाइल और सर्व करता है।
00:02:08आपको Pi द्वारा सपोर्ट किए जाने वाले कई प्रोवाइडर्स में से एक से API की भी सेट करनी होगी।
00:02:13हालांकि, इस डेमो के लिए मैं Anthropic का उपयोग करूँगा,
00:02:15और फिर आपको 'flu init' टारगेट के साथ चलाना होगा,
00:02:18जो एक Flu कॉन्फ़िगरेशन फ़ाइल बनाता है ताकि CLI को पता हो कि आपके प्रोजेक्ट को कैसे पैकेज करना है।
00:02:22आप Node या Cloudflare के बीच चुनाव कर सकते हैं,
00:02:24और मैं थोड़ी देर में इनके अंतर के बारे में बात करूँगा।
00:02:26लेकिन मैंने ये स्टेप्स पहले ही कर लिए हैं,
00:02:27तो आइए देखते हैं कि ये फ़ाइलें कैसी दिखती हैं।
00:02:30तो यहाँ वे विशिष्ट फ़ाइलें हैं जो आपको एक खाली Bun प्रोजेक्ट से मिलती हैं,
00:02:33और इनमें से कुछ फ़ाइलें इस्तेमाल भी नहीं होतीं।
00:02:35अगर हम index.ts पर एक नज़र डालें, तो यह किसी चीज़ के लिए उपयोग नहीं की जाएगी।
00:02:38Readme फ़ाइल भी नहीं,
00:02:39लेकिन जो वास्तव में उपयोग होने वाली है, वह यह flu config.ts फ़ाइल है,
00:02:42जो पर्दे के पीछे Vite का उपयोग करती है,
00:02:45Cloudflare के बजाय Node का उपयोग करने के लिए।
00:02:47और अंतर यह है कि Node, HONO के ऊपर एक HTTP सर्वर का उपयोग करता है,
00:02:51और Cloudflare आपके प्रोजेक्ट को वर्कर्स पर तैनात करेगा,
00:02:53स्थायित्व (persistence) के लिए एक ड्यूरेबल ऑब्जेक्ट के साथ।
00:02:55अब, उन स्टेप्स को करने के बाद,
00:02:56आपको एक नई निर्देशिका (directory) बनानी होगी,
00:02:57या तो 'agents' वाली या 'workflows' वाली।
00:03:00हम बाद में वर्कफ़्लो पर चर्चा करेंगे,
00:03:01लेकिन अभी के लिए, मैंने एक सरल एजेंट से शुरुआत की,
00:03:03जिसमें दस्तावेज़ीकरण के अनुसार कोड है।
00:03:05और यह मूल रूप से एक मॉडल सेट करता है
00:03:06और कुछ निर्देश जोड़ता है,
00:03:08जो सिस्टम प्रॉम्प्ट में जुड़ जाते हैं।
00:03:09और बस इतना ही।
00:03:10एक बुनियादी Flu एजेंट बनाने के लिए आपको बस इतना ही चाहिए।
00:03:13आइए इसे काम करते हुए देखें।
00:03:14इसे चलाने के लिए, हम 'flu connect' का उपयोग कर सकते हैं,
00:03:15जो एजेंट को बनाता और चलाता है।
00:03:17और हम अपनी TS फ़ाइल के नाम का मिलान कर रहे हैं,
00:03:20जो कि hello world है,
00:03:21एक इंस्टेंस आईडी देने से पहले,
00:03:22जो कुछ भी हो सकता है।
00:03:24तो यह स्थानीय एक, दो, तीन भी हो सकता है।
00:03:25लेकिन यह तब उपयोगी होता है जब आपके पास बहुत सारे एजेंट चल रहे हों
00:03:27और प्रत्येक एजेंट की अपनी अनूठी आईडी हो सकती है।
00:03:29यह Cloudflare पर तैनात करने के लिए भी उपयोगी है
00:03:31क्योंकि यह आईडी अपने स्वयं के ड्यूरेबल ऑब्जेक्ट इंस्टेंस पर मैप करती है।
00:03:35तो अब अगर हम एंटर दबाते हैं,
00:03:36तो हम देख सकते हैं कि यह कॉन्फ़िगरेशन लोड करता है,
00:03:38टारगेट को पढ़ता है और पाया गया एजेंट चलाता है।
00:03:40अब हमारे पास एजेंट MD फ़ाइल नहीं है,
00:03:42लेकिन अगर होती, तो यह उसका उपयोग करता।
00:03:43और अब इसने एजेंट को इस server.mjs फ़ाइल में बना लिया है
00:03:46और इसने हमें प्रॉम्प्ट दर्ज करने की क्षमता दी है।
00:03:48तो मैं कुछ ऐसा कह सकता हूँ, मुझे एक यादृच्छिक जोक सुनाओ।
00:03:50और यहाँ हम देख सकते हैं कि एजेंट सोचना शुरू करता है,
00:03:52यह जवाब देता है, अपनी जीवनचक्र को स्ट्रीम करता है।
00:03:54फिर यह मुझे एक जोक देता है, मुझसे दूसरा मांगता है।
00:03:57लेकिन फिर यहाँ नीचे, यह अंतिम JSON प्रिंट करता है,
00:03:59जिसमें टेक्स्ट शामिल है,
00:04:00साथ ही कुछ इनपुट और आउटपुट टोकन,
00:04:02पूरे प्रॉम्प्ट की लागत
00:04:03और वह मॉडल जो इस्तेमाल किया गया था।
00:04:05बेशक, हम इस एजेंट से बात करना जारी रख सकते हैं,
00:04:06लेकिन अभी के लिए, मैं इसे बंद करने जा रहा हूँ।
00:04:08और यह Flu के साथ एक बुनियादी एजेंट बनाने का एक उदाहरण है।
00:04:11चलिए कुछ और जटिल करते हैं।
00:04:13आइए इस YouTube वीडियो के लिए कुछ टाइटल बनाने में मदद के लिए
00:04:15एक वर्कफ़्लो बनाते हैं।
00:04:16और ऐसा करने के लिए, फिर से हम एक एजेंट बना रहे हैं
00:04:18कुछ और जटिल निर्देशों के साथ।
00:04:20और इस बार हमारे पास वास्तव में एक स्किल है।
00:04:23तो स्किल को यहाँ 'skill import' एट्रिब्यूट के साथ इंपोर्ट किया गया है।
00:04:26और यहाँ, ध्यान दें कि हम अब एजेंट को ही एक्सपोर्ट नहीं कर रहे हैं,
00:04:29बल्कि इस बार हम 'run' नामक एक फ़ंक्शन एक्सपोर्ट कर रहे हैं।
00:04:31और यह क्या करता है कि यह वर्कफ़्लो के लिए एजेंट को इनिशियलाइज़ करता है
00:04:34और फिर हार्नेस में एक सेशन खोलता है।
00:04:36अब, आगे क्या होता है वह काफी दिलचस्प है।
00:04:38तो यहाँ, जो हो रहा है वह यह है कि हम पे-लोड से पाथ ले रहे हैं,
00:04:41जो यहाँ सेट किया गया था
00:04:43इस फ्लक्स कॉन्टेक्स्ट टाइप में।
00:04:44तो अगर हम यहाँ नाम बदलकर 'file' कर दें,
00:04:46तो हमें टाइप एरर मिलेगा।
00:04:47और यहाँ वह फ़ाइल प्राप्त कर रहा है,
00:04:49जिसे मैंने 'script' नाम दिया है,
00:04:50और उसे एक प्रॉम्प्ट के रूप में पास कर रहा हूँ।
00:04:52तो यह सब समझ में आ जाएगा
00:04:53अगर हम यहाँ निर्देशों पर एक नज़र डालें,
00:04:55जिसमें हम इसे स्क्रिप्ट का अध्ययन करने
00:04:57और उन्हें रैंक करने के लिए टाइटल स्कोर स्किल का उपयोग करके
00:04:59मुझे 10 क्लिकबेट YouTube टाइटल देने के लिए कह रहे हैं।
00:05:01तो चलिए देखते हैं कि क्या यह काम करता है।
00:05:02लेकिन इससे पहले,
00:05:03मैं यह स्पष्ट करना चाहता हूँ कि वर्कफ़्लो
00:05:04वर्कफ़्लो डायरेक्टरी में हैं
00:05:06और स्किल्स, प्रोजेक्ट की रूट से
00:05:08स्किल्स डायरेक्टरी में हैं।
00:05:09और इस वर्कफ़्लो को चलाने के लिए,
00:05:10हमें अपने वर्कफ़्लो के नाम के साथ 'flu run' चलाना होगा।
00:05:13मेरे मामले में, यह 'YT titles' है,
00:05:14जिसके बाद टारगेट और JSON पे-लोड है,
00:05:16जो इस स्क्रिप्ट के लिए पाथ है।
00:05:18तो अगर हम एंटर दबाते हैं,
00:05:19तो हम देखेंगे कि हमें एक वर्कफ़्लो आईडी मिलती है।
00:05:21और यहाँ यह कुछ अजीब कर रहा है।
00:05:23यह वास्तव में स्किल की तलाश कर रहा है,
00:05:25भले ही मैंने इसे पहले निर्दिष्ट किया हो।
00:05:27और अब इस तर्क में,
00:05:27यह मुझे बता रहा है कि फ़ाइल सिस्टम पर कोई फ़ाइलें नहीं हैं।
00:05:30यह ऐसा क्यों कर रहा है?
00:05:31तो डिफ़ॉल्ट रूप से,
00:05:32Flu केवल bash का उपयोग करके सैंडबॉक्स में एजेंट चलाता है।
00:05:35इसकी पहुँच केवल स्किल डिस्क्रिप्शन तक है,
00:05:37जिसे यहाँ रजिस्टर किया गया है,
00:05:39लेकिन इसकी स्किल से संबंधित किसी भी
00:05:42फ़ाइल तक पहुँच नहीं है।
00:05:43और खुद स्किल, अगर हम उस पर एक नज़र डालें,
00:05:44तो यह वास्तव में bash का उपयोग करके एक Python स्क्रिप्ट चलाती है
00:05:47ताकि YouTube टाइटल के लिए एक सटीक vidIQ स्टाइल स्कोर
00:05:50प्राप्त किया जा सके।
00:05:51तो इसे ठीक करने के लिए,
00:05:52मैं 'flu runtime node' से local को इंपोर्ट करने जा रहा हूँ,
00:05:54जो Flu को मेरे स्थानीय सिस्टम पर एजेंट चलाने के लिए कहता है
00:05:57ताकि इसकी मेरी सभी फ़ाइलों तक पहुँच हो
00:05:59और यह Python स्क्रिप्ट चला सके।
00:06:01अगर आप सुरक्षा के प्रति जागरूक हैं,
00:06:02तो मैं समझाऊंगा कि आप इससे कैसे बच सकते हैं
00:06:03वीडियो में बाद में।
00:06:04लेकिन हम 'current working directory' को भी बदलेंगे
00:06:05इस प्रोजेक्ट की स्किल्स डायरेक्टरी के अंदर
00:06:07स्किल के लिए।
00:06:10ताकि Flu को उन सटीक फ़ाइलों को खोजने के लिए
00:06:11इधर-उधर न देखना पड़े।
00:06:13और अब जब मैं यह वर्कफ़्लो चलाता हूँ,
00:06:15हम देख सकते हैं कि Flu तुरंत स्किल MD फ़ाइल पढ़ता है
00:06:17और प्रत्येक के लिए एक स्कोर के साथ
00:06:2010 क्लिकबेट टाइटल बनाने में सक्षम है।
00:06:21अब, यदि आप अपने एजेंट को
00:06:22वर्कफ़्लो को अपने स्थानीय सिस्टम तक पहुँच नहीं देना चाहते,
00:06:25तो आप इसके बजाय क्या कर सकते हैं
00:06:26Python फ़ाइल से एक कस्टम टूल बनाना है।
00:06:28तो यहाँ मैं स्किल में Python फ़ाइल लोड कर रहा हूँ
00:06:30और 'score title' नामक एक टूल बना रहा हूँ,
00:06:33जो पैरामीटर्स को सत्यापित करने के लिए 'value bots' का उपयोग करता है
00:06:35और फिर Python स्क्रिप्ट चलाता है।
00:06:37फिर हम इस टूल को अपने एजेंट के अंदर रजिस्टर कर सकते हैं
00:06:40और सब कुछ उम्मीद के मुताबिक काम करना चाहिए।
00:06:42लेकिन अब पिछले प्रोजेक्ट पर वापस चलते हैं
00:06:44और मान लेते हैं कि हम इसे HTTP पोस्ट कॉल के आधार पर ट्रिगर करना चाहते हैं।
00:06:47खैर, इसे सक्षम करने के लिए हमें बस एक काम करना है।
00:06:50और वह बस रूट मिडलवेयर को जोड़ना है।
00:06:52अब, हमें बस Flu प्रोजेक्ट बनाना है,
00:06:54अपना टारगेट, एक वैकल्पिक पोर्ट निर्दिष्ट करें,
00:06:56और फिर अपनी सर्वर फ़ाइल चलाएं।
00:06:58और अब यह हमारे द्वारा निर्दिष्ट पोर्ट पर लिस्टिंग कर रहा है।
00:07:00ध्यान दें कि server.js फ़ाइल
00:07:01हमारे किसी भी एजेंट या वर्कफ़्लो को इनलाइन करती है।
00:07:03तो हमें बस इस फ़ाइल की ज़रूरत है
00:07:05अगर हम इसे कहीं भी तैनात करना चाहते हैं जो Node.js को सपोर्ट करता है।
00:07:07अब मैं पोस्ट मेथड के साथ curl चला सकता हूँ
00:07:09निर्दिष्ट पोर्ट पर,
00:07:11एक वर्कफ़्लो चुनें और इसे कुछ डेटा दें,
00:07:13जो हमें एक वर्कफ़्लो आईडी देता है।
00:07:14और फिर अगर हम वर्कफ़्लो के लिए curl करते हैं,
00:07:16अपनी विशिष्ट वर्कफ़्लो आईडी निर्दिष्ट करते हुए
00:07:18और इसे पढ़ने में आसान बनाने के लिए JQ में पाइप करते हैं,
00:07:21तो हम अपने वर्कफ़्लो के बारे में जानकारी
00:07:23और परिणामों का सारांश देख सकते हैं।
00:07:25बेशक, Flu HTTP के बजाय WebSockets को सपोर्ट करता है
00:07:27यदि आप वर्कफ़्लो जानकारी को स्ट्रीम करना चाहते हैं।
00:07:29अब, हमेशा की तरह, Flu में इतनी सारी विशेषताएँ हैं
00:07:31जिनके बारे में मैं बात नहीं कर पाया,
00:07:33जैसे पुनः प्रयोज्य एजेंटों के लिए एजेंट प्रोफ़ाइल,
00:07:35Daytona, Cloudflare सैंडबॉक्स के लिए सपोर्ट,
00:07:37या केवल URL का उपयोग करके कोई अन्य सैंडबॉक्स,
00:07:40auth या हेल्थ चेक के लिए कस्टम रूट जोड़ना,
00:07:42और यहाँ तक कि सब-एजेंट्स के लिए भी सपोर्ट।
00:07:44लेकिन यह अन्य ओपन सोर्स AI एजेंट फ्रेमवर्क
00:07:45जैसे Mastra की तुलना में कैसा है?
00:07:48खैर, आखिरी बार जब मैंने Mastra का उपयोग किया था
00:07:49तब मैंने यह वीडियो बनाया था,
00:07:50जिसे आप इस वीडियो को रोककर देख सकते हैं
00:07:52यदि आप एक रिफ्रेशर चाहते हैं कि यह क्या है।
00:07:54लेकिन जब मैंने इसका उपयोग किया,
00:07:55तो आपको अभी भी सेशन, मेमोरी, सैंडबॉक्स,
00:07:58और टूल लोडिंग खुद मैन्युअली सेट करनी पड़ती थी।
00:08:01यह एक अधिक दानेदार (granular) चरण-दर-चरण प्रक्रिया थी,
00:08:03और मुझे नहीं पता कि क्या वह बदल गई है
00:08:05अधिक सरल होने के लिए,
00:08:06लेकिन मुझे लगता है कि Flu जो दृष्टिकोण अपना रहा है
00:08:08वह पूरी तरह से अलग है।
00:08:10यह अधिक हार्नेस-फर्स्ट दृष्टिकोण है
00:08:11और मानता है कि आप इन सुविधाओं का
00:08:13शुरुआत से ही उपयोग करने वाले हैं।
00:08:14सैंडबॉक्स की बात करें,
00:08:16Flu वास्तव में उनके साथ बहुत चतुर काम करता है।
00:08:18तो प्रत्येक एजेंट को डिफ़ॉल्ट रूप से अपना सैंडबॉक्स मिलता है,
00:08:21जो मैंने डेमो में पहले समझाया था,
00:08:22लेकिन यह सैंडबॉक्स Vercel के 'just bash' द्वारा संचालित है,
00:08:25जो TypeScript में Bash को फिर से लागू करता है।
00:08:27तो यह इस सैंडबॉक्स को मेमोरी में चलाता है
00:08:29न कि एक वास्तविक कंटेनर में,
00:08:31जिसका अर्थ है कि आप grep, glob, और read टूल तक पहुँच प्राप्त करते हैं
00:08:34हर बार एक कंटेनर के लिए भुगतान किए बिना,
00:08:35जिसके लिए एक पूरी Linux मशीन को बूट करना पड़ता है
00:08:38इससे पहले कि आप कुछ भी कर सकें।
00:08:40जिसका अर्थ है कि Flu हजारों एजेंटों को
00:08:41लगभग मुफ्त में चलाता है,
00:08:43और आप केवल तभी एक वास्तविक कंटेनर चुन सकते हैं
00:08:44जब आपको किसी की आवश्यकता हो।
Community Posts
No posts yet. Be the first to write about this video!
Write about this video