एक्शन नोड्स
निश्चित वर्कफ़्लो संचालन के लिए गैर-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) |
| ईमेल | 📧 | Rose | SMTP के माध्यम से ईमेल भेजें या IMAP के माध्यम से निगरानी करें |
| सूचना | 🔔 | नारंगी | Slack, Discord, Teams, या webhooks पर भेजें |
| RSS | 📡 | Lime | नई प्रविष्टियों के लिए RSS/Atom feeds की निगरानी करें |
| फ़ाइल | 📁 | Sky | स्थानीय या क्लाउड स्टोरेज (S3, GCS, Azure) पर फ़ाइल संचालन |
मानक गुणधर्म
प्रत्येक एक्शन नोड इन साझा गुणधर्मों को विरासत में प्राप्त करता है:
पहचान
| गुण | प्रकार | विवरण |
|---|---|---|
id | string | अद्वितीय पहचानकर्ता |
name | string | प्रदर्शित नाम |
description | string? | वैकल्पिक टूलटिप विवरण |
त्रुटि प्रबंधन
| मोड | व्यवहार |
|---|---|
stop | त्रुटि पर वर्कफ़्लो रोकें (डिफ़ॉल्ट) |
continue | त्रुटि लॉग करें और अगले नोड पर आगे बढ़ें |
retry | विन्यास योग्य गणना (1-10) और विलंब (मिलीसेकंड) के साथ पुनः प्रयास करें |
fallback | त्रुटि होने पर फ़ॉलबैक मान का उपयोग करें |
अनुरेखण
| गुण | प्रकार | विवरण |
|---|---|---|
enabled | boolean | विस्तृत निष्पादन ट्रेस सक्षम करें |
logLevel | none | error | info | debug | लॉग वर्बोसिटी |
निष्पादन नियंत्रण
| गुण | प्रकार | विवरण |
|---|---|---|
timeout | number | टाइमआउट ms में (default: 30000) |
condition | string? | यदि अभिव्यक्ति गलत सिद्ध होती है तो नोड छोड़ दें |
इनपुट/आउटपुट मैपिंग
| गुण | प्रकार | विवरण |
|---|---|---|
inputMapping | Record<string, string>? | स्टेट फ़ील्ड्स को नोड इनपुट्स से मैप करें |
outputKey | string | Key जहाँ परिणाम workflow state में संग्रहित किया जाता है |
नोड संदर्भ
ट्रिगर नोड 🎯
वर्कफ़्लो का प्रवेश बिंदु। प्रत्येक वर्कफ़्लो एक ट्रिगर नोड से शुरू होता है। पूर्ण विवरण के लिए समर्पित ट्रिगर्स गाइड देखें।
| ट्रिगर प्रकार | विवरण |
|---|---|
| मैन्युअल | चैट इनपुट के माध्यम से उपयोगकर्ता द्वारा शुरू किया गया |
| Webhook | HTTP endpoint (POST/GET) वैकल्पिक auth के साथ |
| शेड्यूल | टाइमज़ोन समर्थन के साथ क्रॉन-आधारित समय निर्धारण |
| इवेंट | JSONPath फ़िल्टरिंग के साथ बाहरी सिस्टम इवेंट्स |
HTTP नोड 🌐
यह पूर्ण प्रमाणीकरण, शीर्षलेख, मुख्य भाग और प्रतिक्रिया प्रबंधन के साथ बाहरी APIs को HTTP अनुरोध करता है।
कॉन्फ़िगरेशन:
| गुण | प्रकार | विवरण |
|---|---|---|
method | GET, POST, PUT, PATCH, DELETE | HTTP विधि |
url | string | URL के साथ {{variable}} interpolation |
auth | object | Authentication (none, bearer, basic, api_key) |
headers | Record<string, string> | अनुरोध शीर्षलेख |
body | object | Body (none, json, form, raw) |
response | object | प्रतिक्रिया प्रबंधन (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 | सेट करें, विलय करें, हटाएँ | चर संचालन |
variables | Variable[] | सेट करने के लिए चरों की सूची |
envVars | object? | .env फ़ाइल से वैकल्पिक प्रीफ़िक्स फ़िल्टर के साथ लोड करें |
चर के प्रकार: string, number, boolean, json, expression
isSecret: true से चिह्नित चर लॉग और UI में छिपाए जाते हैं।
ट्रांसफॉर्म नोड ⚙️
अभिव्यक्तियों या अंतर्निहित ऑपरेशनों का उपयोग करके डेटा को रूपांतरित करता है।
ट्रांसफॉर्म के प्रकार:
| प्रकार | विवरण |
|---|---|
jsonpath | JSONPath अभिव्यक्ति |
jmespath | JMESPath अभिव्यक्ति |
template | इंटरपोलेशन के साथ स्ट्रिंग टेम्पलेट |
javascript | JavaScript अभिव्यक्ति |
अंतर्निहित संचालन: pick, omit, rename, flatten, sort, unique
प्रकार रूपांतरण लक्ष्य: string, number, boolean, array, object
स्विच नोड 🔀
कई आउटपुट पोर्ट के साथ सशर्त ब्रांचिंग। प्रत्येक शर्त नोड पर एक अलग आउटपुट पोर्ट से मैप होती है।

कॉन्फ़िगरेशन:
| गुण | प्रकार | विवरण |
|---|---|---|
evaluationMode | first_match | all_match | पहले मिलान पर रुकें या सभी का मूल्यांकन करें |
conditions | SwitchCondition[] | आउटपुट पोर्ट के साथ शर्तों की सूची |
defaultBranch | string? | 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 | जब तक शर्त सत्य है, तब तक लूप करें |
times | N बार दोहराएँ |
समानांतर निष्पादन: समवर्ती पुनरावृति के लिए वैकल्पिक batchSize और delayBetween के साथ parallel.enabled सक्षम करें।
परिणाम एकत्रीकरण: जब results.collect सही है, तो पुनरावृति के परिणाम results.aggregationKey के तहत एक सरणी में एकत्र किए जाते हैं।
मर्ज नोड 🔗
कई समानांतर शाखाओं को वापस एक एकल प्रवाह में जोड़ता है। इसमें कई इनपुट पोर्ट होते हैं।
मर्ज मोड:
| मोड | व्यवहार |
|---|---|
wait_all | सभी आने वाली शाखाओं की प्रतीक्षा करें |
wait_any | पहली शाखा पूरी होने पर जारी रखें |
wait_n | N शाखाएँ पूरी होने के बाद जारी रखें |
रणनीतियों को मिलाएं: array, object, first, last
वैकल्पिक टाइमआउट के साथ continue या error व्यवहार।
प्रतीक्षा नोड ⏱️
वर्कफ़्लो निष्पादन को रोकता है।
प्रतीक्षा प्रकार:
| प्रकार | विवरण |
|---|---|
fixed | एक निश्चित अवधि (ms, s, m, h) के लिए प्रतीक्षा करें |
until | एक विशिष्ट टाइमस्टैम्प तक प्रतीक्षा करें |
webhook | आने वाले वेबहुक का इंतज़ार करें |
condition | एक स्थिति को अंतराल पर जांचें |
कोड नोड 💻
एक सैंडबॉक्स किए गए boa_engine रनटाइम में कस्टम JavaScript निष्पादित करता है। ग्राफ की स्थिति को वैश्विक input ऑब्जेक्ट के रूप में इंजेक्ट किया जाता है।
कॉन्फ़िगरेशन:
| गुण | प्रकार | विवरण |
|---|---|---|
language | javascript, typescript | कोड भाषा |
code | स्ट्रिंग | निष्पादित करने के लिए कोड |
sandbox | ऑब्जेक्ट | सुरक्षा सीमाएँ (नेटवर्क, फ़ाइलसिस्टम, मेमोरी, समय) |
सैंडबॉक्स पूर्वनिर्धारित मान:
| सीमा | डिफ़ॉल्ट |
|---|---|
| नेटवर्क पहुँच | गलत |
| फ़ाइल सिस्टम पहुँच | गलत |
| मेमोरी सीमा | 128 MB |
| समय सीमा | 5000 ms |
डेटाबेस नोड 🗄️
कनेक्शन पूलिंग और पैरामीटराइज़्ड क्वेरीज़ के साथ डेटाबेस संचालन करता है।
समर्थित डेटाबेस:
| डेटाबेस | ड्राइवर | विशेषताएँ |
|---|---|---|
| PostgreSQL | sqlx (postgres) | एसिंक्रोनस पूल, पैरामीटराइज़्ड क्वेरीज़, पंक्ति-से-JSON |
| MySQL | sqlx (mysql) | Async पूल, पैरामीटराइज़्ड क्वेरीज़, पंक्ति-से-JSON |
| SQLite | sqlx (sqlite) | एसिंक्रोनस पूल, पैरामीटराइज़्ड क्वेरीज़, पंक्ति-से-JSON |
| MongoDB | mongodb | मूल BSON, find/insert/update/delete |
| Redis | redis | GET, 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 में जोड़ी जाती हैं।
| नोड | क्रेट | यह क्या उत्पन्न करता है |
|---|---|---|
| HTTP | reqwest | Async HTTP अनुरोध प्रमाणीकरण, हेडर, बॉडी, JSONPath निष्कर्षण के साथ |
| डेटाबेस | sqlx / mongodb / redis | कनेक्शन पूल, पैरामीटराइज़्ड क्वेरीज़, रेडिस कमांड |
lettre / imap | SMTP TLS के साथ भेजें; खोज फ़िल्टर के साथ IMAP निगरानी | |
| Code | boa_engine | एम्बेडेड JavaScript निष्पादन graph स्थिति के साथ input object के रूप में |
| सेट | नेटिव | वेरिएबल असाइनमेंट (लिटरल, एक्सप्रेशन, सीक्रेट) |
| रूपांतरण | native | Map, 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 →