Last chance! 50% off DataCamp Premium
Sale ends in
Dify एक यूज़र-फ्रेंडली प्लेटफ़ॉर्म है, जो आपको बहुत कम या बिना कोड के AI एप्लिकेशन बनाने में मदद करता है। यह अलग-अलग फ़ंक्शंस वाले ब्लॉक्स को ड्रैग-एंड-ड्रॉप करके काम करता है। जानकारी इन ब्लॉक्स से होकर गुजरती है, प्रोसेस होती है और संयोजित होकर उत्तर तैयार करती है।
इस लेख में, मैं आपको एक AI ट्रैवल एजेंट बनाकर Dify की बुनियादी बातें समझाऊंगा।
हम अपने पाठकों को The Median भेजकर AI की ताज़ा ख़बरों से अपडेट रखते हैं—यह हमारा मुफ्त शुक्रवार न्यूज़लेटर है जो सप्ताह की प्रमुख खबरों को सरलता से समझाता है। सब्सक्राइब करें और हर हफ्ते कुछ ही मिनटों में अपडेट रहें:
Dify एक ऐसा प्लेटफ़ॉर्म है जिसे AI एप्लिकेशन डेवलपमेंट को सरल बनाने के लिए डिज़ाइन किया गया है, जिसमें व्यापक कोडिंग कौशल की ज़रूरत नहीं होती। यह एक यूज़र-फ्रेंडली, लो-कोड वातावरण देता है, जहाँ उपयोगकर्ता अलग-अलग कंपोनेंट्स को ड्रैग-एंड-ड्रॉप करके ऐप बना सकते हैं।
Dify को एक डिजिटल टूलबॉक्स की तरह समझें, जिसमें पहले से बने ब्लॉक होते हैं जिन्हें जोड़कर उपयोगी सॉफ़्टवेयर बनाया जा सकता है। यह तरीका तकनीक को और सुलभ बनाता है, ताकि सीमित प्रोग्रामिंग ज्ञान रखने वाले लोग भी अपने आइडिया को साकार कर सकें।
हर प्रकार के ब्लॉक के इनपुट होते हैं और वे ब्लॉक टाइप के अनुसार उन्हें अलग-अलग आउटपुट में बदलते हैं। जानकारी एक ब्लॉक से दूसरे ब्लॉक में पास और ट्रांसफ़ॉर्म होती रहती है, जिससे अंतिम परिणाम तैयार होता है।
Dify का उपयोग करने के दो तरीके हैं:
इस ट्यूटोरियल में, हम क्लाउड वर्शन का उपयोग करेंगे। Dify का क्लाउड वर्शन एक फ्री प्लान देता है, इसलिए इस ट्यूटोरियल को बिना पेड सब्सक्रिप्शन के भी फॉलो किया जा सकता है।
यदि आप लोकल सेटअप में रुचि रखते हैं, तो सबसे आसान तरीका यह है:
Dify कई प्रकार के ऐप देता है। हम Chatflow ऐप बनाने पर फोकस करेंगे, जो एक AI फ़्लो होता है जहाँ उपयोगकर्ता एजेंट से चैट इंटरफ़ेस के माध्यम से बातचीत करते हैं।
नया Chatflow ऐप बनाने के लिए, पहले "Create from blank" पर क्लिक करें और "Chatflow" विकल्प चुनें।

फ़्लो बनाने के लिए, हम एक नाम सेट करते हैं और फिर “Create” बटन दबाते हैं:

यह निम्न डिफ़ॉल्ट फ़्लो बनाएगा:

इस फ़्लो में तीन ब्लॉक होते हैं:
gpt-4।ये तीनों नोड मिलकर प्रभावी रूप से ChatGPT जैसा AI चैट बनाते हैं। इस ऐप को चलाने से पहले, हमें OpenAI प्लगइन इंस्टॉल और सेटअप करना होगा।
OpenAI प्लगइन इंस्टॉल करने के लिए, ये करें:



