00:00हेलो एवरीवन, मेरा नाम अहि है और वेलकम टू माय चैनल। तो गाइज़, आज के वीडियो में हम देखेंगे कि अगर हमें खुद के कस्टम MCP सर्वर बनाने हैं, तो वो कैसे बनाए जा सकते हैं। तो आज हम एक कस्टम MCP सर्वर बनाएंगे स्क्रैच से। उसके बाद हम लैंग ग्राफ में एप्लिकेशन बनाएंगे। लैंग ग्राफ में जो एप्लिकेशन बनाएंगे, उसमें जो एलएलएम होगा, वह हमारे कस्टम MCP सर्वर के साथ इंटरैक्शन करेगा और जवाब लेगा MCP सर्वर से। तो ये टास्क करना है आज हमने। तो गाइज, मेरे पिछले वीडियो में मैंने आपको बताया था कि कैसे MCP सर्वर्स को लोकली बिल्ड करते हैं और यूज़ करते हैं। लेकिन उस वीडियो में हमने क्या किया था? हमने इंटरनेट से कोड डाउनलोड किया था, MCP सर्वर्स का। तो मैंने आपको यह वाली गिटहब रिपोज़िटरी दिखाई थी पिछली क्लास में। इस GitHub रिपोज़िटरी में क्या था? बहुत सारे पब्लिकली..
00:53एमसीपी सर्वर्स पे पड़े हुए हैं। आप इन्हें यूज़ कर सकते हो। मैंने यह बताया था, तो आप स्क्रॉल करके देखो। यहां पे हमने दो डिफरेंट सर्वर्स यूज़ किए थे, यहां से। है ना? तो इस केस में क्या था? कोड ऑलरेडी बना हुआ था। हमने सिर्फ उसे डाउनलोड किया अपने लोकल कंप्यूटर पे, और फिर हमने सर्वर को बिल्ड किया अपने लोकल कंप्यूटर पे और उसका यूज़ किया था। आज हमने ये नहीं करना। आज हम सारा सर्वर का कोड खुद से लिखेंगे, उसी को बोलते हैं कस्टम एमसीपी सर्वर। जब आप खुद से एमसीपी सर्वर का कोड लिखते हो अपनी रिक्वायरमेंट के हिसाब से। सबसे पहले तो हम ये समझते हैं कि हमें कस्टम एमसीपी सर्वर्स की जरूरत क्यों है, जबकि इतने सारे ऑलरेडी बने हुए हैं एमसीपी सर्वर। हम इसी रेपो पे देखें तो आपको बहुत सारे एमसीपी सर्वर्स दिख रहे हैं। राइट? तो जब ऑलरेडी इतने सारे एमसीपी सर्वर्स क्यों कोड बना हुआ है, तो हमें क्या जरूरत है खुद के MCP सर्वर्स बनाने की? तो ये हम समझते हैं। तो पहला कारण क्या है? मान लीजिए आप किसी प्रोजेक्ट पर काम कर रहे हो, और उस प्रोजेक्ट के अंदर कुछ ऐसी फंक्शनैलिटी है जिसके लिए MCP सर्वर अभी तक नहीं बना हुआ। तो उस केस में आप क्या करेंगे? अपने यूज़ केस, अपने प्रोजेक्ट, और अपनी आवश्यकताओं के हिसाब से कस्टम MCP सर्वर बना लोगे। जो आपका काम है, आपके प्रोजेक्ट का काम है, उससे वह हल हो जाएगा। ठीक है? ऐसे ही एक scenario होता है जब हमें कस्टम MCP सर्वर्स की जरूरत पड़ती है। अब हम एक और उदाहरण देख लेते हैं जिसमें हमें कस्टम MCP सर्वर्स की आवश्यकता होती है। मान लीजिए आपकी खुद की एक कंपनी है। ठीक है? आपकी कंपनी का प्राइवेट डाटा है। आपकी कंपनी का प्राइवेट डाटा कुछ भी। हो सकता है, जैसे कि आपके सेल्स रिकॉर्ड हो गए या फिर कस्टमर्स की डिटेल्स हो गई। कोई रिसर्च का डेटा हो गया, है ना? या फिर आपका कोई सीक्रेट एल्गोरिदम है। कुछ भी मतलब, जो आपकी कंपनी का प्राइवेट डेटा है। ठीक है? तो अब उस कंपनी के प्राइवेट डेटा को आप एक्सेस करना चाहते हो। कुछ काम है आपको। तो अभी क्या होगा? अगर आप कोई पब्लिक सर्वर इस्तेमाल करेंगे, तो आपका डेटा जो है, पब्लिक सर्वर्स पर उपलब्ध हो जाएगा। आप वो नहीं चाहते हो। आप क्या चाहते हो? आपका डेटा प्राइवेट ही रहे। तो उस केस में आप अपना कस्टम MCP सर्वर बना सकते हो। उस MCP सर्वर को अपना डेटा दे सकते हो। अब इस केस में क्या होगा? वो जो आपका खुद का कस्टम MCP सर्वर है, वो आपका प्राइवेट सर्वर है। उस पर आपका प्राइवेट डेटा पड़ा है। तो पब्लिकली उसे कोई यूज नहीं कर सकता। सिर्फ वही यूज कर पाएगा, जिसे आप अनुमति देंगे, या..
03:24फिर जो ऑथराइज्ड हैं, जैसे कि आपके एम्प्लॉयीज़ हो गए, हैं ना? तो इस केस में भी क्या होगा? कस्टम MCP सर्वर हेल्पफुल होगा। तो इस तरह की रिक्वायरमेंट्स के लिए हमें कस्टम MCP सर्वर चाहिए होता है। तो अब हमें पता चल गया कि कस्टम MCP सर्वर कब चाहिए होता है। अब समझते हैं। चलिए कोडिंग पार्ट को इम्प्लीमेंट करने की कोशिश करते हैं। अगर हमें MCP सर्वर खुद से बनाना है, और कभी भी कोई काम हम खुद करें, तो सबसे पहला टास्क होता है एनवायरनमेंट सेटअप। तो अभी हम एनवायरनमेंट सेटअप करेंगे। एनवायरनमेंट सेटअप का मतलब है कि वे सारे मॉड्यूल्स इंस्टॉल करना जो आज के ट्यूटोरियल को रन करने के लिए जरूरी हैं। उसके लिए आप कमांड प्रॉम्प्ट खोलिए। कमांड प्रॉम्प्ट खुल गई। यहाँ आप ये मॉड्यूल्स इंस्टॉल करेंगे। देखिए हम कौनसे। मॉड्यूल इंस्टॉल कर रहे हैं? सबसे पहले हम इंस्टॉल कर रहे हैं Python, HfNVIDIA। ये मॉड्यूल हमें क्यों चाहिए? क्योंकि आज के ट्यूटोरियल में हम एक LLM भी यूज़ करेंगे, क्योंकि LLM ही यूजर के क्वेश्चन को अंडरस्टैंड करता है। फिर उसके बाद उस पर काम होता है। तो LLM तो चाहिए होगा। तो जो LLM मैं यूज़ कर रही हूं, वह ओपनएआई का LLM यूज़ करूंगी, और उसको यूज़ करने के लिए हमारे पास एक API की होती है, और API की को हम किसी फाइल में रखते हैं। फिर हम क्या करते हैं? फाइल से API की को लोड करते हैं। तो उसके लिए आपको ये मॉड्यूल चाहिए। ठीक है? API कीज़ को एनवायरमेंट वेरिएबल्स को लोड करने के लिए। और उसके बाद हम यूज़ कर रहे हैं ये मॉड्यूल, लंग चेन MCP ऑप्टर्स। ये क्यों चाहिए? कभी भी आपको लंग चेन या लंग ग्राफ में MCP का यूज़ करना हो तो आपको यह मॉड्यूल चाहिए। चाहिए ही होता है। अगर आप इसकी डॉक्यूमेंटेशन देखोगे ना, लैंग चेन की, वहां पे भी आपको दिख जाएगा। हम यहां पे लैंग चेन की डॉक्यूमेंटेशन ओपन कर लेते हैं। तो हम यह पेज ओपन करते हैं। लैंग ग्राफ MCP तो जब आप इस पेज पे आएंगे, यह देखो, यहां पे लिखा हुआ है, "इंस्टॉल लैंगचेन MCP ऑथर लाइब्रेरी ताकि यूज कर सकें MCP टूल्स इन लैंग ग्राफ।" तो हमें लैंग ग्राफ में ही काम करना है। इसलिए हमें यह मॉड्यूल की जरूरत है। इसके बाद हमने इंस्टॉल किया लैंग ग्राफ को, क्योंकि लैंग ग्राफ फ्रेमवर्क तो रिक्वायरड है। फिर हमने लैंग चेन और यहां पे लिखा है, "ओपनएआई," जिसका मतलब है कि जितने भी ओपनएआई हैं, क्योंकि हमें ओपनएआई का एलएलएम यूज़ करना है, तो उसके लिए जो भी डिपेंडेंसीज़ हैं, जो भी रिक्वायरमेंट्स हैं, वो भी इंस्टॉल हो जाएं। फिर हम इंस्टॉल कर रहे हैं MCP मॉड्यूल। को, क्योंकि आज हमने एमसीपी सर्वर क्रिएट करना है, कस्टम एमसीपी सर्वर के लिए यह मॉड्यूल चाहिए और हम Streamly install कर रहे हैं। Streamlit क्यों install कर रहे हैं? क्योंकि आज के ट्यूटोरियल में हम सबसे आखिर में जो कोड देखेंगे ना उसमें हम Streamlit एप बनाेंगे। वेब एप्लीकेशन बनाएंगे जिसमें जो भी आज हमने पूरा End-to-End लर्न किया होगा, ना, एमसीपी सर्वर बनाना, फिर एमसीपी क्लाइंट बनाना, इंटरैक्शन कैसे होगी। तो वो सारा काम हम फिर फाइनलली एक Streamlit ऐप बना कर उसके थ्रू दिखाएंगे, ठीक है? तो ये सारे मॉड्यूल्स चाहिए। आप इसको एंटर कर देना। ये सारे मॉड्यूल्स इंस्टॉल हो जाएंगे। मेरे केस में ऑलरेडी इंस्टॉल्ड हैं। तो ये रिक्वायरमेंट्स थीं आज के ट्यूटोरियल के लिए। अब नेक्स्ट टास्क देखते हैं। तो अभी क्या है? हमें ना दो Python फाइलें चाहिए होंगी। एक पाइथन फाइल में तो हम लिखेंगे कस्टम MCP सर्वर का कोड। दूसरी पाइथन फाइल में हम लैंग ग्राफ के थ्रू कैसे कनेक्ट करना है उस कस्टम MCP सर्वर से, और कैसे उसको क्वेश्चन पूछना है, और कैसे रिस्पॉन्स आएंगे, वो सारा कोड लिखेंगे। तो पहले हम सर्वर वाला पार्ट समझते हैं। तो मैंने एक फोल्डर लिया हुआ है, जो अभी खाली फोल्डर है ई ड्राइव में। ये देखिए, ई ड्राइव में ये फोल्डर है लैंगग्राफ्ट कस्टम MCP डेमो। इसके अंदर हम आज का सारा कोड करेंगे। तो हम यहां पर एक फाइल पेस्ट कर रहे हैं। इस फाइल का नाम है कस्टम MCP सर्वर। इस फाइल को ओपन कर लेते हैं। अभी यह खाली है फाइल। इसके अंदर हम सारा कोड लिखेंगे। सो पहले लाइन में मैं फर्स्ट MCP मॉड्यूल को इंपोर्ट कर रही हूं। यह मॉड्यूल हमें क्यों चाहिए होता है? जब भी आपको MCP सर्वर बनाना हो, तो आप यह मॉड्यूल इस्तेमाल करते हैं। इंपोर्ट करोगे। एक बार इस मॉड्यूल को इंपोर्ट कर लिया। अब हम इस मॉड्यूल का उपयोग करके अपना MCP सर्वर क्रिएट करेंगे। ठीक है? इसका इंस्टेंस बनाएंगे और फिर MCP सर्वर बनाएंगे। तो हमने लिखा ये MCP वेरिएबल के अंदर इसको कॉल करा, और हमने जो MCP सर्वर बनाया उसका नाम क्या रखा? मैथ रख दिया। अब सर्वर बन गया। यह सर्वर का नाम हो गया। अब इस सर्वर के अंदर हमें फंक्शन और टूल्स रखने होते हैं। तो टूल्स क्या होते हैं? टूल्स का मतलब Python के फंक्शन्स ही होते हैं। तो जैसे हम जब MCP नहीं इस्तेमाल करते थे, जब हम नॉर्मल टूल्स की बात करते थे, लैंगग्राफ के साथ टूल्स यूज़ करते थे या किसी भी एजेंसी AI फ्रेमवर्क के साथ टूल्स यूज़ करते थे, तो वह क्या होते थे? एक फंक्शन ही होता था, Python का। है ना? तो उसी MCP सर्वर में क्या है? हमने सर्वर..
08:38बना लिया। वो जो टूल्स होते हैं, वैसे ही टूल हमने यहां पर बनाने हैं। टूल का मतलब Python का फ़ंक्शन। ठीक है? तो अब मैं पहला Python फ़ंक्शन बनाती हूं। ये suppose मेरा पहला Python फ़ंक्शन है। ऐसे ही बनाते हैं न Python में फ़ंक्शन। पहले हम 'def' लिखते हैं, डिफाइन। फिर फ़ंक्शन का नाम हमने यहां पे दो पैरामीटर दे दिए। हमने बता दिया कि उनकी डेटा टाइप इंटिजर होगी। और जो इसकी आउटपुट होगी, जो यह फ़ंक्शन रिटर्न करेगा, आउटपुट भी इंटिजर होगी। और ये दो वैल्यूज़ को ये प्लस करके देगा। तो यह तो है Python फ़ंक्शन। अब इस Python फ़ंक्शन को टूल बनाने के लिये हम इसके ऊपर ये डेकोरेटर लगा देंगे। जब आप ये लिख दो ना '@ MCP.टूल', तो यह क्या बन गया? MCP सर्वर का टूल बन गया। ठीक है? नॉर्मल Python फ़ंक्शन लिखो। किसी भी नॉर्मल Python फ़ंक्शन के ऊपर आपको सिर्फ ये डेकोरेटर ऐसा लगाना है। तो अब। क्या होगा? इस डेकोरेटर को यहाँ पर लिखने से क्या होगा? यह जो फ़ंक्शन है, यह रजिस्टर हो जाएगा एक टूल के रूप में। अब जो हमारा MCP सर्वर, कस्टम MCP सर्वर, मिंट ने बनाया है, उसके अंदर एक टूल है जिसका नाम है ऐड, और यह टूल की डिसक्रिप्शन हो गई। ठीक है? और यह टूल के पैरामीटर्स हो गए। अब हम ऐसा ही तीन-चार और फ़ंक्शंस इसमें एड करते हैं। अब हमने मल्टीप्लाई फ़ंक्शन डाल दिया। सेम देखो, यह सेम Python का फ़ंक्शन है। बस इसके ऊपर डेकोरेटर लगा दिया तो यह टूल बन गया। ठीक है? यह फ़ंक्शन क्या करेगा? दो नंबरों को multiply करेगा, ए और बी को। ऐसे ही मैंने ये तीन फ़ंक्शंस और डाल दिए। देखो, डिवाइड फ़ंक्शन, दो वैल्यूज़ को डिवाइड करेगा। हर फ़ंक्शन के ऊपर देख लो, मैंने क्या लिखा है? @ MCP.Tool डेकोरेटर लगाया है, क्योंकि मुझे ये सारे फ़ंक्शंस को टूल बनाना है, MCP सर्वर का। कौन से। एमसीपी सर्वर का? जो हमारा कस्टम एमसीपी सर्वर है, जिसका नाम मैंने मैथ रखा है। अब उस एमसीपी सर्वर पर कितने फ़ंक्शंस पड़े हैं? कितने टूल्स पड़े हैं? ऐड, मल्टीप्लाई, डिवाइड। सेम उसी तरह से मैंने स्क्वायर रूट फ़ंक्शन बना दिया। स्क्वायर रूट फ़ंक्शन में देखो, मैं एक ही पैरामीटर दे रही हूँ, क्योंकि सिंगल नंबर का स्क्वायर रूट निकालेंगे न। फिर फ़ैक्टोरियल। तो ये मैंने फ़ंक्शंस डाल दिए। तो गैस, सिर्फ इतना ही कोड लिखना है। अब यह आपका कस्टम एमसीपी सर्वर बन गया। कस्टम एमसीपी सर्वर बनाना बहुत ही आसान है। आपको सिर्फ शुरुआत में इस मॉड्यूल को इंपोर्ट करना है। इस मॉड्यूल को ऐसे कॉल करोगे। इसको नाम दे दो यहाँ पे। आपका कस्टम एमसीपी सर्वर बन गया। अब इस एमसीपी सर्वर में मैं ये सारे फ़ंक्शंस, सारे टूल्स रजिस्टर करना चाहती हूँ। तो मैंने नॉर्मल Python..
11:19फंक्शन लिखे। हर फंक्शन के ऊपर यह लगा दिया डेकोरेटर जिससे ये सारे Python फंक्शंस अब रजिस्टर हो गए हैं एज ए टूल इस वाले MCP सर्वर में। अब हमें आखिरी लाइन लिखनी है, ये वाली। इसका क्या मतलब है? कि जब हम इस फाइल को रन करें तो ये कोड एग्जीक्यूट हो जाए। ठीक है? तो ट्रांसपोर्ट STD I/O का क्या मतलब होता है? अह, स्टैंडर्ड इनपुट आउटपुट ऑपरेशन। ये ट्रांसपोर्ट मेथड कब यूज़ होते हैं? जब हमने अपनी लोकल मशीन पे ही काम करना होता है। मतलब आपका क्लाइंट और आपका सर्वर, यानी MCP सर्वर दोनों जब एक मशीन पर होते हैं तो उनके बीच में जो इंटरैक्शन होती है, ना, मैसेज एक्सचेंज या कम्युनिकेशन, कुछ भी बोल लो, आप वो हम कर सकते हैं ये स्टैंडर्ड I/O के थ्रू। अभी क्या होता है, ये जो वर्क करेगी, बट ये वाला जो ट्रांसपोर्ट मेथड है ना, यह कब वर्क करता है? जब आपका क्लाइंट और सर्वर लोकल..
12:12मशीन पे हो, बट अगर आपका क्लाइंट या सर्वर जो है, वो लोकल मशीन पर नहीं है, ठीक है? मान लीजिए आपका जो MCP सर्वर है, वह किसी रिमोट मशीन पर पड़ा है या इंटरनेट पर पड़ा है। ब्राउज़र के थ्रू आप चला रहे हो, उसको तो आप यहां पर लिखोगे। ये लिख दोगे। देखो, दो तरह के मैंने आपको ट्रांसपोर्ट मेथड्स बता दिए हैं यहां पर। एक तो अगर आप लोकल मशीन पर ही आपका क्लाइंट और सर्वर हैं और उनके बीच में इंटरैक्शन हो रही हो, तो आप स्टैंडर्ड I/O यूज़ कर सकते हो। बट, अगर जो है, वो लोकल मशीन पर नहीं है, ठीक है? आपका जो MCP सर्वर है, कस्टम MCP सर्वर है, वो किसी और जगह पड़ा हुआ है, ठीक है? नेटवर्क पर है। तो तब आप स्ट्रीमेबल HTTP यूज़ कर सकते हो, ओके? तो ये जो होते हैं, ये नेटवर्क पर यूज़ नहीं होते, यह लोकल कंप्यूटर पर यूज़ होते हैं। यह जब आपको इंटरैक्शन करनी हो सर्वर और क्लाइंट के बीच में, और वो कहीं भी हो सकते हैं। हैं नेटवर्क पे तो तब आप यह वाला ट्रांसपोर्ट मेथड यूज़ करते हो। ठीक है? तो अभी के लिए मैं आपको इसके जरिए दिखा रही हूं। फिर बाद में मैं इसके जरिए भी बताऊंगी कि कैसे आप आउटपुट देखोगे। तो हमने सर्वर बना लिया गैज़। सिर्फ इतना ही कोड है। अब सर्वर को रन कैसे करते हैं? मैं लोकल मशीन पे काम करके दिखा रही हूं आपको। मतलब हमारा क्लाइंट और सर्वर दोनों लोकल मशीन पर रन होंगे। तो मैं वो बता रही हूं ना आपको। तो अब हमारी फाइल का क्या नाम है? कस्टम MCP सर्वर, ".py"। इसको हम रन कर लेते हैं। क्योंकि हमारा सर्वर बन गया। तो आप कमांड प्रांप्ट खोलो। हम किस फोल्डर में काम कर रहे हैं? लैंडग्रोफ़्ट कस्टम MCP डेमो। राइट? इस पर चले जाओ। अब मुझे सर्वर को रन करना है, जो कस्टम सर्वर मैंने बनाया है, उसको रन करना है। तो आप लिखोगे, "कस्टम" एंड, फिर फाइल का नाम। हमारी फाइल का क्या नाम है? है? कस्टम MCP server.py तो गैज अभी हमने सर्वर बना लिया और सर्वर रनिंग कंडीशन में है। अब हम आते हैं सेकंड Python फाइल पर, जिसमें हम LangGraph का कोड लिखेंगे, और हम यह कोड लिखेंगे जिसके थ्रू हम इस MCP सर्वर के साथ कनेक्ट करेंगे और यूजर क्वेश्चन करेगा तो और इंटरैक्शन होगी। ठीक है? तो वो वाला कोड लिखते हैं। तो इसको ओपन ही रहने दीजिए। यह वाला टर्मिनल ना ओपन ही रहेगा। कमांड प्रोम्प्ट ओपन ही रहेगा। अगर आप इसको बंद कर देंगे तो आपका कस्टम सर्वर भी बंद हो जाएगा। तो हमें इसको बंद नहीं करना है। इसको ऐसे ही चलने दो। अब हम इस फोल्डर में दोबारा आते हैं। यहां पर दोबारा आते हैं। यहां पे अब हम कोड लिखेंगे। एक और Python फाइल रखते हैं जिसमें LangGraph का कोड लिखना है। तो यह वो फाइल है, MCP Client LangGraph। यह फाइल अभी खाली है, ब्लैंक है। इस पे अभी हम कोड लिखते हैं। हैं। तो सबसे पहले हमने क्या किया? वह सारे मॉड्यूल्स को इम्पोर्ट कर लिया जो इस कोड को सपोर्ट करेगा, जो अभी हम लिखेंगे। तो पहला मॉड्यूल है AsyncIO। यह मॉड्यूल क्यों चाहिए? तो दोस्तों, हम क्या करने वाले हैं आज के कोड में? जब यूजर क्वेश्चन पूछेगा, वह क्वेश्चन एलएलएम के पास जाएगा। एलएलएम एमसीपी सर्वर को वह रिक्वेस्ट करेगा। जब एमसीपी सर्वर को हम रिक्वेस्ट करेंगे, क्वेश्चन तो एमसीपी सर्वर उसे प्रोसेस करके फिर आउटपुट देगा। तो वह जो वेटिंग टाइम होगा, ठीक है, उस टाइम पे हम चाहते हैं कि Python IDEL ना रहे खाली, ना रहे। Python उस टाइम पे कोई और प्रोसेस को हैंडल कर ले, ताकि हमारा ज्यादा टाइम वेस्ट ना हो। प्रोसेस फास्ट हो। तो इसलिए हमने AsyncIO मॉड्यूल को यूज़ किया। उसके बाद हमने जो सेकंड मॉड्यूल लिया, वह है यह वाला मल्टी-सर्वर एमसीपी क्लाइंट। तो यह हम कहां से..
15:48ले रहे हैं? लैंगचेन एमसीपी अप्टर से। तो रिमेंबर हमने यह मॉड्यूल इंस्टॉल किया था और मैंने बताया था कि कभी भी आपको लैंगचेन या लंग्राफ में एमसीपी के साथ काम करना हो तो आपको इस मॉड्यूल की जरूरत है। तो हमने वो लिया है। तो जो हम सर्वर और क्लाइंट की इंटरैक्शन करेंगे, वो इसके थ्रू होगी। मैं अभी बताती हूं आपको थोड़ी देर में कैसे। उसके बाद हमने चैट ओपनएआई को इंपोर्ट किया है, लैंगचेन ओपनएआई मॉड्यूल से। यह क्यों किया है? क्योंकि जो एलएलएम हम यूज़ करेंगे, वो ओपनएआई का एलएलएम यूज़ करेंगे। उसके लिए हमें चैट ओपनएआई मॉड्यूल चाहिए। और ये जो दो लाइंस हैं, ये हम क्यों लिख रहे हैं? क्योंकि हमने जो एप्लिकेशन बनानी है, वो लंग्राफ में बनानी है। लंग्राफ में हम कोई भी काम करते हैं, तो उसके लिए नोट्स चाहिए होते हैं। हम ग्राफ बनाते हैं। ग्राफ का फ्लो होता है। हम खुद से डिसाइड। करते हैं कि कौन सी नोड कहां आएगी, उसके बाद फ्लो कहां जाना चाहिए, है ना? कैसे कनेक्शन और conversatio फ्लो होगा, वो हम डेसाइड करते हैं। तो ये सारी चीजें उसमें चाहिए। जब मैं इनको कोडिंग में यूज करूंगी, तो आपको एक्सप्लेन करूंगी कि किस चीज का क्या काम है। उसके बाद हमने ये दो मॉड्यूल्स इम्पोर्ट किए। ये मॉड्यूल्स का सिर्फ इतना काम है कि जो आपके एनवायरमेंट वेरिएबल्स होंगे, जैसे कि आप कौन सी API यूज करोगे। हम OpenAI मॉडल की API यूज करेंगे ना, तो वो API की डॉट env फाइल में रखी जाएगी। उस फाइल से जो API की डाउनलोड करनी है, वो इस मॉड्यूल के जरिए हो सकेगी। तो अब हम क्या करते हैं? सबसे पहले फाइल भी रख लेते हैं, जिसमें हमारी OpenAI API की होगी। अगर इस फाइल को हम ओपन करें, तो इस तरह की फाइल दिखेगी। देखो, इसमें वो वाली की जरूरत नहीं है। ओपनएआई API की लिखा होगा। एंड सिंगल कोड्स के अंदर यहाँ पर आप अपनी API की लिखोगे। यहाँ पे मैंने यह हटा दी है, एपीआई की जो मेरी API थी। आपको खुद से अपनी API की जेनरेट करनी होगी। वो ओपनएआई की API यहाँ लिखोगे `config.py` फाइल में। एंड यह फाइल हम कहां रख रहे हैं? यह फाइल हमें उसी फोल्डर में रखनी है जहां पर आपका कोड पड़ा है, जो लंगग्राफ वाला कोड हम लिख रहे हैं। ठीक है? तो इतना काम हो गया। अब हम सबसे पहले एनवायरमेंट वेरिएबल को, मतलब API की को लोड कर लेते हैं। सिर्फ इतना लिखने से एनवायरमेंट वेरिएबल जो है, API की वो लोड हो जाती है। अब हम एक फंक्शन बनाएंगे, उस फंक्शन के अंदर सारा काम करेंगे। तो देखो, मैंने फंक्शन बनाया। इसके सामने `async` लिखा हुआ है। मतलब जो मैंने आपको एक्सप्लेन किया था, `async` io, वो वाला पार्ट है यह। ठीक है? यहाँ पे हम ओपनएआई वेरिएबल के अंदर ओपनएआई एपीआई की जानकारी ले रहे हैं। अब हमारी ओपनएआई एपीआई की जानकारी किसमें पड़ेगी? इस वेरिएबल में पड़ेगी। नेक्स्ट लाइन में मैं मॉडल का उपयोग कर रही हूँ, यानी वो LLM जो हमें आज के काम के लिए चाहिए होगा। तो देखिए, चैट ओपनएआई मॉड्यूल को हमने लिया। मैंने बताया कि मुझे ये वाला एलएलएम यूज़ करना है, और मैंने ओपनएआई की एपीआई की यहाँ पे दे दी। तो हमने मॉडल भी डिफ़ाइन कर दिया। अब हम क्लाइंट और सर्वर वाला कोड लिखेंगे। MCP, जो सर्वर हमने बनाया है, यह वाला जो कस्टम MCP सर्वर है, उसके साथ हमें कनेक्ट करना है। वो वाला कोड अब लिखेंगे। तो ये है वो कोड। देखिए, हमने क्या किया? मल्टी-सर्वर MCP क्लाइंट। इसका मतलब है कि हम यहाँ पे मल्टीपल सर्वर्स बना सकते हैं, जैसे ये एक सर्वर है। ये एक..
19:24सर्वर का कोड है, तो यहां कॉमा लगाओ। आपको इसके बाद दूसरा सर्वर बनाना है, तो यहां पर दूसरा सर्वर लिख दो, इस तरह से। ठीक है? पर आज के ट्यूटोरियल में हम सिंगल कस्टम MCP सर्वर देख रहे हैं अभी के लिए। तो हमने कॉल किया इसे क्लाइंट वेरिएबल में। इसको कॉल करा मैथ। हमारे टूल यहाँ पे देखो, क्या नाम है हमारे MCP सर्वर का? मैथ है ना, नाम तो वह लिख दिया जो उसका नाम है, MCP सर्वर का। कमांड Python क्योंकि हमने इसे Python के थ्रू रन किया न, इसको रन कैसे किया? हमने ऐसा किया था न, Python कस्टम MCP सर्वर.py, तो वो वाला लिखा हुआ है। फिर यहाँ पे आपने पूरा पाथ प्रोवाइड किया है। तो कहां पे पड़ा है? यह हमारा जो कोड है, हमारा कोड पड़ा हुआ है E ड्राइव में, ग्राफ कस्टम MCP फोल्डर के अंदर। हमारे पास फाइल है, कस्टम MCP सर्वर। ठीक है? मैंने क्या किया? देखो, मैंने पूरा absolute। मैंने पाथ प्रोवाइड किया है। इसी ड्राइव के अंदर हम इस फोल्डर में काम कर रहे हैं। लैंग्राफ्ट कस्टम MCP यहां पर आप देख सकते हो। लैंग्राफ्ट कस्टम MCP का डेमो भी आप देख सकते हो। इस फोल्डर में हमारे पास कस्टम मैथ सर्वर की Python फाइल रखी है, जो मैंने प्रोवाइड की है। ट्रांसपोर्ट स्टैंडर्ड I/O ये मैंने बताया ही है। जब आपका क्लाइंट और सर्वर दोनों लोकल मशीन पर होते हैं, तो आप इसके जरिए बातचीत कर सकते हैं। ठीक है? पर थोड़ी देर में मैं आपको समझाऊंगी कि अगर दोनों मशीनें अलग हैं, जैसे इंटरनेट पर हैं, रिमोट पीसी या क्लाउड पर हैं, तो ब्राउज़र के जरिए कैसे उपयोग करें। अभी के लिए आप सिर्फ इतना ध्यान दें कि मैंने यहां पर कनेक्ट कर दिया सर्वर के साथ। सिर्फ इतना कहने से, हमने MCP क्लाइंट को अपने कोड के साथ MCP सर्वर से कनेक्ट कर दिया। कौनसे MCP सर्वर के साथ? हमारे कस्टम MCP सर्वर के साथ। और हमारा कस्टम MCP सर्वर कहां पड़ा है? कहां लिखा है? उसका कोड इस फाइल में लिखा हुआ है, जो कि अभी दूसरे प्रॉम्प्ट में रनिंग है। अब हम नेक्स्ट लाइन में नहीं लिखेंगे। इसका क्या मतलब है? हम वो सारे टूल्स ले रहे हैं। गेट टूल्स क्लाइंट डॉट गेट टूल्स। तो क्लाइंट में ही हमने ऐसा बनाया है, कि सर्वर कनेक्ट किया हुआ है। तो उसमें से गेट टूल्स मतलब हमारे पास टूल्स की लिस्ट आ जाएंगी। वो सारे टूल्स की लिस्ट आ जाएगी, जो इस कस्टम MCP सर्वर के टूल्स हैं। तो क्या टूल्स हैं इस कस्टम MCP सर्वर के? हमने जो टूल्स यहां बनाए हैं—एड, मल्टिप्लाई, डिवाइड, स्क्वायर रूट, और फैक्टोरियल—ये सारे टूल्स। ठीक है? तो हमें लिस्ट मिल गई। अब हमें इन टूल्स को, इन टूल्स को इस मॉडल के साथ बाइंड करना है। बाइंड क्यों करना? क्या है? क्योंकि जब कोई यूजर क्वेशन करेगा, मॉडल देखेगा, एलएलएम देखेगा कि क्या इस क्वेशन के जवाब के लिए टूल्स की रिक्वायरमेंट है। अगर टूल्स की रिक्वायरमेंट है, तो मॉडल टूल्स को यूज करेगा। मॉडल वो टूल्स को कब यूज कर सकता है? जब हमने मॉडल के साथ इन टूल्स को बाइंड किया हो। तो हमें मॉडल को टूल्स के साथ बाइंड करना है। ये हमने मॉडल विद टूल्स वेरिएबल में क्या किया? मॉडल में क्या पढ़ा हुआ है? है GPT-4, मॉडल डॉट बाइंड टूल्स। कौन से टूल्स को बाइंड करना है? ये वाले टूल्स। ये टूल्स की लिस्ट है जो हमारे कस्टम एमसीपी सर्वर के टूल्स हैं। तो हमने मॉडल को टूल्स के साथ बाइंड कर दिया। अब गैज, लैंग ग्राफ में क्या होता है? लंग ग्राफ में आपके जितने भी स्टेप्स होते हैं, जो भी आप काम करोगे, वो नोड के फॉर्म में होते हैं। हमारे पास एक फ्लो..
23:10होता है, ग्राफ का फ्लो होता है। हम नोड वन बनाते हैं, जहां पे एक टास्क होगा। फिर नोड टू बनाएंगे, जिस पे नेक्स्ट टास्क होगा। पूरा फ्लो हम डिफाइन करते हैं। तो अभी जो टूल्स ये वाले हैं, जो टूल्स हैं, जिन्होंने हमने MCP सर्वर से लिए हैं, इन टूल्स को भी हमें रैप करना पड़ेगा नोड में। ठीक है? वो कैसे किया जाएगा? इस तरह से देखो, मैंने लिखा टूल_अंडरस्कोर_नोड, एक वेरिएबल लिया। यहाँ पे टूल नोड कॉल किया। टूल नोड क्या है? यह देखो, लैंडग्राफ़.प्रिविल्ट में से टूल नोड ले रहे हैं हम। एंड इसको सारे टूल्स प्रोवाइड कर रहे हैं। कौन से टूल्स प्रोवाइड कर रहे हैं? जो हमने कस्टम MCP सर्वर के अंदर टूल्स बनाए हैं, जो हमने `get_under_score_tool_method_list` का यूज़ करके गेट करें, वो सारे टूल्स को ना हम एक नोड में डाल रहे हैं। एंड उसके लिए कौन सी नोड यूज़ हो रही है? टूल नोड यूज़ हो रही है। क्यों हम ऐसा कर..
24:01रहें हैं? क्योंकि लैंग ग्राफ में जब भी कोई काम करते हैं, हम सारे स्टेप्स लैंग ग्राफ में नोड्स के थ्रू ही होते हैं। तो इसलिए हमने इसे टूल नोड में ऐसे टूल्स डाल दिए। इससे होगा क्या? जब भी भी टूल्स की जरूरत होगी, ना, तो जितने भी MCP सर्वर के टूल्स हैं, वो सारे रैप हो रखे हैं यहां पर। तो इसे डायरेक्टली यूज़ किया जा सकता है ग्राफ़ के अंदर। अब हम एक फ़ंक्शन लिख रहे हैं। ये फ़ंक्शन देखो, इसका काम क्या है? समझते हैं। फ़ंक्शन में हो क्या रहा है? फ़ंक्शन का नाम है "शुड कंटिन्यू"। यह वाली जो लाइन है, इसका क्या मतलब है? स्टेट मेसेजेस मतलब, जितने भी मेसेजेस होते हैं ना, जब कॉन्बर्सेशन चल रही होती है, यूज़र और एलएलएम के बीच में, तो जितने भी कॉन्बर्सेशन हो रहे होते हैं, वो सारे मेसेजेस, जो सारे मेसेजेस होते हैं, वो स्टेट में स्टोर होते हैं। मतलब ये एक..
24:47मेमोरी होती है जो नोड्स के बीच में मेमोरी रहती है। इसके अंदर यूजर के सारे मैसेज रहते हैं। लास्ट मैसेज -1 मतलब जो भी लास्ट मैसेज होगा इस लिस्ट में। ये न बेसिकली एक लिस्ट होती है। लिस्ट के फॉर्म में सारे मैसेजेस स्टोर होते हैं। तो लिस्ट का जो लास्ट मैसेज होगा, ठीक है? उसको हम लास्ट मैसेज वेरिएबल में स्टोर करवा रहे हैं। मतलब जो भी बातचीत में लास्ट मैसेज होगा, उसको हमने लास्ट मैसेज वेरिएबल में स्टोर कर लिया। और हम देख रहे हैं कि उस लास्ट मैसेज में क्या किसी टूल को कॉल किया गया है। क्या टूल्स की जरूरत है? अगर तो जो लास्ट मैसेज है बातचीत वाली लिस्ट में, उसमें टूल्स की जरूरत है, तो क्या होगा? ये वाले टूल्स, जो हैं, देखो, टूल्स, यानी ये वाले टूल्स नहीं, हम न एक नोड बनाएंगे, टूल्स नोड। उस टूल को, उस टूल पर काम चला जाएगा, अन्यथा काम बंद हो जाएगा। तो ये जो..
25:41टूल्स नोड अभी हम बनाएंगे, जब हम सारे काम के लिए लैंगग्राफ का ग्राफ बनाएंगे, ना, पूरा फ्लो डिफाइन करेंगे, उस वक्त हम एक नोड बनाएंगे जिसका नाम होगा टूल्स, और वो टूल्स नोड पे चले जाएंगे, अगर टूल कॉल हो रहा है, जो भी मैसेजेस हैं, उसके लास्ट मैसेज के अंदर। ठीक है? तो इसको अभी मैं बताती हूं प्रैक्टिकली थोड़ी देर में कैसे काम करेगा ये। अब हम एक और फंक्शन लेंगे, जो यूज होगा, वो फंक्शन है ये कॉल मॉडल। इसमें सिंपल सा बात है। इसमें ना हम मॉडल यूज करेंगे, जो भी यूजर का क्वेश्चन है, यूजर का क्वेश्चन मॉडल के पास जाएगा, मॉडल उसका जवाब जेनरेट करेगा और रिस्पांस में डाल देगा। मैसेजेस, ये जो मैसेजेस वाली लिस्ट है ना, उसमें वो रिस्पांस डाल देगा। ठीक है? तो देखो क्या हो रहा है। मैसेजेस आए, मैसेजेस को जो भी कन्वर्सेशन है, मतलब, जो प्रीवियस मैसेज है और उसके पहले वाली जो हिस्ट्री है, वो। मैसेज इसमें पड़ा हुआ है। वो हमने मैसेजेस में डाल दी है। फिर मॉडल विद टूल्स। याद रखिए, हमने मॉडल को बाइंड किया हुआ है टूल्स के साथ। तो अब मॉडल विद टूल के पास यह मैसेज आया है, जो भी यूजर ने टाइप किया। मॉडल देखेगा, ओपनएआई GPT-4 एलएलएम यहाँ पे देखेगा कि टूल की जरूरत है या नहीं। अगर टूल की आवश्यकता होती है, तो टूल का उपयोग करेगा। नहीं तो, मॉडल जो भी प्रतिक्रिया करनी है, प्रतिक्रिया जनरेट करके दिखा देगा। तो, यहाँ पे सिर्फ क्या हो रहा है? यूजर के मैसेज के ऊपर मॉडल प्रतिक्रिया जनरेट कर रहा है। इस फंक्शन का ये काम है। अब हम ग्राफ बनाएंगे लंग ग्राफ का। अभी क्या है? हमने क्या किया? अभी तक हम ने पूरे काम को अलग-अलग लिख दिया है। अभी हमने फ्लो नहीं डिफाइन किया है। उसके लिए मैंने क्या कहा था? लंग ग्राफ में नोड्स होते हैं। नोड के जरिए ही सारा काम होता है। तो अभी हम वो नोड्स बनाएंगे। फिर हम फ्लो डिफाइन करेंगे कि कैसे कॉन्वर्सेशन फ्लो होना चाहिए। ठीक है? वह करते हैं। तो यह देखो, यहाँ पर मैंने क्या किया? मैंने नोड्स बनाई हैं। सबसे पहले, बिल्डर वेरिएबल में स्टेट ग्राफ सेट कर दिया। जब भी आपको लैंग ग्राफ में बनाना हो, ना, फ्लो ग्राफ, तो आपको पहली लाइन यही लिखनी होती है। स्टेट ग्राफ यहाँ इस तरह से लिखोगे। 'Message State' मतलब जहाँ पे मेसेजेस स्टोर होंगे। है ना? तो इस तरह से हो जाएंगे। तो बिल्डर डॉट ऐड नोड, कभी भी नोड ऐड करनी हो, तो 'add_node' का प्रयोग करो। यह हमने उस नोड का नाम रखा है। तो हमने एक नोड बनाई जिसका नाम है 'Call Model' और इस नोड पर हम क्या टास्क दे रहे हैं? यह वाला जो 'Call Model' फंक्शन है। तो यह क्या फंक्शन है? इस नोड का क्या काम है? हमने एक नोड बनाई है जिसका नाम है 'Call Model', और इसका काम क्या है? यह वो फंक्शन है। परफॉर्म करेगा जो इस फंक्शन के अंदर, यानी Python फंक्शन के अंदर पड़ा हुआ है। इस Python फंक्शन के अंदर क्या पड़ा हुआ है? यूज़र का मैसेज लेना, उसके ऊपर मॉडल को रन करना और रिस्पॉन्स जनरेट करना। फिर हमने एक और नोड बनाई, जिसका नाम हमने टूल्स रखा है। ठीक है? इस टूल्स नोड में हम क्या कॉल कर रहे हैं? देखो, टूल्स नोड। रिमेंबर मैंने आपको बताया था ना अभी थोड़ी देर पहले कि जितने भी MCP के टूल्स होंगे, अगर हमें उनको इस्तेमाल करना है लैंडग्राफ में, तो हमें उन सारे टूल्स को एक नोड में रैप करके रखना पड़ेगा। तभी हम उसको यूज़ कर सकते हैं। तो उसके लिए हमने यह वेरिएबल यूज़ किया था, जो है टूल्स। इस नोड का नाम है। काम क्या कर रहा है? टूल्स नोड है। ओके? रिमेंबर, यहां पे शुड कंटिन्यू फंक्शन के अंदर मैंने बोला था कि अगर यूज़र के मैसेजेस हैं, लास्ट मैसेज के अंदर टूल को कॉल किया जा रहा है, तो टूल्स नोड पर चले जाए। नहीं तो कन्वरसेशन एंड हो जाए। तो वो वाला। तो हमने ग्राफ बना लिया। अब ग्राफ तो बन गया। अब हमें फ्लो डिफाइन करना है। मतलब कार्य कहां से शुरू होना चाहिए, किस नोड से शुरू होना चाहिए और कैसे-कैसे कार्य निष्पादित होना चाहिए। वह फ्लो डिफाइन करना है। तो वह करते हैं। तो देखो, ये जो मैंने लाइंस लिखी हैं यहां पे। ये फर्स्ट लाइन है build_graph.add_edge। add_edge का मतलब होता है कनेक्शन बनाना। add_edge का अर्थ है जैसे पहले नोड कौन सी है? यहां पे फर्स्ट नोड का नाम आएगा। फर्स्ट नोड है हमारी स्टार्ट नोड। स्टार्ट नोड से कनेक्शन हम स्थापित करना चाहते हैं। कनेक्ट करना चाहते हैं किससे? कॉल मॉडल नोड से। यह वाली नोड को। ठीक है? तो पहले स्टार्ट नोड। स्टार्ट नोड से कनेक्शन हमने दिया किससे? कॉल मॉडल को। मतलब स्टार्ट नोड के बाद कौन कार्य करेगा? कॉल मॉडल नोड कार्य करेगा। उसके बाद हमने एक कंडीशनल एज अप्लाई की हुई है। इसका क्या मतलब है? कि यह कंडीशनल सिचुएशन है। मतलब अगर तो यूजर के क्वेश्चन में टूल को कॉल किया गया है, तो टूल की रिक्वायरमेंट है तो टूल इस्तेमाल होगा। ठीक है? और अगर टूल इस्तेमाल हुआ तो जब टूल का काम खत्म हो गया, उसके बाद काम किसके पास चला जाएगा? कॉल मॉडल के पास। देखो, टूल्स के बाद कौन सी नोड से कनेक्ट कर रहे हैं? टूल्स को कौन सी नोड से कनेक्ट कर रहे हैं? कॉल मॉडल को। मतलब जब टूल्स का काम खत्म हो गया, टूल फिर से जो भी उसका रिजल्ट निकला, वो किसको देगा? कॉल मॉडल को देगा। तो ये हमने यहां पे किया है, यानी हमने क्या किया? एक फ्लो को डिफाइन किया। पहले हमने नोड्स बनाए। फिर हमने उसका फ्लो ग्राफ का फ्लो डिफाइन किया कि पहले स्टार्ट नोड होगी, फिर कॉल मॉडल नोड होगी, फिर वो देखेगी कि अगर टूल की जरूरत है, अगर टूल इस्तेमाल हो रहा है, तो कंडीशनल एज लगाया हुआ है, अगर टूल इस्तेमाल हो रहा है, तो टूल। अपना काम करेगा। उसके बाद दोबारा से कंट्रोल किसके पास चला जाएगा? कॉल मॉडेल के पास। तो ये हमारा ग्राफ है, हमने फ्लो डिफ़ाइन कर दिया। अब हमें इस ग्राफ को कंपाइल करना है और रन करना है। बिना कंपाइल किए, आप ग्राफ को रन नहीं कर सकते। तो पहले हम इसे कंपाइल करेंगे। ग्राफ को कंपाइल करना बहुत आसान है। सिर्फ आपको क्या लिखना है? build.compile। और यह मैंने ग्राफ वेरिएबल में रख दिया है। अब हम रन करते हैं। अब हम चेक करते हैं। सवाल पूछेंगे। अभी हम सवाल लिखेंगे। हमारा सवाल एलएलएम के पास जाएगा। एलएलएम उस सवाल के बेसिस पे, अगर तो एमसीपी सर्वर के साथ कनेक्शन स्थापित करेगा। टूल्स की जरूरत होगी, तो टूल्स का इस्तेमाल करेगा। इस तरह से सारा काम होगा। देखते हैं। देखो। यह ग्राफ है, वह वेरिएबल है, जिसमें हमने बना हुआ ग्राफ है, कंपाइल किया हुआ है, सारा कुछ, है ना? तो। मेसेज दिया हमने, "What is 3 + 5 * 12?" ये मैंने मेसेज किया हुआ है। तो रिजल्ट जो आउटपुट हम दिखाना चाहते हैं स्क्रीन पे, वो होगा लास्ट मेसेज। लास्ट मेसेज क्यों दिखाना चाहते हैं? क्योंकि ये क्वेश्चन तो हमने भेज दिया। हमारा क्वेश्चन एलएलएम के पास गया। एलएलएम ने क्वेश्चन समझा। उसने देखा कि यहां पे टूल की जरूरत है, जो एमसीपी सर्वर के साथ कनेक्ट होगा। वो टूल्स को वहां से इस्तेमाल करेगा, आउटपुट जनरेट करेगा, और आउटपुट जनरेट कर के स्क्रीन पे दिखाएगा। तो जो आउटपुट मिलेगी हमें एलएलएम से, वो सबसे आखिरी मेसेज होगी। तो हमने तो आउटपुट ही देखनी है स्क्रीन पे, इसलिए हम लास्ट मेसेज स्क्रीन पे दिखा रहे हैं। इसे आप सेव कर दीजिए। तो गाइज, ये है हमारा LangGraph का कोड। अब हम एक और टर्मिनल खोलेंगे। देखो, ये वाले कमांड प्रोम्प्ट को कुछ नहीं करना है, क्योंकि ये तो सर्वर..
32:28है। अब हम एक और कमांड प्रॉम्प्ट ओपन करेंगे और उसमें यह वाला कोड रन करेंगे, जो कि हमारा क्लाइंट है, लैंग्राफ्ट वाला कोड। तो आप कमांड प्रॉम्प्ट खोलो। तो ये मैंने ओपन कर लिया, नेक्स्ट टर्मिनल। 다시 इसमें जाओ फोल्डर के अंदर। हम किस फोल्डर में काम कर रहे हैं? लैंग्राफ्ट कस्टम MCP डेमो फोल्डर में। ठीक है? और यहां पे हमारी फ़ाइल का नाम क्या है, जिसे हमें रन करनी है? MCP Client Lingraph.py। तो Python MCP Client Lingraph.py। अब हम इसे रन करते हैं। ओ, यह रन इसलिए नहीं हो रहा क्योंकि हमने एक लाइन यहां पर नहीं लिखी। हमें यह लाइन लिखनी है। इसका मतलब है कि जब हम इस फाइल को रन करें, तो यह कोड execute हो जाए। ठीक है? तो अब सर्वर चल रहा है यहां। यह हमारा क्लाइंट का कोड है। इसे रन करो। तो देखो, जवाब आ गया हमारा। सवाल क्या था? यह सवाल था, "What is 3 + 5 * 12?" तो इसका..
33:30आंसर आ गया 96। ठीक है? पहले इसने 3 प्लस 5 किया, फिर उसको टाइम्स 12 किया, तो यह आंसर मिल गया। तो इस तरह से हम कस्टम MCP सर्वर बना सकते हैं। तो गैज़, अभी मैंने आपको बताया था कि यहाँ पर जो ट्रांसपोर्ट हम यूज़ कर रहे हैं, कौन सा कर रहे हैं? स्टैंडर्ड इनपुट आउटपुट। ये कब काम करता है? जब आप लोकल कंप्यूटर पर काम कर रहे हो। ठीक है? आपका क्लाइंट एंड सर्वर दोनों लोकल पर हैं। तो हमारा सर्वर यह है, और क्लाइंट यह है, दोनों एक ही मशीन पर हैं ना? अभी तो यह काम कर लेगा। लेकिन बाय चांस, कल को आप किसी एप्लिकेशन पर काम कर रहे हो, जहां पर आपका जो सर्वर है, वो दूसरी मशीन पर पड़ा है, तो यह मेथड काम नहीं करेगा। उस केस में आप क्या करोगे? यहाँ पर ट्रांसपोर्ट बदलोगे। सर्वर वाली फाइल पर जाओ। सर्वर वाली फाइल में इसे कॉमेंट कर दो, और यहाँ पर यह कर दो। सिर्फ इतना ही चेंज करना है आपको। Streamlit, HTTP, और ईधर आएं, यहाँ पे भी हमें इतना ही change करना है। तो अभी हम क्या करते हैं? इस part को comment कर देते हैं। ठीक है, जो मैंने अभी आपको बताया था, इसके thumb यहां पर, अब हम यह लिख देते हैं। इसको मुझे uncomment करने दीजिए। यह देखो, क्लाइंट सेम उसी तरह से क्लाइंट को कॉल कर रहे हैं। हम कनेक्ट कर रहे हैं। सर्वर का नाम कस्टम सर्वर का नाम Math है। ट्रांसपोर्ट में बस यह change हो गया। क्या लिख दिया हमने? Streamlit HTTP पहले क्या था? यह था, और इसके साथ आपको URL देना पड़ेगा। तो यह URL है इसका। ठीक है? तो इस तरह से अगर आप अब इसे save करोगे, और फिर से रन करके देखें। अब हम क्या करते हैं? कोड को फिर से रन करते हैं। सर्वर को बंद करो। इसे फिर से रन करो। हमने changes save कर दिए हैं। तो अब आप देखो, यह इस तरह से रन हो रहा है। पहले ऐसा नहीं हो रहा था ना। अब यह। हमारा जो सर्वर है, यह इस लोकेशन पर ऐसे रन हो रहा है। जो क्वेश्चन हम यहां पर मैनुअली दे रहे थे, ना, इसको कमेंट करके हम यूजर से क्वेश्चन पूछते हैं। ये लिख दिया मैंने। देखो, मैंने क्या किया? यूजर क्वेश्चन वेरिएबल में इनपुट करवा रही हूं, यूजर से क्वेश्चन, और वो क्वेश्चन मैंने यहाँ पे दे दिया। ठीक है? तो सेव करते हैं। अब हम रन करके देखते हैं। तो अब मैं क्वेश्चन दोबारा यहाँ पे फाइल को रन करती हूं। Ask me anything about math
35:53मैंने अपना क्वेश्चन पेस्ट कर दिया। ये वाला एंटर कराओ तो देखो, हमें आउटपुट मिल गई। ठीक है? तो कोड वही वर्क कर रहा है। सारा कुछ सेम है, बस हमने कनेक्ट करने का मेथड बदल दिया। तो यह दो तरीके मैंने आपको बता दिए ट्रांसपोर्ट के। अब हम Streamlit ऐप बनाते हैं। कोड सारा सेम रहेगा, बस इसको हम Streamlit ऐप में इन्टेग्रेट करेंगे। तो हम अपने फोल्डर..
36:22में आए। यहाँ पर मैंने एक फ़ाइल पेस्ट कर दी है वेब ऐप। यह अभी ब्लैंक है। इसके अंदर अभी हमने कोड लिखना है स्ट्रीमलिट वाला। देखो, मैं सारा कोड एक ही बार में पेस्ट कर रही हूं। मैं बताती हूं, मैंने क्या किया। ये सारे मॉड्यूल्स आपको पता हैं, सारे मॉड्यूल्स लोड कर रहे हैं। सिर्फ एक नया मॉड्यूल लोड हुआ है, स्ट्रीमलिट वाला, क्योंकि स्ट्रीमलिट ऐप बनानी है। सेम वही फंक्शन रन हो रहा है। ओपनएआई की एपीआई को यहां पे लोड कर रहे हैं। चैट मॉडल वही यूज़ कर रहे हैं। GPT-4 मिनी वाला हमने कनेक्ट कर दिया। एमसीपी सर्वर को कनेक्ट कर दिया क्लाइंट के साथ। इस वाले ट्रांसपोर्ट मेथड से किया हमने। ठीक है? क्लाइंट से सारे जितने भी एमसीपी के टूल्स थे, वो गेट करें। मॉडल को टूल्स के साथ बाइंड किया। वो टूल्स को हमने टूल नोड में रखा, क्योंकि अगर आप नोड में नहीं रखोगे टूल्स को, तो यूज़ नहीं कर सकते। पाओगे। फिर यह वाला जो फंक्शन है, यह चेक कर रहा था कि लास्ट मैसेज के अंदर अगर टूल कॉल्स हैं, तो टूल नोड कॉल हो, नहीं तो बातचीत एंड हो जाए। फिर इस वाले फंक्शन में हमने क्या किया था? मॉडल के साथ बातचीत हो रही है। मॉडल के पास यूजर का मैसेज आया। मॉडल को मैसेज मिला। मॉडल ने उसके ऊपर रिस्पॉन्स जनरेट करके दे दिया। फिर हमने यहां पर देखा क्या किया था? नोड्स बनाए थे दो। फिर नोड्स ग्राफ का फ्लो डिफाइन किया था। फिर हम यहां पर यूजर से क्वेश्चन पूछ रहे थे। वही कोड है। देखो, यह रिजल्ट दिखा रहे थे। मैंने सिर्फ क्या किया? उस कोड के बाद एक फ़ंक्शन लगा दिया। यह वाला मेन फंक्शन बना दिया। मेन फंक्शन में मैं क्या कर रही हूं? स्ट्रीमलीट, यानी एसटी.डी.ऑट स्ट्रीमलीट। देखो, हमने ऊपर लिखा हुआ है, इंपोर्ट स्ट्रीमलीट ऐज एसटी, तो वह कर रही हूं मैंने, हमने क्या किया? पेज का टाइटल दे दिया। वाला आइकॉन दे दिया यहाँ पर, फिर ये स्क्रीन पर आपको लिखा दिखेगा कि एमसीपी मैथ चैट स्ट्रीमलेट। यूजर की इनपुट लेने के लिए मैंने एक इनपुट बॉक्स बनाया। अच्छा, हम ऐसा करें कि पहले इस कोड को रन करते हैं ताकि मैं आपको साइड बाय साइड दिखा सकूं कि किस कोड से क्या वाली चीज बनी हुई है, यानी कि डिजाइन किससे हो रहा है। ठीक है, तो आप क्या करो, इस वाली जगह पर ना, यहाँ पर लिख दो "Python वेब एप" क्योंकि हमने वेब.py फाइल में रखा हुआ है। ना, ये कोड ऐसे रख दो। अरे, सॉरी, इसको रन करना था, स्ट्रीमलेट ऐप को। हम कैसे रन करते हैं, स्ट्रीमलेट क्या लिखते हैं? हम "streamlit run" और फिर फाइल का नाम लिखते हैं। तो देखो, यह स्ट्रीमलेट ऐप है। हमारी यह जो हेडिंग दिख रहा है, आपको यहाँ पर 'एमसीपी मैथ चैट स्ट्रीमलेट' दिख रहा है। यह किससे दिख रहा है? एमसीपी मैथ चैट स्ट्रीमलेट। फिर आपको एक इनपुट बॉक्स दिख रहा है, ना, जहाँ पर लिखा हुआ है 'आस्क मी समथिंग मैथ'। रिलेटेड तो यह देखो, आप मुझसे कुछ भी पूछ सकते हैं, मैथमेटिक्स से रिलेटेड। फिर यह दिख रहा है कि यहां पे यूजर क्वेरी टाइप करेगा। क्वेश्चन टाइप करेगा। अब हमने यहाँ पे क्वेश्चन पूछा। इसी तरह मैं यह वाला क्वेश्चन करती हूँ। यह क्वेश्चन पूछा, मैंने "सेंड" पर क्लिक किया, तो रिजल्ट ऐसा आया, है ना? अगले क्वेश्चन कर लेते हैं। तो देखो, उत्तर ऐसा है। तो इस तरह से आप एक कस्टम MCP सर्वर बना सकते हैं। आज के ट्यूटोरियल में हमने क्या देखा? हमने एक कस्टम MCP सर्वर बनाया, लांगग्राफ में LLM का उपयोग किया, उस LLM के माध्यम से हमने MCP सर्वर के साथ कनेक्ट किया, और जो भी यूजर का क्वेश्चन था, उसका उत्तर लिया। तो गाइज, इस कोड का लिंक मैंने डिस्क्रिप्शन सेक्शन में दिया हुआ है। आप यह कोड ट्राई कर सकते हैं। और अगर मेरा वीडियोHelpful लगा हो, तो कृपया मेरे चैनल को लाइक, शेयर और सब्सक्राइब करना। थैंक यू फॉर वाचिंग।