Dify एक यूज़र-फ्रेंडली प्लेटफ़ॉर्म है, जो आपको बहुत कम या बिना कोड के AI एप्लिकेशन बनाने में मदद करता है। यह अलग-अलग फ़ंक्शंस वाले ब्लॉक्स को ड्रैग-एंड-ड्रॉप करके काम करता है। जानकारी इन ब्लॉक्स से होकर गुजरती है, प्रोसेस होती है और संयोजित होकर उत्तर तैयार करती है।
इस लेख में, मैं आपको एक AI ट्रैवल एजेंट बनाकर Dify की बुनियादी बातें समझाऊंगा।
हम अपने पाठकों को The Median भेजकर AI की ताज़ा ख़बरों से अपडेट रखते हैं—यह हमारा मुफ्त शुक्रवार न्यूज़लेटर है जो सप्ताह की प्रमुख खबरों को सरलता से समझाता है। सब्सक्राइब करें और हर हफ्ते कुछ ही मिनटों में अपडेट रहें:
Dify क्या है?
Dify एक ऐसा प्लेटफ़ॉर्म है जिसे AI एप्लिकेशन डेवलपमेंट को सरल बनाने के लिए डिज़ाइन किया गया है, जिसमें व्यापक कोडिंग कौशल की ज़रूरत नहीं होती। यह एक यूज़र-फ्रेंडली, लो-कोड वातावरण देता है, जहाँ उपयोगकर्ता अलग-अलग कंपोनेंट्स को ड्रैग-एंड-ड्रॉप करके ऐप बना सकते हैं।
Dify को एक डिजिटल टूलबॉक्स की तरह समझें, जिसमें पहले से बने ब्लॉक होते हैं जिन्हें जोड़कर उपयोगी सॉफ़्टवेयर बनाया जा सकता है। यह तरीका तकनीक को और सुलभ बनाता है, ताकि सीमित प्रोग्रामिंग ज्ञान रखने वाले लोग भी अपने आइडिया को साकार कर सकें।
हर प्रकार के ब्लॉक के इनपुट होते हैं और वे ब्लॉक टाइप के अनुसार उन्हें अलग-अलग आउटपुट में बदलते हैं। जानकारी एक ब्लॉक से दूसरे ब्लॉक में पास और ट्रांसफ़ॉर्म होती रहती है, जिससे अंतिम परिणाम तैयार होता है।
Dify के साथ शुरुआत करना
Dify का उपयोग करने के दो तरीके हैं:
लोकल सेटअप।
क्लाउड वर्शन का उपयोग।
इस ट्यूटोरियल में, हम क्लाउड वर्शन का उपयोग करेंगे। Dify का क्लाउड वर्शन एक फ्री प्लान देता है, इसलिए इस ट्यूटोरियल को बिना पेड सब्सक्रिप्शन के भी फॉलो किया जा सकता है।
यदि आप लोकल सेटअप में रुचि रखते हैं, तो सबसे आसान तरीका यह है:
रिपॉज़िटरी की README की Quick Start section में बताए अनुसार Docker के ज़रिए Dify चलाएं।
Dify के साथ एक Chatflow बनाना
Dify कई प्रकार के ऐप देता है। हम Chatflow ऐप बनाने पर फोकस करेंगे, जो एक AI फ़्लो होता है जहाँ उपयोगकर्ता एजेंट से चैट इंटरफ़ेस के माध्यम से बातचीत करते हैं।
नया Chatflow ऐप बनाने के लिए, पहले "Create from blank" पर क्लिक करें और "Chatflow" विकल्प चुनें।
फ़्लो बनाने के लिए, हम एक नाम सेट करते हैं और फिर “Create” बटन दबाते हैं:
यह निम्न डिफ़ॉल्ट फ़्लो बनाएगा:
इस फ़्लो में तीन ब्लॉक होते हैं:
स्टार्ट ब्लॉक फ़्लो शुरू करने के लिए ज़िम्मेदार होता है। Chatflow के मामले में, फ़्लो उपयोगकर्ता द्वारा संदेश भेजने पर शुरू होता है।
LLM नोड यूज़र मैसेज को इनपुट के रूप में लेकर उसे LLM को भेजता है, इस मामले में gpt-4।
अंतिम नोड चैट में संदेश दिखाने के काम आता है। इस उदाहरण में, यह LLM नोड से जुड़ा है, इसलिए LLM नोड का आउटपुट चैट को भेजा जाता है।
ये तीनों नोड मिलकर प्रभावी रूप से ChatGPT जैसा AI चैट बनाते हैं। इस ऐप को चलाने से पहले, हमें OpenAI प्लगइन इंस्टॉल और सेटअप करना होगा।
OpenAI प्लगइन इंस्टॉल और सेटअप करना
OpenAI प्लगइन इंस्टॉल करने के लिए, ये करें:
ऊपर-दाईं ओर "Plugins" बटन पर क्लिक करें।
“Install from Marketplace.” पर क्लिक करें।
सर्च बॉक्स में "openai" टाइप करें और OpenAI प्लगइन पर क्लिक करें।
OpenAI प्लगइन चुनें और “Install.” पर क्लिक करें।
अब हमें OpenAI API कुंजी सेट करनी है। यदि आपके पास अभी तक नहीं है, तो इसे यहाँ बनाएं। ध्यान दें कि OpenAI API का उपयोग मुफ़्त नहीं है, इसलिए API कुंजी के साथ एक भुगतान विधि जोड़नी होगी।
कुंजी मिलने के बाद, इसे इस तरह कॉन्फ़िगर करें:
LLM नोड चुनें।
मॉडल नाम के पास कॉन्फ़िगरेशन आइकन पर क्लिक करें।
ऊपर मॉडल ड्रॉपडाउन पर क्लिक करें।
सूची के नीचे "Model Provider Settings" पर क्लिक करें।
API key सेक्शन में "Setup" पर क्लिक करें।
API कुंजी पेस्ट करें और “Save” पर क्लिक करें।
ऐप चलाना
अब हम प्रीव्यू बटन पर क्लिक करके ऐप चला सकते हैं:
अभी, यह बहुत दिलचस्प नहीं है क्योंकि यह सिर्फ एक AI चैटबॉट है। याद रखें कि उपयोगकर्ता के संदेश भेजने तक यह कुछ नहीं करेगा।
वेरिएबल बनाना
Dify में एप्लिकेशन की स्थिति को वेरिएबल्स में वैल्यू असाइन करके स्टोर किया जा सकता है, जो सभी ब्लॉक्स को उपलब्ध रहते हैं।
वेरिएबल बनाने के लिए, वेरिएबल बटन पर क्लिक करें:
आइए उपयोगकर्ता का नाम स्टोर करने के लिए एक वेरिएबल बनाते हैं:
इस कॉन्फ़िगरेशन ने name नाम का एक वेरिएबल बनाया जो एक स्ट्रिंग (टेक्स्ट) स्टोर करता है। हमने डिफ़ॉल्ट वैल्यू खाली छोड़ी है, इसलिए शुरुआत में वेरिएबल एक खाली स्ट्रिंग होगा।
इसे भरने के कई तरीके हैं, लेकिन सबसे आम तरीका है AI ब्लॉक का उपयोग करके बातचीत से इसे अपने-आप निकाल लेना। हम यह बाद में सीखेंगे। पहले, हम सीखते हैं कि एप्लिकेशन के फ़्लो को नियंत्रित करने के लिए किसी वेरिएबल का मान कैसे चेक करें।
IF/ELSE ब्लॉक्स
किसी वेरिएबल का मान जाँचने के लिए, हम IF/ELSE ब्लॉक का उपयोग कर सकते हैं। यह ब्लॉक किसी वेरिएबल के मान के आधार पर अलग-अलग कार्रवाइयाँ चलाता है।
नया ब्लॉक जोड़ने के लिए, नीचे "+" बटन पर क्लिक करें:
फिर वह ब्लॉक चुनें जिसे आप जोड़ना चाहते हैं। इस मामले में, हम "IF/ELSE" चुनते हैं:
फिर हम ब्लॉक पर क्लिक करके उसे कॉन्फ़िगर करते हैं और पहले बनाया हुआ name वेरिएबल चुनते हैं।
टेस्ट करने के लिए, हम दो Answer ब्लॉक्स जोड़ते हैं। ये ब्लॉक चैट में संदेश दिखाने के काम आते हैं। हम इनमें से एक को IF आउटपुट (जो कंडीशन सही होने पर चलता है) से जोड़ते हैं और दूसरे को ELSE आउटपुट (जो कंडीशन गलत होने पर चलता है) से।
IF आउटपुट के लिए, मैंने स्ट्रिंग "Sorry, I don't know your name." सेट की, जबकि ELSE के लिए "Hello, {name}!" सेट किया। हम कर्ली ब्रेसेस का उपयोग करके किसी स्ट्रिंग में वेरिएबल इंजेक्ट कर सकते हैं। यह आगे प्रॉम्प्ट बनाते समय भी काम आएगा।
हम "Preview" बटन पर क्लिक करके इस Chatflow को ट्राई कर सकते हैं। ध्यान दें कि Chatflow उपयोगकर्ता के संदेश से ट्रिगर होता है, इसलिए हमें पहले "Hi" जैसा कोई संदेश भेजना होगा। नीचे वे परिणाम हैं जो नाम सेट होने या न होने पर मिलते हैं (दूसरे उदाहरण में मैंने इंटरफ़ेस वेरिएबल में इसे मैन्युअल रूप से सेट किया):
वेरिएबल असाइनर और पैरामीटर एक्सट्रैक्टर ब्लॉक्स
हम AI का उपयोग करके Parameter Extractor ब्लॉक से वेरिएबल्स के मान पहचान और निकाल सकते हैं। यह ब्लॉक बातचीत से जानकारी निकालने के लिए LLM का उपयोग करता है।
हम पहले IF ब्रांच से कनेक्ट किया हुआ एक Parameter Extractor ब्लॉक जोड़ते हैं। यहाँ ब्लॉक की कॉन्फ़िगरेशन है:
INPUT VARIABLE को sys.query पर सेट किया गया है, जो उपयोगकर्ता के संदेश के अनुरूप है। यानी Parameter Extractor ब्लॉक उपयोगकर्ता के संदेश से वैल्यू निकालने की कोशिश करेगा।
EXTRACTION PARAMETERS में, हम वह जानकारी परिभाषित करते हैं जिसे निकालना है। दुर्भाग्य से, हम यहाँ सीधे किसी वेरिएबल को निर्दिष्ट नहीं कर सकते, इसलिए “+” बटन पर क्लिक करके उस जानकारी को पुनर्परिभाषित करना होगा।
INSTRUCTION फ़ील्ड वह प्रॉम्प्ट है जो LLM को निर्देश देता है कि क्या करना है।
इसके बाद, हम Variable Assigner ब्लॉक जोड़ते हैं ताकि Parameter Extractor द्वारा निकाली गई वैल्यू (यदि कोई हो) को name वेरिएबल में असाइन किया जा सके।
ध्यान रखें कि निकला हुआ namename वेरिएबल को ही असाइन हो।
इस चरण के बाद भी name वेरिएबल अनिर्दिष्ट रह सकता है क्योंकि संभव है कि उपयोगकर्ता ने अपना नाम न बताया हो। इसलिए हम एक और IF/ELSE ब्लॉक जोड़ते हैं। यदि नाम सेट है तो हम उपयोगकर्ता का अभिवादन करते हैं, अन्यथा हम उनसे नाम पूछते हैं।
यहाँ एक उदाहरण इंटरैक्शन है:
यह फ़्लो Dify वर्कफ़्लोज़ की बुनियादी बातें दिखाता है। उपयोगकर्ता का संदेश कुछ भी हो, यदि नाम परिभाषित नहीं है, तो यह संदेश से नाम निकालने की कोशिश करता है। यदि विफल रहता है, तो वह नाम पूछता है। वरना, उपयोगकर्ता का नाम लेकर अभिवादन करता है।
इस बिंदु पर, कोई LLM ब्लॉक नहीं है, इसलिए एजेंट और कुछ नहीं करेगा।
कोड ब्लॉक
कोड ब्लॉक्स का उपयोग कस्टम Python कोड चलाने के लिए किया जा सकता है। चलिए पिछले फ़्लो को संशोधित करके उपयोगकर्ता के नाम के बजाय लोकेशन निकालते हैं। फिर हम एक कोड ब्लॉक का उपयोग करके किसी वेदर API को रिक्वेस्ट भेजेंगे और उपयोगकर्ता को मौसम का पूर्वानुमान भेजेंगे।
location नाम का नया वेरिएबल बनाएं।
IF/ELSE ब्लॉक्स को name की बजाय location जाँचने के लिए संशोधित करें।
Parameter Extractor ब्लॉक को नाम के बजाय लोकेशन निकालने के लिए संशोधित करें।
Variable Assigner ब्लॉक को संशोधित करके निकली हुई वैल्यू को location वेरिएबल में असाइन करें।
Answer ब्लॉक्स को क्रमशः लोकेशन पूछने और लोकेशन दिखाने के लिए संशोधित करें।
इन चरणों के बाद, फ़्लो कुछ ऐसा दिखना चाहिए:
यहाँ एक नमूना इंटरैक्शन है:
अगला चरण है, लोकेशन मिल जाने के बाद एक कोड ब्लॉक जोड़ना। यह ब्लॉक OpenWeather API को रिक्वेस्ट भेजकर उस लोकेशन के मौसम का पूर्वानुमान मांगता है।
यह API उपयोग के लिए मुफ़्त है, बशर्ते हम बहुत अधिक रिक्वेस्ट न करें।
दूसरे Answer ब्लॉक को एक कोड ब्लॉक से रिप्लेस करें।
इसे location वैल्यू वाले एकल पैरामीटर को रिसीव करने के लिए कॉन्फ़िगर करें।
Python कोड के लिए, यहाँ दिखाया गया है कि हम requests पैकेज का उपयोग करके OpenWeather API से मौसम कैसे प्राप्त कर सकते हैं:
import requests
API_KEY ="PASTE_YOUR_API_KEY_HERE"defmain(location:str)->str:
base_url ="http://api.openweathermap.org/data/2.5/weather"
params ={"q": location,"appid": API_KEY,"units":"metric",}
response = requests.get(base_url, params=params)
data = response.json()if response.status_code ==200:
weather_desc = data["weather"][0]["description"]
temp = data["main"]["temp"]return{"result":f"Current weather in {location}: {weather_desc}, Temperature: {temp}°C"}else:return{"result":"Could not retrieve weather data",}संचालित द्वारा
अंत में, हम कोड नोड के आउटपुट को एक Answer नोड से कनेक्ट करते हैं ताकि उपयोगकर्ता को दिखाया जा सके।
अब हमारे पास ऐसा Chatflow है जो हमें मौसम का पूर्वानुमान बता सकता है:
प्रोजेक्ट: एक ट्रैवल प्लैनर AI एजेंट बनाना
अब हमारे पास AI ट्रैवल एजेंट बनाने के लिए सभी टूल हैं। संभावनाएँ अनंत हैं, लेकिन इस ट्यूटोरियल को अत्यधिक जटिल होने से बचाने के लिए, हम इसे सरल रखेंगे।
एजेंट यात्रा के एक दिन की योजना पर फोकस करेगा। यह उपयोगकर्ता की लोकेशन और उन्हें पसंद आने वाली गतिविधियों के प्रकार जुटाने से शुरू करेगा। इसके लिए, हम दो वेरिएबल्स का उपयोग करेंगे:
location: वह लोकेशन स्टोर करें जहाँ उपयोगकर्ता यात्रा कर रहा है।
activities: उन गतिविधियों की स्ट्रिंग्स की ऐरे, जो उपयोगकर्ता करना चाहता है।
यहाँ बताया गया है कि हम दोनों वेरिएबल्स निकालने के लिए फ़्लो कैसे बना सकते हैं:
इस उदाहरण में, हम एक वेरिएबल एक्सट्रैक्शन ब्लॉक से शुरू करते हैं ताकि location और activities की सूची—दोनों—निकाली जा सकें।
फिर हम IF/ELSE ब्लॉक्स का उपयोग करके जाँचते हैं कि क्या ये पैरामीटर्स निकले हैं और यदि निकले हैं तो वेरिएबल्स को अपडेट कर देते हैं। हमारे पिछले उदाहरणों के विपरीत, इससे उपयोगकर्ता को वैल्यू अपडेट करने की सुविधा मिलती है।
वैल्यू एक्सट्रैक्शन और वेरिएबल असाइनमेंट के अंत में, हम एक और IF/ELSE ब्लॉक जोड़ते हैं ताकि यह जाँचा जा सके कि कोई वैल्यू मिसिंग तो नहीं है। यदि कुछ कमी है, तो हम उपयोगकर्ता से स्पष्ट रूप से वह जानकारी माँगते हैं।
यदि location और activities दोनों परिभाषित हैं, तो हम पहले बनाए गए कोड ब्लॉक का उपयोग करके दी गई लोकेशन का मौसम प्राप्त करते हैं। अंत में, हम मौसम, लोकेशन और गतिविधियों को LLM ब्लॉक को देते हैं ताकि उपयोगकर्ता के दिन की योजना बनाई जा सके।
LLM ब्लॉक को एक सिस्टम प्रॉम्प्ट के साथ कॉन्फ़िगर किया गया है, जो मॉडल को बताता है कि क्या करना है। इसमें लोकेशन, गतिविधियाँ और मौसम इंजेक्ट किए जाते हैं। यहाँ फ़्लो का अंतिम भाग है:
यहाँ एजेंट के साथ एक नमूना इंटरैक्शन है:
हम प्रतिक्रिया में देखते हैं कि कोड नोड के कारण एजेंट उपयोगकर्ता को मौसम बता सकता है और गतिविधियों की योजना बनाते समय उसे ध्यान में रख सकता है।
फ़्लो की सेटिंग के कारण, यदि उपयोगकर्ता पहली ही मैसेज में सारी जानकारी दे देता है, तो एजेंट सीधे दिन की योजना प्रदान कर देगा।
कस्टम अभिवादन परिभाषित करना
आप देखेंगे कि एजेंट ने उपयोगकर्ता को एक संदेश के साथ अभिवादन करके शुरुआत की:
इसे सक्षम करने के लिए, हमें Conversation Opener फ़ीचर को सक्रिय करना होगा।
Dify टूल्स
इस ट्यूटोरियल में, हमने Dify के मूल बिल्डिंग ब्लॉक्स सीखे। एक पहलू जिसे हमने कवर नहीं किया, वह है टूल्स।
Dify में, टूल्स शक्तिशाली एक्सटेंशन होते हैं जो आपके AI एजेंट्स को भाषा मॉडल की सीमाओं से परे बाहरी दुनिया से इंटरैक्ट करने देते हैं। जहाँ LLM अपने प्रशिक्षण डेटा और प्रॉम्प्ट संदर्भ के आधार पर तर्क कर सकता है और जवाब बना सकता है, वहीं उसके पास लाइव डेटा या बाहरी सेवाओं तक रीयल-टाइम ऐक्सेस नहीं होता।
टूल्स इस समस्या का समाधान करते हैं—वे आपके एजेंट को API कॉल करने, डेटाबेस क्वेरी करने, गणनाएँ चलाने, दस्तावेज़ प्राप्त करने, और बहुत कुछ करने में सक्षम बनाते हैं—यानि आपके AI और बाहरी सूचना स्रोतों के बीच पुल का काम करते हैं।
आप Dify के विज़ुअल इंटरफ़ेस के माध्यम से टूल्स कॉन्फ़िगर कर सकते हैं—टूल टाइप (जैसे HTTP रिक्वेस्ट्स, कोड इंटरप्रिटर, या थर्ड-पार्टी प्लगइन्स), इनपुट/आउटपुट स्कीमा, और किसी भी ऑथेंटिकेशन आवश्यकता को निर्दिष्ट करके। सेटअप होने के बाद, इन टूल्स का उपयोग आप अपने एजेंट फ़्लो में टूल ब्लॉक्स के जरिए कर सकते हैं, जिनसे आप डेटा पास-इन/पास-आउट कर सकते हैं और परिणामों को LLM नोड्स या अन्य लॉजिक ब्लॉक्स में फीड कर सकते हैं।
इससे आपके एजेंट न केवल अधिक बुद्धिमान बनते हैं, बल्कि कार्रवाई-उन्मुख भी—जो वास्तविक-world सेवाओं के साथ इंटरैक्ट करके ताज़ा, सन्दर्भानुकूल उत्तर दे सकते हैं।
हमारे उदाहरण में, हमने वेदर API को रिक्वेस्ट भेजने के लिए कोड ब्लॉक का उपयोग किया। एक वैकल्पिक तरीका यह होता कि हम एक टूल बनाते और उसे LLM को उपलब्ध कराते।
निष्कर्ष
इस ट्यूटोरियल में, हमने Dify के साथ काम शुरू करने के लिए आवश्यक कुछ बुनियादी ब्लॉक्स को एक्सप्लोर किया। हालाँकि, Dify में और भी कई फ़ीचर्स और क्षमताएँ हैं जिन्हें खोजा जा सकता है।
अपनी समझ को पुख्ता करने के लिए, एक अच्छा अभ्यास होगा कि आप हमने जो ट्रैवल एजेंट बनाया है, उसे और बेहतर करें। जैसे इंटरनेट सर्च क्षमता जोड़ना, ताकि स्थानीय गतिविधियाँ ऑनलाइन खोजी जा सकें—इससे एजेंट की कार्यक्षमता समृद्ध होगी और अधिक डायनेमिक सुझाव मिलेंगे।
यदि आप Dify जैसे AI एजेंट बिल्डर्स में रुचि रखते हैं, तो आगे सीखने के लिए हमारे अन्य ट्यूटोरियल देखें:
Full-stack इंजीनियर एवं संस्थापक, CheapGPT पर। पढ़ाना हमेशा से मेरा जुनून रहा है। विद्यार्थी जीवन से ही मैं उत्साहपूर्वक ट्यूशन देने और अन्य विद्यार्थियों की सहायता करने के अवसर तलाशता रहा हूँ। इसी जुनून ने मुझे पीएचडी करने के लिए प्रेरित किया, जहाँ मैंने अपने शैक्षणिक प्रयासों के साथ शिक्षण सहायक के रूप में भी काम किया। उन वर्षों में पारंपरिक कक्षा-परिवेश में काम करना, संबंध बनाना और सीखने को आसान बनाना मुझे अत्यंत संतोष देता था। लेकिन ऑनलाइन लर्निंग प्लेटफ़ॉर्म के आगमन के साथ, मैंने डिजिटल शिक्षा की रूपांतरकारी क्षमता को पहचाना। वास्तव में, हमारी ही विश्वविद्यालय में ऐसे एक प्लेटफ़ॉर्म के विकास में मैं सक्रिय रूप से शामिल था। मैं पारंपरिक शिक्षण सिद्धांतों को नवोन्मेषी डिजिटल पद्धतियों के साथ जोड़ने के लिए गहराई से प्रतिबद्ध हूँ। मेरा उद्देश्य ऐसे पाठ्यक्रम बनाना है जो न केवल रोचक और सूचनाप्रद हों, बल्कि इस डिजिटल युग के शिक्षार्थियों के लिए सुगम भी हों।
Dify एक यूज़र-फ्रेंडली प्लेटफ़ॉर्म है, जो आपको बहुत कम या बिना कोड के AI एप्लिकेशन बनाने में मदद करता है। यह अलग-अलग फ़ंक्शंस वाले ब्लॉक्स को ड्रैग-एंड-ड्रॉप करके काम करता है। जानकारी इन ब्लॉक्स से होकर गुजरती है, प्रोसेस होती है और संयोजित होकर उत्तर तैयार करती है।
इस लेख में, मैं आपको एक AI ट्रैवल एजेंट बनाकर Dify की बुनियादी बातें समझाऊंगा।
हम अपने पाठकों को The Median भेजकर AI की ताज़ा ख़बरों से अपडेट रखते हैं—यह हमारा मुफ्त शुक्रवार न्यूज़लेटर है जो सप्ताह की प्रमुख खबरों को सरलता से समझाता है। सब्सक्राइब करें और हर हफ्ते कुछ ही मिनटों में अपडेट रहें:
Dify क्या है?
Dify एक ऐसा प्लेटफ़ॉर्म है जिसे AI एप्लिकेशन डेवलपमेंट को सरल बनाने के लिए डिज़ाइन किया गया है, जिसमें व्यापक कोडिंग कौशल की ज़रूरत नहीं होती। यह एक यूज़र-फ्रेंडली, लो-कोड वातावरण देता है, जहाँ उपयोगकर्ता अलग-अलग कंपोनेंट्स को ड्रैग-एंड-ड्रॉप करके ऐप बना सकते हैं।
Dify को एक डिजिटल टूलबॉक्स की तरह समझें, जिसमें पहले से बने ब्लॉक होते हैं जिन्हें जोड़कर उपयोगी सॉफ़्टवेयर बनाया जा सकता है। यह तरीका तकनीक को और सुलभ बनाता है, ताकि सीमित प्रोग्रामिंग ज्ञान रखने वाले लोग भी अपने आइडिया को साकार कर सकें।
हर प्रकार के ब्लॉक के इनपुट होते हैं और वे ब्लॉक टाइप के अनुसार उन्हें अलग-अलग आउटपुट में बदलते हैं। जानकारी एक ब्लॉक से दूसरे ब्लॉक में पास और ट्रांसफ़ॉर्म होती रहती है, जिससे अंतिम परिणाम तैयार होता है।
Dify के साथ शुरुआत करना
Dify का उपयोग करने के दो तरीके हैं:
इस ट्यूटोरियल में, हम क्लाउड वर्शन का उपयोग करेंगे। Dify का क्लाउड वर्शन एक फ्री प्लान देता है, इसलिए इस ट्यूटोरियल को बिना पेड सब्सक्रिप्शन के भी फॉलो किया जा सकता है।
यदि आप लोकल सेटअप में रुचि रखते हैं, तो सबसे आसान तरीका यह है:
Dify के साथ एक Chatflow बनाना
Dify कई प्रकार के ऐप देता है। हम Chatflow ऐप बनाने पर फोकस करेंगे, जो एक AI फ़्लो होता है जहाँ उपयोगकर्ता एजेंट से चैट इंटरफ़ेस के माध्यम से बातचीत करते हैं।
नया Chatflow ऐप बनाने के लिए, पहले "Create from blank" पर क्लिक करें और "Chatflow" विकल्प चुनें।
फ़्लो बनाने के लिए, हम एक नाम सेट करते हैं और फिर “Create” बटन दबाते हैं:
यह निम्न डिफ़ॉल्ट फ़्लो बनाएगा:
इस फ़्लो में तीन ब्लॉक होते हैं:
gpt-4।ये तीनों नोड मिलकर प्रभावी रूप से ChatGPT जैसा AI चैट बनाते हैं। इस ऐप को चलाने से पहले, हमें OpenAI प्लगइन इंस्टॉल और सेटअप करना होगा।
OpenAI प्लगइन इंस्टॉल और सेटअप करना
OpenAI प्लगइन इंस्टॉल करने के लिए, ये करें:
अब हमें OpenAI API कुंजी सेट करनी है। यदि आपके पास अभी तक नहीं है, तो इसे यहाँ बनाएं। ध्यान दें कि OpenAI API का उपयोग मुफ़्त नहीं है, इसलिए API कुंजी के साथ एक भुगतान विधि जोड़नी होगी।
कुंजी मिलने के बाद, इसे इस तरह कॉन्फ़िगर करें:
ऐप चलाना
अब हम प्रीव्यू बटन पर क्लिक करके ऐप चला सकते हैं:
अभी, यह बहुत दिलचस्प नहीं है क्योंकि यह सिर्फ एक AI चैटबॉट है। याद रखें कि उपयोगकर्ता के संदेश भेजने तक यह कुछ नहीं करेगा।
वेरिएबल बनाना
Dify में एप्लिकेशन की स्थिति को वेरिएबल्स में वैल्यू असाइन करके स्टोर किया जा सकता है, जो सभी ब्लॉक्स को उपलब्ध रहते हैं।
वेरिएबल बनाने के लिए, वेरिएबल बटन पर क्लिक करें:
आइए उपयोगकर्ता का नाम स्टोर करने के लिए एक वेरिएबल बनाते हैं:
इस कॉन्फ़िगरेशन ने
nameनाम का एक वेरिएबल बनाया जो एक स्ट्रिंग (टेक्स्ट) स्टोर करता है। हमने डिफ़ॉल्ट वैल्यू खाली छोड़ी है, इसलिए शुरुआत में वेरिएबल एक खाली स्ट्रिंग होगा।इसे भरने के कई तरीके हैं, लेकिन सबसे आम तरीका है AI ब्लॉक का उपयोग करके बातचीत से इसे अपने-आप निकाल लेना। हम यह बाद में सीखेंगे। पहले, हम सीखते हैं कि एप्लिकेशन के फ़्लो को नियंत्रित करने के लिए किसी वेरिएबल का मान कैसे चेक करें।
IF/ELSE ब्लॉक्स
किसी वेरिएबल का मान जाँचने के लिए, हम IF/ELSE ब्लॉक का उपयोग कर सकते हैं। यह ब्लॉक किसी वेरिएबल के मान के आधार पर अलग-अलग कार्रवाइयाँ चलाता है।
नया ब्लॉक जोड़ने के लिए, नीचे "+" बटन पर क्लिक करें:
फिर वह ब्लॉक चुनें जिसे आप जोड़ना चाहते हैं। इस मामले में, हम "IF/ELSE" चुनते हैं:
फिर हम ब्लॉक पर क्लिक करके उसे कॉन्फ़िगर करते हैं और पहले बनाया हुआ
nameवेरिएबल चुनते हैं।टेस्ट करने के लिए, हम दो Answer ब्लॉक्स जोड़ते हैं। ये ब्लॉक चैट में संदेश दिखाने के काम आते हैं। हम इनमें से एक को
IFआउटपुट (जो कंडीशन सही होने पर चलता है) से जोड़ते हैं और दूसरे कोELSEआउटपुट (जो कंडीशन गलत होने पर चलता है) से।IFआउटपुट के लिए, मैंने स्ट्रिंग "Sorry, I don't know your name." सेट की, जबकिELSEके लिए "Hello, {name}!" सेट किया। हम कर्ली ब्रेसेस का उपयोग करके किसी स्ट्रिंग में वेरिएबल इंजेक्ट कर सकते हैं। यह आगे प्रॉम्प्ट बनाते समय भी काम आएगा।हम "Preview" बटन पर क्लिक करके इस Chatflow को ट्राई कर सकते हैं। ध्यान दें कि Chatflow उपयोगकर्ता के संदेश से ट्रिगर होता है, इसलिए हमें पहले "Hi" जैसा कोई संदेश भेजना होगा। नीचे वे परिणाम हैं जो नाम सेट होने या न होने पर मिलते हैं (दूसरे उदाहरण में मैंने इंटरफ़ेस वेरिएबल में इसे मैन्युअल रूप से सेट किया):
वेरिएबल असाइनर और पैरामीटर एक्सट्रैक्टर ब्लॉक्स
हम AI का उपयोग करके Parameter Extractor ब्लॉक से वेरिएबल्स के मान पहचान और निकाल सकते हैं। यह ब्लॉक बातचीत से जानकारी निकालने के लिए LLM का उपयोग करता है।
हम पहले
IFब्रांच से कनेक्ट किया हुआ एक Parameter Extractor ब्लॉक जोड़ते हैं। यहाँ ब्लॉक की कॉन्फ़िगरेशन है:INPUT VARIABLEकोsys.queryपर सेट किया गया है, जो उपयोगकर्ता के संदेश के अनुरूप है। यानी Parameter Extractor ब्लॉक उपयोगकर्ता के संदेश से वैल्यू निकालने की कोशिश करेगा।EXTRACTION PARAMETERSमें, हम वह जानकारी परिभाषित करते हैं जिसे निकालना है। दुर्भाग्य से, हम यहाँ सीधे किसी वेरिएबल को निर्दिष्ट नहीं कर सकते, इसलिए “+” बटन पर क्लिक करके उस जानकारी को पुनर्परिभाषित करना होगा।INSTRUCTIONफ़ील्ड वह प्रॉम्प्ट है जो LLM को निर्देश देता है कि क्या करना है।nameवेरिएबल में असाइन किया जा सके।ध्यान रखें कि निकला हुआ
namenameवेरिएबल को ही असाइन हो।इस चरण के बाद भी
nameवेरिएबल अनिर्दिष्ट रह सकता है क्योंकि संभव है कि उपयोगकर्ता ने अपना नाम न बताया हो। इसलिए हम एक और IF/ELSE ब्लॉक जोड़ते हैं। यदि नाम सेट है तो हम उपयोगकर्ता का अभिवादन करते हैं, अन्यथा हम उनसे नाम पूछते हैं।यहाँ एक उदाहरण इंटरैक्शन है:
यह फ़्लो Dify वर्कफ़्लोज़ की बुनियादी बातें दिखाता है। उपयोगकर्ता का संदेश कुछ भी हो, यदि नाम परिभाषित नहीं है, तो यह संदेश से नाम निकालने की कोशिश करता है। यदि विफल रहता है, तो वह नाम पूछता है। वरना, उपयोगकर्ता का नाम लेकर अभिवादन करता है।
इस बिंदु पर, कोई LLM ब्लॉक नहीं है, इसलिए एजेंट और कुछ नहीं करेगा।
कोड ब्लॉक
कोड ब्लॉक्स का उपयोग कस्टम Python कोड चलाने के लिए किया जा सकता है। चलिए पिछले फ़्लो को संशोधित करके उपयोगकर्ता के नाम के बजाय लोकेशन निकालते हैं। फिर हम एक कोड ब्लॉक का उपयोग करके किसी वेदर API को रिक्वेस्ट भेजेंगे और उपयोगकर्ता को मौसम का पूर्वानुमान भेजेंगे।
locationनाम का नया वेरिएबल बनाएं।nameकी बजायlocationजाँचने के लिए संशोधित करें।locationवेरिएबल में असाइन करें।इन चरणों के बाद, फ़्लो कुछ ऐसा दिखना चाहिए:
यहाँ एक नमूना इंटरैक्शन है:
अगला चरण है, लोकेशन मिल जाने के बाद एक कोड ब्लॉक जोड़ना। यह ब्लॉक OpenWeather API को रिक्वेस्ट भेजकर उस लोकेशन के मौसम का पूर्वानुमान मांगता है।
यह API उपयोग के लिए मुफ़्त है, बशर्ते हम बहुत अधिक रिक्वेस्ट न करें।
दूसरे Answer ब्लॉक को एक कोड ब्लॉक से रिप्लेस करें।
इसे
locationवैल्यू वाले एकल पैरामीटर को रिसीव करने के लिए कॉन्फ़िगर करें।Python कोड के लिए, यहाँ दिखाया गया है कि हम
requestsपैकेज का उपयोग करके OpenWeather API से मौसम कैसे प्राप्त कर सकते हैं:अंत में, हम कोड नोड के आउटपुट को एक Answer नोड से कनेक्ट करते हैं ताकि उपयोगकर्ता को दिखाया जा सके।
अब हमारे पास ऐसा Chatflow है जो हमें मौसम का पूर्वानुमान बता सकता है:
प्रोजेक्ट: एक ट्रैवल प्लैनर AI एजेंट बनाना
अब हमारे पास AI ट्रैवल एजेंट बनाने के लिए सभी टूल हैं। संभावनाएँ अनंत हैं, लेकिन इस ट्यूटोरियल को अत्यधिक जटिल होने से बचाने के लिए, हम इसे सरल रखेंगे।
एजेंट यात्रा के एक दिन की योजना पर फोकस करेगा। यह उपयोगकर्ता की लोकेशन और उन्हें पसंद आने वाली गतिविधियों के प्रकार जुटाने से शुरू करेगा। इसके लिए, हम दो वेरिएबल्स का उपयोग करेंगे:
location: वह लोकेशन स्टोर करें जहाँ उपयोगकर्ता यात्रा कर रहा है।activities: उन गतिविधियों की स्ट्रिंग्स की ऐरे, जो उपयोगकर्ता करना चाहता है।यहाँ बताया गया है कि हम दोनों वेरिएबल्स निकालने के लिए फ़्लो कैसे बना सकते हैं:
इस उदाहरण में, हम एक वेरिएबल एक्सट्रैक्शन ब्लॉक से शुरू करते हैं ताकि
locationऔरactivitiesकी सूची—दोनों—निकाली जा सकें।फिर हम IF/ELSE ब्लॉक्स का उपयोग करके जाँचते हैं कि क्या ये पैरामीटर्स निकले हैं और यदि निकले हैं तो वेरिएबल्स को अपडेट कर देते हैं। हमारे पिछले उदाहरणों के विपरीत, इससे उपयोगकर्ता को वैल्यू अपडेट करने की सुविधा मिलती है।
वैल्यू एक्सट्रैक्शन और वेरिएबल असाइनमेंट के अंत में, हम एक और IF/ELSE ब्लॉक जोड़ते हैं ताकि यह जाँचा जा सके कि कोई वैल्यू मिसिंग तो नहीं है। यदि कुछ कमी है, तो हम उपयोगकर्ता से स्पष्ट रूप से वह जानकारी माँगते हैं।
यदि
locationऔरactivitiesदोनों परिभाषित हैं, तो हम पहले बनाए गए कोड ब्लॉक का उपयोग करके दी गई लोकेशन का मौसम प्राप्त करते हैं। अंत में, हम मौसम, लोकेशन और गतिविधियों को LLM ब्लॉक को देते हैं ताकि उपयोगकर्ता के दिन की योजना बनाई जा सके।LLM ब्लॉक को एक सिस्टम प्रॉम्प्ट के साथ कॉन्फ़िगर किया गया है, जो मॉडल को बताता है कि क्या करना है। इसमें लोकेशन, गतिविधियाँ और मौसम इंजेक्ट किए जाते हैं। यहाँ फ़्लो का अंतिम भाग है:
यहाँ एजेंट के साथ एक नमूना इंटरैक्शन है:
हम प्रतिक्रिया में देखते हैं कि कोड नोड के कारण एजेंट उपयोगकर्ता को मौसम बता सकता है और गतिविधियों की योजना बनाते समय उसे ध्यान में रख सकता है।
फ़्लो की सेटिंग के कारण, यदि उपयोगकर्ता पहली ही मैसेज में सारी जानकारी दे देता है, तो एजेंट सीधे दिन की योजना प्रदान कर देगा।
कस्टम अभिवादन परिभाषित करना
आप देखेंगे कि एजेंट ने उपयोगकर्ता को एक संदेश के साथ अभिवादन करके शुरुआत की:
इसे सक्षम करने के लिए, हमें Conversation Opener फ़ीचर को सक्रिय करना होगा।
Dify टूल्स
इस ट्यूटोरियल में, हमने Dify के मूल बिल्डिंग ब्लॉक्स सीखे। एक पहलू जिसे हमने कवर नहीं किया, वह है टूल्स।
Dify में, टूल्स शक्तिशाली एक्सटेंशन होते हैं जो आपके AI एजेंट्स को भाषा मॉडल की सीमाओं से परे बाहरी दुनिया से इंटरैक्ट करने देते हैं। जहाँ LLM अपने प्रशिक्षण डेटा और प्रॉम्प्ट संदर्भ के आधार पर तर्क कर सकता है और जवाब बना सकता है, वहीं उसके पास लाइव डेटा या बाहरी सेवाओं तक रीयल-टाइम ऐक्सेस नहीं होता।
टूल्स इस समस्या का समाधान करते हैं—वे आपके एजेंट को API कॉल करने, डेटाबेस क्वेरी करने, गणनाएँ चलाने, दस्तावेज़ प्राप्त करने, और बहुत कुछ करने में सक्षम बनाते हैं—यानि आपके AI और बाहरी सूचना स्रोतों के बीच पुल का काम करते हैं।
आप Dify के विज़ुअल इंटरफ़ेस के माध्यम से टूल्स कॉन्फ़िगर कर सकते हैं—टूल टाइप (जैसे HTTP रिक्वेस्ट्स, कोड इंटरप्रिटर, या थर्ड-पार्टी प्लगइन्स), इनपुट/आउटपुट स्कीमा, और किसी भी ऑथेंटिकेशन आवश्यकता को निर्दिष्ट करके। सेटअप होने के बाद, इन टूल्स का उपयोग आप अपने एजेंट फ़्लो में टूल ब्लॉक्स के जरिए कर सकते हैं, जिनसे आप डेटा पास-इन/पास-आउट कर सकते हैं और परिणामों को LLM नोड्स या अन्य लॉजिक ब्लॉक्स में फीड कर सकते हैं।
इससे आपके एजेंट न केवल अधिक बुद्धिमान बनते हैं, बल्कि कार्रवाई-उन्मुख भी—जो वास्तविक-world सेवाओं के साथ इंटरैक्ट करके ताज़ा, सन्दर्भानुकूल उत्तर दे सकते हैं।
हमारे उदाहरण में, हमने वेदर API को रिक्वेस्ट भेजने के लिए कोड ब्लॉक का उपयोग किया। एक वैकल्पिक तरीका यह होता कि हम एक टूल बनाते और उसे LLM को उपलब्ध कराते।
निष्कर्ष
इस ट्यूटोरियल में, हमने Dify के साथ काम शुरू करने के लिए आवश्यक कुछ बुनियादी ब्लॉक्स को एक्सप्लोर किया। हालाँकि, Dify में और भी कई फ़ीचर्स और क्षमताएँ हैं जिन्हें खोजा जा सकता है।
अपनी समझ को पुख्ता करने के लिए, एक अच्छा अभ्यास होगा कि आप हमने जो ट्रैवल एजेंट बनाया है, उसे और बेहतर करें। जैसे इंटरनेट सर्च क्षमता जोड़ना, ताकि स्थानीय गतिविधियाँ ऑनलाइन खोजी जा सकें—इससे एजेंट की कार्यक्षमता समृद्ध होगी और अधिक डायनेमिक सुझाव मिलेंगे।
यदि आप Dify जैसे AI एजेंट बिल्डर्स में रुचि रखते हैं, तो आगे सीखने के लिए हमारे अन्य ट्यूटोरियल देखें: