मुख्य सामग्री पर जाएँ

Flowise AI: डेमो प्रोजेक्ट के साथ एक गाइड

Flowise, एक लो-कोड वर्कफ़्लो-आधारित टूल, का उपयोग करके CSV डेटासेट के आधार पर सवालों के जवाब देने वाला AI एजेंट बनाना सीखें।
· 12 मि॰ पढ़ें

AI के साथ खोजें

इस लेख में, मैं चरण-दर-चरण समझाऊंगा कि Flowise का उपयोग करके ऐसा AI एजेंट कैसे बनाएं जो CSV डेटासेट के आधार पर सवालों के जवाब दे सके।

Flowise उन लोगों के लिए उपयोगी टूल है जो जटिल कोडिंग में उलझे बिना AI एजेंट बनाना चाहते हैं। Flowise का लो-कोड अप्रोच हमें तकनीकी बारीकियों के बजाय सामने के काम पर अधिक ध्यान केंद्रित करने देता है।

हाल ही में, मैंने AI एजेंट बनाने के लिए डिज़ाइन किए गए टूल्स में तेजी से वृद्धि देखी है। ये टूल अब अधिक सुलभ और यूज़र-फ्रेंडली हो गए हैं, जिससे बिना गहरी तकनीकी विशेषज्ञता के भी बुद्धिमान सिस्टम बनाना संभव हो गया है। यदि आप इन टूल्स के बारे में और जानना चाहते हैं, तो ये ट्यूटोरियल भी देखें:

Flowise क्या है?

Flowise एक ऐसा टूल है जो हमें सरल ड्रैग-एंड-ड्रॉप इंटरफ़ेस के जरिए AI एजेंट बनाने में मदद करता है। यह अलग-अलग ब्लॉक्स को जोड़कर काम करता है, जिनमें से हर एक किसी न किसी फ़ंक्शन का प्रतिनिधित्व करता है, ताकि हम एक कस्टमाइज़्ड वर्कफ़्लो बना सकें। प्रत्येक ब्लॉक को किसी खास कार्रवाई के लिए कॉन्फ़िगर किया जा सकता है।

उदाहरण के लिए, LLM ब्लॉक नाम के ब्लॉक होते हैं जिन्हें बड़े भाषा मॉडल को संदेश भेजने के लिए इस्तेमाल किया जाता है। फ़ंक्शन ब्लॉक भी होते हैं जो हमें कस्टम JavaScript फ़ंक्शन्स चलाने की क्षमता देते हैं, जिससे और भी अधिक अनुकूलित ऑपरेशंस संभव हो पाते हैं।

इन ब्लॉक्स को आपस में जोड़कर, जानकारी एक ब्लॉक से दूसरे ब्लॉक तक बहती है और डेटा को चरण-दर-चरण प्रोसेस व ट्रांसफॉर्म किया जाता है। यह मॉड्यूलर अप्रोच गहरी प्रोग्रामिंग जानकारी के बिना भी AI एजेंट बनाना आसान बनाती है, क्योंकि हम वर्कफ़्लो डिज़ाइन करने और ज़रूरी कार्रवाइयों को कॉन्फ़िगर करने पर ध्यान केंद्रित कर सकते हैं।

Flowise के साथ डेटा एनालिस्ट AI एजेंट बनाना

आइए Flowise का उपयोग करके डेटा एनालिस्ट AI एजेंट बनाने की प्रक्रिया को समझें। इस गाइड में Flowise पर साइन अप करना, कस्टम वर्कफ़्लो बनाना और विभिन्न ब्लॉक्स का उपयोग करके ऐसा इंटरैक्टिव एजेंट तैयार करना शामिल है जो डेटासेट का विश्लेषण कर सके।

Step 1: Flowise पर अकाउंट बनाएँ

इस Flowise साइन-अप पेज पर जाएँ और अकाउंट बनाएँ। आवश्यक विवरण भरें और अपने ईमेल पर भेजे गए निर्देशों का पालन कर अकाउंट को वेरिफ़ाई व एक्टिवेट करें।

Step 2: डेटाबेस सेटअप

अब जबकि हमारा Flowise अकाउंट तैयार है, समय है उस डेटाबेस को सेट करने का जिसका हम उपयोग करेंगे। हमें उस डेटा को संग्रहीत करने के लिए डेटाबेस चाहिए जिसका विश्लेषण करना है।

हम अपने डेटा को मैनेज करने के लिए SingleStore, एक लोकप्रिय और यूज़र-फ्रेंडली SQL डेटाबेस प्रोवाइडर, का उपयोग करेंगे। निम्न चरणों का पालन करें:

  1. सबसे पहले SingleStore वेबसाइट पर जाएँ।
  2. SingleStore पर नया अकाउंट बनाएँ। 
  3. सक्रिय SingleStore अकाउंट होने पर अगला चरण उस डेटासेट को अपलोड करना है जिसके साथ हम काम करेंगे। इस उदाहरण में, हम छात्रों की सोशल मीडिया आदतों पर केंद्रित डेटासेट उपयोग कर रहे हैं, जो Kaggle पर उपलब्ध है। Kaggle से डेटासेट फ़ाइल डाउनलोड करें और उसे SingleStore पर अपलोड करें।

SingleStore में फ़ाइल लोड करना

  1. डेटासेट अपलोड होने के बाद, SingleStore उससे स्वतः एक डेटाबेस टेबल बना देगा। यही टेबल हमारे डेटा विश्लेषण का आधार बनेगी और Flowise AI एजेंट को इंटरैक्ट करने के लिए जानकारी उपलब्ध कराएगी।

Step 3: चैटफ़्लोज़ सेक्शन पर जाएँ

लॉग इन करने के बाद, डैशबोर्ड पर जाएँ और "Chatflows" सेक्शन खोजें। नया वर्कफ़्लो बनाने के लिए "Add New" पर क्लिक करें।

flowise में नया चैटफ़्लो बनाना

Step 4: टेबल जानकारी लोड करने के लिए कस्टम फ़ंक्शन बनाएं

इस चरण में टेबल के बारे में जानकारी, जैसे उसका विवरण और कॉलम नाम, प्राप्त करने के लिए कस्टम फ़ंक्शन लिखना शामिल है। यह डेटा हमारे AI एजेंट के लिए महत्वपूर्ण है ताकि वह जिस डेटासेट पर क्वेरी करेगा उसकी संरचना को समझ सके।

  1. एक कस्टम फ़ंक्शन ब्लॉक बनाएं।

कस्टम फ़ंक्शन ब्लॉक जोड़ना

  1. निम्न कोड को फ़ंक्शन ब्लॉक एडिटर में पेस्ट करें:
const mysql = require('mysql2/promise');

const tableName = $tableName;
const tableDescription = $tableDescription;
const connectionUrl = "<PASTE_YOUR_CONNECTION_STRING_HERE>" 

async function main() {
  try {
    const pool = mysql.createPool(connectionUrl);
    const q = 
    DESCRIBE ${tableName};
    ;
    const [rows] = await pool.query(q);
    const fields = rows.map((row) => ${row.Field} of type ${row.Type}).join("\n");
    const tableInformation = Table name: ${tableName}\nTable description:\n${tableDescription.trim()}\nColumns:\n${fields.trim()};
    return tableInformation;
  } catch(error) {
    return String(error);
  }  
}

return main();

फ़ंक्शन के शीर्ष पर हमें connectionUrl का मान सेट करना होगा। यह SingleStore के Deployments टैब में मिल जाएगा।

डेटाबेस कनेक्शन जानकारी प्राप्त करना

कनेक्शन स्ट्रिंग कुछ इस तरह दिखती है:

françois-19ecc:<françois-19ecc Password>@svc-3482219c-a389-4079-b18b-d50662524e8a-shared-dml.aws-virginia-6.svc.SingleStore.com:3333/db_franois_88ec0

