एक्शन नोड्स

निश्चित वर्कफ़्लो संचालन के लिए गैर-LLM प्रोग्रामेटिक नोड्स। एक्शन नोड्स डेटा परिवर्तन, API एकीकरण, नियंत्रण प्रवाह और स्वचालन तर्क को संभालकर LLM एजेंटों के पूरक हैं।

अवलोकन

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

सभी एक्शन नोड्स त्रुटि प्रबंधन, ट्रेसिंग, निष्पादन नियंत्रण और I/O मैपिंग के लिए मानक गुणों का एक सेट साझा करते हैं। वे स्ट्रिंग फ़ील्ड में {{variable}} इंटरपोलेशन का समर्थन करते हैं और स्वचालित रूप से पूर्ववर्ती नोड आउटपुट प्राप्त करते हैं।

एक्शन नोड्स वर्कफ़्लो

उपलब्ध नोड्स

नोडआइकनरंगविवरण
ट्रिगर🎯Indigoकार्यप्रवाह प्रवेश बिंदु (मैनुअल, webhook, शेड्यूल, इवेंट)
HTTP🌐नीलाबाहरी APIs पर HTTP अनुरोध करें
सेट करें📝बैंगनीवर्कफ़्लो स्थिति चर को परिभाषित और हेरफेर करें
Transform⚙️Pinkडेटा को एक्सप्रेशन या बिल्ट-इन ऑपरेशंस का उपयोग करके रूपांतरित करें
Switch🔀Amberशर्तों के आधार पर सशर्त शाखाकरण
Loop🔄Emeraldसरणियों पर पुनरावृति करें या संचालन दोहराएं
Merge🔗Cyanकई branches को वापस एक एकल flow में मिलाएँ
प्रतीक्षा करें⏱️ग्रेकार्यप्रवाह को अवधि या शर्त के लिए रोकें
Code💻Redकस्टम JavaScript को सैंडबॉक्स्ड रनटाइम में निष्पादित करें
डेटाबेस🗄️टीलडेटाबेस संचालन (PostgreSQL, MySQL, SQLite, MongoDB, Redis)
ईमेल📧RoseSMTP के माध्यम से ईमेल भेजें या IMAP के माध्यम से निगरानी करें
सूचना🔔नारंगीSlack, Discord, Teams, या webhooks पर भेजें
RSS📡Limeनई प्रविष्टियों के लिए RSS/Atom feeds की निगरानी करें
फ़ाइल📁Skyस्थानीय या क्लाउड स्टोरेज (S3, GCS, Azure) पर फ़ाइल संचालन

मानक गुणधर्म

प्रत्येक एक्शन नोड इन साझा गुणधर्मों को विरासत में प्राप्त करता है:

पहचान

गुणप्रकारविवरण
idstringअद्वितीय पहचानकर्ता
namestringप्रदर्शित नाम
descriptionstring?वैकल्पिक टूलटिप विवरण

त्रुटि प्रबंधन

मोडव्यवहार
stopत्रुटि पर वर्कफ़्लो रोकें (डिफ़ॉल्ट)
continueत्रुटि लॉग करें और अगले नोड पर आगे बढ़ें
retryविन्यास योग्य गणना (1-10) और विलंब (मिलीसेकंड) के साथ पुनः प्रयास करें
fallbackत्रुटि होने पर फ़ॉलबैक मान का उपयोग करें

अनुरेखण

गुणप्रकारविवरण
enabledbooleanविस्तृत निष्पादन ट्रेस सक्षम करें
logLevelnone | error | info | debugलॉग वर्बोसिटी

निष्पादन नियंत्रण

गुणप्रकारविवरण
timeoutnumberटाइमआउट ms में (default: 30000)
conditionstring?यदि अभिव्यक्ति गलत सिद्ध होती है तो नोड छोड़ दें

इनपुट/आउटपुट मैपिंग

गुणप्रकारविवरण
inputMappingRecord<string, string>?स्टेट फ़ील्ड्स को नोड इनपुट्स से मैप करें
outputKeystringKey जहाँ परिणाम workflow state में संग्रहित किया जाता है

नोड संदर्भ

ट्रिगर नोड 🎯

वर्कफ़्लो का प्रवेश बिंदु। प्रत्येक वर्कफ़्लो एक ट्रिगर नोड से शुरू होता है। पूर्ण विवरण के लिए समर्पित ट्रिगर्स गाइड देखें।

ट्रिगर प्रकारविवरण
मैन्युअलचैट इनपुट के माध्यम से उपयोगकर्ता द्वारा शुरू किया गया
WebhookHTTP endpoint (POST/GET) वैकल्पिक auth के साथ
शेड्यूलटाइमज़ोन समर्थन के साथ क्रॉन-आधारित समय निर्धारण
इवेंटJSONPath फ़िल्टरिंग के साथ बाहरी सिस्टम इवेंट्स

HTTP नोड 🌐

यह पूर्ण प्रमाणीकरण, शीर्षलेख, मुख्य भाग और प्रतिक्रिया प्रबंधन के साथ बाहरी APIs को HTTP अनुरोध करता है।

कॉन्फ़िगरेशन:

गुणप्रकारविवरण
methodGET, POST, PUT, PATCH, DELETEHTTP विधि
urlstringURL के साथ {{variable}} interpolation
authobjectAuthentication (none, bearer, basic, api_key)
headersRecord<string, string>अनुरोध शीर्षलेख
bodyobjectBody (none, json, form, raw)
responseobjectप्रतिक्रिया प्रबंधन (json, text, binary) वैकल्पिक JSONPath निष्कर्षण के साथ
rateLimitऑब्जेक्ट?दर सीमा (प्रति विंडो अनुरोध)

उदाहरण:

{
  "type": "http",
  "name": "Fetch User Data",
  "method": "GET",
  "url": "https://api.example.com/users/{{userId}}",
  "auth": {
    "type": "bearer",
    "bearer": { "token": "{{API_TOKEN}}" }
  },
  "headers": { "Accept": "application/json" },
  "body": { "type": "none" },
  "response": { "type": "json", "jsonPath": "$.data" },
  "errorHandling": { "mode": "retry", "retryCount": 3, "retryDelay": 1000 },
  "mapping": { "outputKey": "userData" }
}

सेट नोड 📝

वर्कफ़्लो स्थिति चर को परिभाषित और हेरफेर करता है। शाब्दिक मानों, अभिव्यक्तियों और रहस्यों का समर्थन करता है।

कॉन्फ़िगरेशन:

गुणप्रकारविवरण
modeसेट करें, विलय करें, हटाएँचर संचालन
variablesVariable[]सेट करने के लिए चरों की सूची
envVarsobject?.env फ़ाइल से वैकल्पिक प्रीफ़िक्स फ़िल्टर के साथ लोड करें

चर के प्रकार: string, number, boolean, json, expression

isSecret: true से चिह्नित चर लॉग और UI में छिपाए जाते हैं।

ट्रांसफॉर्म नोड ⚙️

अभिव्यक्तियों या अंतर्निहित ऑपरेशनों का उपयोग करके डेटा को रूपांतरित करता है।

ट्रांसफॉर्म के प्रकार:

प्रकारविवरण
jsonpathJSONPath अभिव्यक्ति
jmespathJMESPath अभिव्यक्ति
templateइंटरपोलेशन के साथ स्ट्रिंग टेम्पलेट
javascriptJavaScript अभिव्यक्ति

अंतर्निहित संचालन: pick, omit, rename, flatten, sort, unique

प्रकार रूपांतरण लक्ष्य: string, number, boolean, array, object

स्विच नोड 🔀

कई आउटपुट पोर्ट के साथ सशर्त ब्रांचिंग। प्रत्येक शर्त नोड पर एक अलग आउटपुट पोर्ट से मैप होती है।

स्विच गुण पैनल

कॉन्फ़िगरेशन:

गुणप्रकारविवरण
evaluationModefirst_match | all_matchपहले मिलान पर रुकें या सभी का मूल्यांकन करें
conditionsSwitchCondition[]आउटपुट पोर्ट के साथ शर्तों की सूची
defaultBranchstring?Output port जब कोई शर्त मेल नहीं खाती

शर्त ऑपरेटर: eq, neq, gt, lt, gte, lte, contains, startsWith, endsWith, matches, in, empty, exists

उदाहरण:

{
  "type": "switch",
  "evaluationMode": "first_match",
  "conditions": [
    { "id": "ok", "name": "Success", "field": "status", "operator": "eq", "value": "success", "outputPort": "success" },
    { "id": "err", "name": "Error", "field": "status", "operator": "eq", "value": "error", "outputPort": "error" }
  ],
  "defaultBranch": "unknown"
}

लूप नोड 🔄

एरेज़ पर पुनरावृति करता है, एक निश्चित संख्या में दोहराता है, या एक शर्त पूरी होने तक लूप करता है।

लूप के प्रकार:

प्रकारविवरण
forEachस्टेट से एक ऐरे पर पुनरावृति करें
whileजब तक शर्त सत्य है, तब तक लूप करें
timesN बार दोहराएँ

समानांतर निष्पादन: समवर्ती पुनरावृति के लिए वैकल्पिक batchSize और delayBetween के साथ parallel.enabled सक्षम करें।

परिणाम एकत्रीकरण: जब results.collect सही है, तो पुनरावृति के परिणाम results.aggregationKey के तहत एक सरणी में एकत्र किए जाते हैं।

मर्ज नोड 🔗

कई समानांतर शाखाओं को वापस एक एकल प्रवाह में जोड़ता है। इसमें कई इनपुट पोर्ट होते हैं।

मर्ज मोड:

मोडव्यवहार
wait_allसभी आने वाली शाखाओं की प्रतीक्षा करें
wait_anyपहली शाखा पूरी होने पर जारी रखें
wait_nN शाखाएँ पूरी होने के बाद जारी रखें

रणनीतियों को मिलाएं: array, object, first, last

वैकल्पिक टाइमआउट के साथ continue या error व्यवहार।

प्रतीक्षा नोड ⏱️

वर्कफ़्लो निष्पादन को रोकता है।

प्रतीक्षा प्रकार:

प्रकारविवरण
fixedएक निश्चित अवधि (ms, s, m, h) के लिए प्रतीक्षा करें
untilएक विशिष्ट टाइमस्टैम्प तक प्रतीक्षा करें
webhookआने वाले वेबहुक का इंतज़ार करें
conditionएक स्थिति को अंतराल पर जांचें

कोड नोड 💻

एक सैंडबॉक्स किए गए boa_engine रनटाइम में कस्टम JavaScript निष्पादित करता है। ग्राफ की स्थिति को वैश्विक input ऑब्जेक्ट के रूप में इंजेक्ट किया जाता है।

कॉन्फ़िगरेशन:

गुणप्रकारविवरण
languagejavascript, typescriptकोड भाषा
codeस्ट्रिंगनिष्पादित करने के लिए कोड
sandboxऑब्जेक्टसुरक्षा सीमाएँ (नेटवर्क, फ़ाइलसिस्टम, मेमोरी, समय)

सैंडबॉक्स पूर्वनिर्धारित मान:

सीमाडिफ़ॉल्ट
नेटवर्क पहुँचगलत
फ़ाइल सिस्टम पहुँचगलत
मेमोरी सीमा128 MB
समय सीमा5000 ms

डेटाबेस नोड 🗄️

कनेक्शन पूलिंग और पैरामीटराइज़्ड क्वेरीज़ के साथ डेटाबेस संचालन करता है।

समर्थित डेटाबेस:

डेटाबेसड्राइवरविशेषताएँ
PostgreSQLsqlx (postgres)एसिंक्रोनस पूल, पैरामीटराइज़्ड क्वेरीज़, पंक्ति-से-JSON
MySQLsqlx (mysql)Async पूल, पैरामीटराइज़्ड क्वेरीज़, पंक्ति-से-JSON
SQLitesqlx (sqlite)एसिंक्रोनस पूल, पैरामीटराइज़्ड क्वेरीज़, पंक्ति-से-JSON
MongoDBmongodbमूल BSON, find/insert/update/delete
RedisredisGET, SET, DEL, HGET, HSET, LPUSH, LRANGE

कनेक्शन स्ट्रिंग को रहस्य माना जाता है और लॉग में छिपाया जाता है।

ईमेल नोड 📧

SMTP के माध्यम से ईमेल भेजें या IMAP के माध्यम से आने वाले ईमेल की निगरानी करें।

भेजने का मोड (SMTP):

  • TLS/SSL समर्थन
  • प्रमाणीकरण
  • To/CC/BCC प्राप्तकर्ता
  • HTML या सादा पाठ निकाय
  • विषय और निकाय में {{variable}} इंटरपोलेशन
  • स्थिति से फ़ाइल अटैचमेंट

निगरानी मोड (IMAP):

  • फ़ोल्डर चयन (डिफ़ॉल्ट: INBOX)
  • फ़िल्टर: प्रेषक, विषय, दिनांक सीमा, केवल अपठित
  • प्रसंस्करण के बाद पढ़ा गया चिह्नित करें

सूचना नोड 🔔

मैसेजिंग प्लेटफॉर्म पर सूचनाएं भेजता है।

चैनल: Slack, Discord, Microsoft Teams, कस्टम वेबहुक

संदेश प्रारूप: सादा पाठ, markdown, प्लेटफ़ॉर्म-विशिष्ट ब्लॉक (Block Kit, Embeds, Adaptive Cards)