अब हमें OpenAI API कुंजी सेट करनी है। यदि आपके पास अभी तक नहीं है, तो इसे यहाँ बनाएं। ध्यान दें कि OpenAI API का उपयोग मुफ़्त नहीं है, इसलिए API कुंजी के साथ एक भुगतान विधि जोड़नी होगी।
कुंजी मिलने के बाद, इसे इस तरह कॉन्फ़िगर करें:






अब हम प्रीव्यू बटन पर क्लिक करके ऐप चला सकते हैं:

अभी, यह बहुत दिलचस्प नहीं है क्योंकि यह सिर्फ एक AI चैटबॉट है। याद रखें कि उपयोगकर्ता के संदेश भेजने तक यह कुछ नहीं करेगा।

Dify में एप्लिकेशन की स्थिति को वेरिएबल्स में वैल्यू असाइन करके स्टोर किया जा सकता है, जो सभी ब्लॉक्स को उपलब्ध रहते हैं।
वेरिएबल बनाने के लिए, वेरिएबल बटन पर क्लिक करें:

आइए उपयोगकर्ता का नाम स्टोर करने के लिए एक वेरिएबल बनाते हैं:

इस कॉन्फ़िगरेशन ने name नाम का एक वेरिएबल बनाया जो एक स्ट्रिंग (टेक्स्ट) स्टोर करता है। हमने डिफ़ॉल्ट वैल्यू खाली छोड़ी है, इसलिए शुरुआत में वेरिएबल एक खाली स्ट्रिंग होगा।
इसे भरने के कई तरीके हैं, लेकिन सबसे आम तरीका है AI ब्लॉक का उपयोग करके बातचीत से इसे अपने-आप निकाल लेना। हम यह बाद में सीखेंगे। पहले, हम सीखते हैं कि एप्लिकेशन के फ़्लो को नियंत्रित करने के लिए किसी वेरिएबल का मान कैसे चेक करें।
किसी वेरिएबल का मान जाँचने के लिए, हम 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 वेरिएबल में असाइन किया जा सके।
ध्यान रखें कि निकला हुआ name name वेरिएबल को ही असाइन हो।

इस चरण के बाद भी name वेरिएबल अनिर्दिष्ट रह सकता है क्योंकि संभव है कि उपयोगकर्ता ने अपना नाम न बताया हो। इसलिए हम एक और IF/ELSE ब्लॉक जोड़ते हैं। यदि नाम सेट है तो हम उपयोगकर्ता का अभिवादन करते हैं, अन्यथा हम उनसे नाम पूछते हैं।

यहाँ एक उदाहरण इंटरैक्शन है:

यह फ़्लो Dify वर्कफ़्लोज़ की बुनियादी बातें दिखाता है। उपयोगकर्ता का संदेश कुछ भी हो, यदि नाम परिभाषित नहीं है, तो यह संदेश से नाम निकालने की कोशिश करता है। यदि विफल रहता है, तो वह नाम पूछता है। वरना, उपयोगकर्ता का नाम लेकर अभिवादन करता है।
इस बिंदु पर, कोई LLM ब्लॉक नहीं है, इसलिए एजेंट और कुछ नहीं करेगा।
कोड ब्लॉक्स का उपयोग कस्टम Python कोड चलाने के लिए किया जा सकता है। चलिए पिछले फ़्लो को संशोधित करके उपयोगकर्ता के नाम के बजाय लोकेशन निकालते हैं। फिर हम एक कोड ब्लॉक का उपयोग करके किसी वेदर API को रिक्वेस्ट भेजेंगे और उपयोगकर्ता को मौसम का पूर्वानुमान भेजेंगे।
location नाम का नया वेरिएबल बनाएं।name की बजाय location जाँचने के लिए संशोधित करें।location वेरिएबल में असाइन करें।इन चरणों के बाद, फ़्लो कुछ ऐसा दिखना चाहिए:

यहाँ एक नमूना इंटरैक्शन है:

अगला चरण है, लोकेशन मिल जाने के बाद एक कोड ब्लॉक जोड़ना। यह ब्लॉक OpenWeather API को रिक्वेस्ट भेजकर उस लोकेशन के मौसम का पूर्वानुमान मांगता है।
यह API उपयोग के लिए मुफ़्त है, बशर्ते हम बहुत अधिक रिक्वेस्ट न करें।
दूसरे Answer ब्लॉक को एक कोड ब्लॉक से रिप्लेस करें।

इसे location वैल्यू वाले एकल पैरामीटर को रिसीव करने के लिए कॉन्फ़िगर करें।

Python कोड के लिए, यहाँ दिखाया गया है कि हम requests पैकेज का उपयोग करके OpenWeather API से मौसम कैसे प्राप्त कर सकते हैं:
import requests
API_KEY = "PASTE_YOUR_API_KEY_HERE"
def main(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 ट्रैवल एजेंट बनाने के लिए सभी टूल हैं। संभावनाएँ अनंत हैं, लेकिन इस ट्यूटोरियल को अत्यधिक जटिल होने से बचाने के लिए, हम इसे सरल रखेंगे।
एजेंट यात्रा के एक दिन की योजना पर फोकस करेगा। यह उपयोगकर्ता की लोकेशन और उन्हें पसंद आने वाली गतिविधियों के प्रकार जुटाने से शुरू करेगा। इसके लिए, हम दो वेरिएबल्स का उपयोग करेंगे:
location: वह लोकेशन स्टोर करें जहाँ उपयोगकर्ता यात्रा कर रहा है।activities: उन गतिविधियों की स्ट्रिंग्स की ऐरे, जो उपयोगकर्ता करना चाहता है।
यहाँ बताया गया है कि हम दोनों वेरिएबल्स निकालने के लिए फ़्लो कैसे बना सकते हैं:

इस उदाहरण में, हम एक वेरिएबल एक्सट्रैक्शन ब्लॉक से शुरू करते हैं ताकि location और activities की सूची—दोनों—निकाली जा सकें।

फिर हम IF/ELSE ब्लॉक्स का उपयोग करके जाँचते हैं कि क्या ये पैरामीटर्स निकले हैं और यदि निकले हैं तो वेरिएबल्स को अपडेट कर देते हैं। हमारे पिछले उदाहरणों के विपरीत, इससे उपयोगकर्ता को वैल्यू अपडेट करने की सुविधा मिलती है।
वैल्यू एक्सट्रैक्शन और वेरिएबल असाइनमेंट के अंत में, हम एक और IF/ELSE ब्लॉक जोड़ते हैं ताकि यह जाँचा जा सके कि कोई वैल्यू मिसिंग तो नहीं है। यदि कुछ कमी है, तो हम उपयोगकर्ता से स्पष्ट रूप से वह जानकारी माँगते हैं।

यदि location और activities दोनों परिभाषित हैं, तो हम पहले बनाए गए कोड ब्लॉक का उपयोग करके दी गई लोकेशन का मौसम प्राप्त करते हैं। अंत में, हम मौसम, लोकेशन और गतिविधियों को LLM ब्लॉक को देते हैं ताकि उपयोगकर्ता के दिन की योजना बनाई जा सके।

LLM ब्लॉक को एक सिस्टम प्रॉम्प्ट के साथ कॉन्फ़िगर किया गया है, जो मॉडल को बताता है कि क्या करना है। इसमें लोकेशन, गतिविधियाँ और मौसम इंजेक्ट किए जाते हैं। यहाँ फ़्लो का अंतिम भाग है:

यहाँ एजेंट के साथ एक नमूना इंटरैक्शन है:

हम प्रतिक्रिया में देखते हैं कि कोड नोड के कारण एजेंट उपयोगकर्ता को मौसम बता सकता है और गतिविधियों की योजना बनाते समय उसे ध्यान में रख सकता है।
फ़्लो की सेटिंग के कारण, यदि उपयोगकर्ता पहली ही मैसेज में सारी जानकारी दे देता है, तो एजेंट सीधे दिन की योजना प्रदान कर देगा।

आप देखेंगे कि एजेंट ने उपयोगकर्ता को एक संदेश के साथ अभिवादन करके शुरुआत की:

इसे सक्षम करने के लिए, हमें Conversation Opener फ़ीचर को सक्रिय करना होगा।


इस ट्यूटोरियल में, हमने Dify के मूल बिल्डिंग ब्लॉक्स सीखे। एक पहलू जिसे हमने कवर नहीं किया, वह है टूल्स।
Dify में, टूल्स शक्तिशाली एक्सटेंशन होते हैं जो आपके AI एजेंट्स को भाषा मॉडल की सीमाओं से परे बाहरी दुनिया से इंटरैक्ट करने देते हैं। जहाँ LLM अपने प्रशिक्षण डेटा और प्रॉम्प्ट संदर्भ के आधार पर तर्क कर सकता है और जवाब बना सकता है, वहीं उसके पास लाइव डेटा या बाहरी सेवाओं तक रीयल-टाइम ऐक्सेस नहीं होता।
टूल्स इस समस्या का समाधान करते हैं—वे आपके एजेंट को API कॉल करने, डेटाबेस क्वेरी करने, गणनाएँ चलाने, दस्तावेज़ प्राप्त करने, और बहुत कुछ करने में सक्षम बनाते हैं—यानि आपके AI और बाहरी सूचना स्रोतों के बीच पुल का काम करते हैं।

आप Dify के विज़ुअल इंटरफ़ेस के माध्यम से टूल्स कॉन्फ़िगर कर सकते हैं—टूल टाइप (जैसे HTTP रिक्वेस्ट्स, कोड इंटरप्रिटर, या थर्ड-पार्टी प्लगइन्स), इनपुट/आउटपुट स्कीमा, और किसी भी ऑथेंटिकेशन आवश्यकता को निर्दिष्ट करके। सेटअप होने के बाद, इन टूल्स का उपयोग आप अपने एजेंट फ़्लो में टूल ब्लॉक्स के जरिए कर सकते हैं, जिनसे आप डेटा पास-इन/पास-आउट कर सकते हैं और परिणामों को LLM नोड्स या अन्य लॉजिक ब्लॉक्स में फीड कर सकते हैं।

इससे आपके एजेंट न केवल अधिक बुद्धिमान बनते हैं, बल्कि कार्रवाई-उन्मुख भी—जो वास्तविक-world सेवाओं के साथ इंटरैक्ट करके ताज़ा, सन्दर्भानुकूल उत्तर दे सकते हैं।
हमारे उदाहरण में, हमने वेदर API को रिक्वेस्ट भेजने के लिए कोड ब्लॉक का उपयोग किया। एक वैकल्पिक तरीका यह होता कि हम एक टूल बनाते और उसे LLM को उपलब्ध कराते।
इस ट्यूटोरियल में, हमने Dify के साथ काम शुरू करने के लिए आवश्यक कुछ बुनियादी ब्लॉक्स को एक्सप्लोर किया। हालाँकि, Dify में और भी कई फ़ीचर्स और क्षमताएँ हैं जिन्हें खोजा जा सकता है।
अपनी समझ को पुख्ता करने के लिए, एक अच्छा अभ्यास होगा कि आप हमने जो ट्रैवल एजेंट बनाया है, उसे और बेहतर करें। जैसे इंटरनेट सर्च क्षमता जोड़ना, ताकि स्थानीय गतिविधियाँ ऑनलाइन खोजी जा सकें—इससे एजेंट की कार्यक्षमता समृद्ध होगी और अधिक डायनेमिक सुझाव मिलेंगे।
यदि आप Dify जैसे AI एजेंट बिल्डर्स में रुचि रखते हैं, तो आगे सीखने के लिए हमारे अन्य ट्यूटोरियल देखें:
इन कोर्सेस के साथ AI सीखें!
कोर्स
लर्निंग पाथ
कोर्स