पहला भाग, मेरे मामले में françois-19ecc, यूज़रनेम है। इसके तुरंत बाद पासवर्ड का प्लेसहोल्डर है, <françois-19ecc Password>, जिसे हमें वास्तविक पासवर्ड से बदलना होगा।

यह फ़ंक्शन SingleStore डेटाबेस से कनेक्ट होता है और टेबल के कॉलम की जानकारी प्राप्त करता है। इसके दो इनपुट हैं:

  • tableName: टेबल का नाम
  • tableDescription: टेबल का विवरण।

इन्हें कस्टम कोड नोड पर “Input Variables” बटन पर क्लिक करके कॉन्फ़िगर करना होगा। वेरिएबल्स को कोड में उनके नाम के आगे $ लगाकर एक्सेस किया जा सकता है।

वेरिएबल्स तक पहुँचना।

मेरे मामले में, टेबल का नाम SingleStore पर बनाते समय dataset रखा गया था। आपको वही नाम इस्तेमाल करना चाहिए जो आपने CSV फ़ाइल अपलोड करते समय सेट किया था।

SingleStore में टेबल नाम जाँचना।

Step 5: एक प्रॉम्प्ट टेम्पलेट नोड बनाएँ

यहीं पर हम अपने AI एजेंट का मार्गदर्शन करने वाले प्रश्न तैयार करते हैं। इस नोड को अपने कस्टम फ़ंक्शन से कनेक्ट करें।

  1. एक प्रॉम्प्ट टेम्पलेट नोड बनाएँ।

flowise में प्रॉम्प्ट टेम्पलेट नोड बनाना

  1. निम्न प्रॉम्प्ट डालें:
Based on the SQL table information and the user's questions, return a SQL query that answers that question.
TABLE INFORMATION: {tableInformation}
QUESTION: {question}

flowise में कस्टम फ़ंक्शन को प्रॉम्प्ट टेम्पलेट से जोड़ना

प्रॉम्प्ट में दो प्लेसहोल्डर हैं: {tableInformation} और {question}। question यूज़र द्वारा सबमिट किया गया प्रॉम्प्ट है, जबकि tableInformation पिछले चरण में परिभाषित फ़ंक्शन का आउटपुट है।

इन प्लेसहोल्डर मानों को प्रॉम्प्ट टेम्पलेट नोड पर “Format Prompt Values” बटन पर क्लिक करके कॉन्फ़िगर करना होगा।

flowise में प्रॉम्प्ट वेरिएबल्स कॉन्फ़िगर करना

Step 6: एक LLM चेन ब्लॉक से लिंक करें

अब हम प्रॉम्प्ट टेम्पलेट नोड को एक LLM चेन ब्लॉक से कनेक्ट करते हैं, जो प्रॉम्प्ट को इंटरप्रेट कर उससे SQL क्वेरी जनरेट करेगा। ये चरण अपनाएँ:

  1. एक LLM चेन ब्लॉक जोड़ें।
  2. OpenAI का उपयोग करने के लिए कॉन्फ़िगर किया गया एक मॉडल ब्लॉक शामिल करें, और उसे LLM चेन ब्लॉक के “Language Model” इनपुट से जोड़ें।
  3. OpenAI मॉडल कॉन्फ़िगर करने के लिए आपको OpenAI API की आवश्यकता होगी। यदि आपके पास नहीं है, तो आप यहाँ बना सकते हैं।
  4. प्रॉम्प्ट टेम्पलेट ब्लॉक को “Prompt” इनपुट से कनेक्ट करें।

flowise में LLM चेन नोड कॉन्फ़िगर करना

Step 7: सेट वेरिएबल ब्लॉक का उपयोग करें

उत्पन्न SQL क्वेरी को आगे उपयोग के लिए संग्रहीत करने हेतु एक सेट वेरिएबल ब्लॉक बनाएँ और उसे LLM चेन ब्लॉक के आउटपुट से लिंक करें।