RSS नोड 📡

नई प्रविष्टियों के लिए RSS/Atom फ़ीड्स की निगरानी करता है।

  • कॉन्फ़िगर करने योग्य पोल अंतराल
  • कीवर्ड, लेखक, श्रेणी और तिथि फ़िल्टर
  • डुप्लिकेट से बचने के लिए देखे गए आइटम की ट्रैकिंग
  • वैकल्पिक पूर्ण सामग्री या केवल सारांश

फ़ाइल नोड 📁

स्थानीय या क्लाउड स्टोरेज पर फ़ाइल संचालन।

संचालन: पढ़ें, लिखें, हटाएँ, सूची

क्लाउड प्रदाता: Amazon S3, Google Cloud Storage, Azure Blob Storage

फ़ाइल प्रारूप: JSON, CSV, XML, text, binary (डिलिमिटर, हेडर, कोटिंग के लिए CSV पार्सिंग विकल्पों के साथ)


वेरिएबल इंटरपोलेशन

एक्शन नोड्स में सभी स्ट्रिंग फ़ील्ड डायनामिक मानों के लिए {{variable}} सिंटैक्स का समर्थन करते हैं:

https://api.example.com/users/{{userId}}
Bearer {{API_TOKEN}}
Hello {{user.name}}, your order {{orderId}} is ready.

वेरिएबल निष्पादन समय पर वर्कफ़्लो स्थिति से हल किए जाते हैं। डॉट नोटेशन (user.name) नेस्टेड मानों तक पहुँचता है।

मल्टी-पोर्ट नोड्स

दो नोड प्रकारों में डायनामिक पोर्ट गणना होती है:

  • Switch — प्रति शर्त एक आउटपुट पोर्ट, साथ ही एक वैकल्पिक डिफ़ॉल्ट पोर्ट
  • Merge — प्रति इनकमिंग ब्रांच एक, कई इनपुट पोर्ट

ये पोर्ट नोड पर दृश्य रूप से दर्शाए जाते हैं और विभिन्न डाउनस्ट्रीम/अपस्ट्रीम नोड्स से जुड़ते हैं।


कोड जनरेशन

एक्शन नोड्स LLM agents के साथ प्रोडक्शन Rust कोड में संकलित होते हैं। डिपेंडेंसीज़ स्वतः पता लगाई जाती हैं और जेनरेट किए गए Cargo.toml में जोड़ी जाती हैं।

नोडक्रेटयह क्या उत्पन्न करता है
HTTPreqwestAsync HTTP अनुरोध प्रमाणीकरण, हेडर, बॉडी, JSONPath निष्कर्षण के साथ
डेटाबेसsqlx / mongodb / redisकनेक्शन पूल, पैरामीटराइज़्ड क्वेरीज़, रेडिस कमांड
Emaillettre / imapSMTP TLS के साथ भेजें; खोज फ़िल्टर के साथ IMAP निगरानी
Codeboa_engineएम्बेडेड JavaScript निष्पादन graph स्थिति के साथ input object के रूप में
सेटनेटिववेरिएबल असाइनमेंट (लिटरल, एक्सप्रेशन, सीक्रेट)
रूपांतरणnativeMap, filter, sort, reduce, flatten, group, pick, merge, template
विलयनेटिवशाखा संयोजन (waitAll, waitAny, append)

सभी जनरेट किया गया कोड adk-graph FunctionNode क्लोजर का उपयोग GraphError::NodeExecutionFailed के साथ त्रुटि प्रबंधन के लिए करता है।

उदाहरण जनरेट किया गया कोड (HTTP नोड):

let http_node = FunctionNode::new("fetch_data", |ctx| async move {
    let client = reqwest::Client::new();
    let resp = client.get("https://api.example.com/data")
        .bearer_auth(&ctx.get("API_TOKEN").unwrap_or_default())
        .send().await
        .map_err(|e| GraphError::NodeExecutionFailed {
            node: "fetch_data".into(),
            message: e.to_string(),
        })?;
    let body: serde_json::Value = resp.json().await?;
    Ok(NodeOutput::new().with_update("apiData", body))
});

उदाहरण जनरेट किया गया कोड (कोड नोड):

let code_node = FunctionNode::new("process", |ctx| async move {
    let mut js_ctx = boa_engine::Context::default();
    // Graph state injected as global `input` object
    // User code executed in thread-isolated sandbox
    Ok(NodeOutput::new().with_update("result", output))
});

पिछला: ← Studio | अगला: Triggers →