flowise में सेट वेरिएबल ब्लॉक का उपयोग करके मानों को संग्रहीत करना

Step 8: SQL क्वेरी निष्पादित करें

SQL क्वेरी को डेटाबेस पर निष्पादित करने के लिए उसे एक नए कस्टम कोड ब्लॉक को भेजें।

  1. एक और कस्टम कोड ब्लॉक बनाएँ।
  2. निम्न कोड दर्ज करें:
const mysql = require('mysql2/promise');

const connectionUrl = "<PASTE_THE_SAME_URL_USED_BEFORE>";

function formatQuery() {
  // This function is used to clean the query provided by ChatGPT 
  // by removing markdown quotes
  const q = $query;
  let lines = q.trim().split(/\r\n|\r|\n/);
  if(lines[0].startsWith("")) {
    lines = lines.slice(1, lines.length - 1);
  }
  return lines.join("\n").trim()
}

const q = formatQuery();
try {
  const pool = mysql.createPool(connectionUrl);
  const [rows] = await pool.query(q);
  return rows;
} catch(error) {
  return Query: ${q}\nError:${String(error)}`
}

ध्यान रखें कि connectionUrl का मान सेट करें। यह वही है जो हमने पहले उपयोग किया था।

इस फ़ंक्शन में एक इनपुट है—वह क्वेरी जिसे हमें चलाना है—और उसे कोड में $query का उपयोग करके एक्सेस किया जाता है।  

कस्टम फ़ंक्शन नोड में वेरिएबल्स तक पहुँचना

Step 9: एक और प्रॉम्प्ट टेम्पलेट बनाएँ

यह टेम्पलेट क्वेरी परिणामों के आधार पर उपयोगकर्ता को प्रस्तुत किए जाने वाले उत्तर को फ़ॉर्मैट करने के लिए उपयोग किया जाता है।

  1. एक नया प्रॉम्प्ट टेम्पलेट बनाएँ।
  2. यह प्रॉम्प्ट उपयोग करें:
Based on the question and the query result, provide an answer to the user's question. Always show the query to the user.
QUERY: {query}
QUERY RESULT: {queryResult}
QUESTION: {question}

इस प्रॉम्प्ट में तीन प्लेसहोल्डर हैं:

  • query: LLM द्वारा जनरेट की गई SQL क्वेरी, जो वेरिएबल नोड को कनेक्ट करके प्राप्त होती है।
  • queryResult: क्वेरी का परिणाम, जो पिछले कस्टम फ़ंक्शन नोड द्वारा निकाला जाता है।
  • question: उपयोगकर्ता का प्रारंभिक प्रॉम्प्ट।

flowise में SQL क्वेरी जनरेट करने के लिए दूसरे प्रॉम्प्ट टेम्पलेट के कनेक्शन्स

Step 10: अंतिम LLM चेन ब्लॉक

अंत में, इस प्रॉम्प्ट टेम्पलेट को एक नए LLM चेन ब्लॉक से कनेक्ट करें, जो प्रॉम्प्ट का उपयोग कर उत्तर तैयार करेगा। आप इसे पहले वाले OpenAI मॉडल ब्लॉक से ही जोड़ सकते हैं।

यह रहा अंतिम एजेंट फ़्लो:

flowise में अंतिम फ़्लो

इन चरणों के पूरा होने के साथ, हमारा AI एजेंट तैयार है। यह प्रश्न स्वीकार कर सकता है, सम्बंधित डेटा प्राप्त करने के लिए SQL क्वेरियाँ बना सकता है और स्पष्ट, संक्षिप्त उत्तर दे सकता है।

डेटा एनालिस्ट एजेंट से बातचीत

एजेंट अब उपयोग के लिए तैयार है। इससे चैट करने के लिए, ऊपर दाईं ओर बैंगनी चैट बटन पर क्लिक करें:

AI एजेंट के साथ चैट करना

आइए इसे परखते हैं—पूछते हैं कि सर्वे को कितने उत्तर मिले:

flowise का उपयोग करते हुए AI एजेंट का उदाहरण

ध्यान दें कि अंतिम प्रॉम्प्ट की डिज़ाइन के कारण एजेंट उत्तर में क्वेरी शामिल करता है। आइए डेटा के बारे में कुछ सांख्यिकीय जानकारी पूछते हैं:

flowise का उपयोग करते हुए AI एजेंट का उदाहरण

यहाँ एक और उदाहरण है:

flowise का उपयोग करते हुए AI एजेंट का उदाहरण

Flowise पर मेरे विचार

कई AI एजेंट-बिल्डिंग टूल्स के साथ प्रयोग करने के बाद, Flowise के साथ मेरा अनुभव कुछ हद तक निराशाजनक रहा। एक बार-बार आने वाली समस्या यह थी कि अनजाने में कुछ वेरिएबल कॉन्फ़िगरेशन डिलीट हो जाते थे, जिससे एजेंट बिना स्पष्ट कारण के अनियमित व्यवहार करने लगता था। इससे ट्रबलशूटिंग अक्सर थकाऊ कार्य बन जाती थी।

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

मुझे एक नज़र में नोड कॉन्फ़िगरेशन देखना भी कठिन लगा। उदाहरण के लिए, जिन कस्टम कोड नोड्स का हमने उपयोग किया, उन्होंने इनपुट वेरिएबल्स परिभाषित किए थे, लेकिन यह दिखाई नहीं देता कि ऐसा है। इसे देखने के लिए हमें नोड के उस सेक्शन पर क्लिक करना पड़ता है। इससे केवल देखकर पूरे फ्लो को समझना कठिन हो जाता है।

निष्कर्ष

हालाँकि Flowise AI एजेंट बनाने के लिए एक संभावनाशील लो-कोड इंटरफ़ेस प्रदान करता है, लेकिन इसमें कुछ उपयोगिता संबंधी समस्याएँ हैं जो इसे समान टूल्स की तुलना में उपयोग में कठिन बनाती हैं, खासकर उनके लिए जो अधिक स्मूद और सहज अनुभव चाहते हैं। इन चुनौतियों के बावजूद, Flowise की अवधारणा में क्षमता है, और कुछ सुधारों के साथ यह AI समाधान बनाने के लिए एक उत्कृष्ट टूल बन सकता है।

François Aubry

लेखक

François Aubry

Full-stack इंजीनियर एवं संस्थापक, CheapGPT पर। पढ़ाना हमेशा से मेरा जुनून रहा है। विद्यार्थी जीवन से ही मैं उत्साहपूर्वक ट्यूशन देने और अन्य विद्यार्थियों की सहायता करने के अवसर तलाशता रहा हूँ। इसी जुनून ने मुझे पीएचडी करने के लिए प्रेरित किया, जहाँ मैंने अपने शैक्षणिक प्रयासों के साथ शिक्षण सहायक के रूप में भी काम किया। उन वर्षों में पारंपरिक कक्षा-परिवेश में काम करना, संबंध बनाना और सीखने को आसान बनाना मुझे अत्यंत संतोष देता था। लेकिन ऑनलाइन लर्निंग प्लेटफ़ॉर्म के आगमन के साथ, मैंने डिजिटल शिक्षा की रूपांतरकारी क्षमता को पहचाना। वास्तव में, हमारी ही विश्वविद्यालय में ऐसे एक प्लेटफ़ॉर्म के विकास में मैं सक्रिय रूप से शामिल था। मैं पारंपरिक शिक्षण सिद्धांतों को नवोन्मेषी डिजिटल पद्धतियों के साथ जोड़ने के लिए गहराई से प्रतिबद्ध हूँ। मेरा उद्देश्य ऐसे पाठ्यक्रम बनाना है जो न केवल रोचक और सूचनाप्रद हों, बल्कि इस डिजिटल युग के शिक्षार्थियों के लिए सुगम भी हों।

विषय