SSD Nodes Learn 8GB RAM — $66/साल
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-01

n8n AI agent कैसे बनाएँ: VPS पर पूरी गाइड

अपने VPS पर n8n AI agent बनाने का तरीका जानें। इसमें AI Agent नोड, Claude मॉडल, HTTP Request टूल, मेमोरी और लागत को नियंत्रित करने वाली सेटिंग्स का सटीक विवरण दिया गया है।

n8n AI agent क्या है और यह chain से कैसे अलग है

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

एक chain इसके विपरीत काम करती है। एक Basic LLM Chain में आप चरण तय करते हैं और मॉडल केवल टेक्स्ट भरता है। एक agent में मॉडल चरण तय करता है, इसलिए एक ही प्रश्न के लिए आज एक मॉडल कॉल लग सकता है और कल नौ। यही एकमात्र अंतर इस गाइड की हर सेटिंग को निर्धारित करता है।

यह माना गया है कि n8n पहले से ही आपके द्वारा नियंत्रित मशीन पर HTTPS के पीछे चल रहा है। यदि ऐसा नहीं है, तो Docker पर वास्तविक सर्टिफिकेट के साथ n8n को self-host करना से शुरुआत करें, क्योंकि जिस API key को आप स्टोर करने वाले हैं, उसे उस गाइड में बताए गए एन्क्रिप्शन-की बैकअप की आवश्यकता होती है। गैर-एजेंट पैटर्न, वेबहुक समराइज़र और शेड्यूल्ड क्लासिफ़ायर के लिए, Claude और n8n वर्कफ़्लो पैटर्न देखें।

यहाँ किसी भी फ़ील्ड नाम पर भरोसा करने से पहले अपना वर्ज़न चेक करें, क्योंकि n8n अक्सर AI नोड्स को बदलता रहता है।

docker compose exec n8n n8n --version

इस गाइड में दिए गए नाम जुलाई 2026 तक n8n के वर्तमान स्टेबल वर्ज़न से मेल खाते हैं। वर्ज़न 1.82.0 के बाद से हर AI Agent नोड Tools Agent के रूप में चलता है, इसलिए पुराना एजेंट-टाइप ड्रॉपडाउन अब मौजूद नहीं है।

Step 1: ट्रिगर चुनें

एक कन्वर्सेशनल एजेंट के लिए, Chat Trigger नोड जोड़ें। जब आप इसे बना रहे हों, तो Make Chat Publicly Available को बंद रखें, ताकि केवल एडिटर का चैट पैनल ही इस तक पहुँच सके। जब एजेंट तैयार हो जाए और आपने ऑथेंटिकेशन का निर्णय ले लिया हो, तब इसे चालू करें।

Chat Trigger एजेंट को chatInput नामक एक फील्ड देता है। स्टेप 3 में यह नाम महत्वपूर्ण है, और इसे गलत लिखना सबसे आम शुरुआती विफलता है।

बिना अटेंडेंट वाले एजेंट के लिए, इसके बजाय Schedule Trigger या Webhook नोड का उपयोग करें। इनमें से कोई भी chatInput उत्पन्न नहीं करता है, इसलिए आपको प्रॉम्प्ट खुद लिखना होगा।

चरण 2: मॉडल क्रेडेंशियल

कैनवस पर एक AI Agent नोड ड्रॉप करें। n8n तुरंत इसके नीचे एक खाली Chat Model कनेक्टर दिखाता है। वहां एक Anthropic Chat Model सब-नोड संलग्न करें।

platform.claude.com पर Anthropic Console में, Settings और फिर API Keys के अंतर्गत क्रेडेंशियल बनाएं। कुंजी केवल एक बार दिखाई जाती है। API का उपयोग प्रति टोकन बिल किया जाता है और यह किसी भी Claude.ai सब्सक्रिप्शन से अलग है, इसलिए पहली बार चलाने से पहले अकाउंट में बिलिंग सेट अप करना आवश्यक है।

मॉडल का चयन कंपनी के आधार पर नहीं, बल्कि एजेंट के आधार पर करें। एक ऐसा एजेंट जिसमें केवल एक टूल है जो जानकारी खोजता है और रिपोर्ट करता है, वह Haiku पर ठीक से चलता है, जिसकी कीमत जुलाई 2026 तक $1 प्रति मिलियन इनपुट टोकन और $5 प्रति मिलियन आउटपुट टोकन है। जब एजेंट के पास कई टूल हों और उसे उनके बीच योजना बनानी हो, तो Sonnet पर स्विच करें। आप जिस विफलता से बच रहे हैं, वह एक सस्ता मॉडल है जो गलत टूल को चार बार कॉल करता है, जिसकी लागत सही टूल को एक बार कॉल करने वाले महंगे मॉडल से अधिक होती है।

सब-नोड के विकल्पों में Maximum Number of Tokens सेट करें। यह मॉडल द्वारा उत्पन्न प्रत्येक प्रतिक्रिया की लंबाई को सीमित करता है। यदि इसे बड़े डिफ़ॉल्ट पर छोड़ दिया जाता है, तो एक भ्रमित रन बहुत लंबा उत्तर उत्पन्न कर सकता है और आपसे उसका शुल्क लिया जा सकता है।

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

Step 3: वह प्रॉम्प्ट जो एजेंट को प्राप्त होता है

AI Agent नोड खोलें। Prompt पैरामीटर में दो सेटिंग्स होती हैं।

  • Take from previous node automatically एक आने वाले फील्ड की अपेक्षा करता है जिसका नाम chatInput है। Chat Trigger के पीछे यह सही विकल्प है।
  • Define below एक Prompt (User Message) फील्ड को दिखाता है जहाँ आप स्थिर टेक्स्ट या एक्सप्रेशन लिख सकते हैं। Schedule Trigger या Webhook नोड के पीछे यह सही विकल्प है।

सामने एक Webhook नोड होने पर, POST बॉडी $json.body के अंतर्गत आती है, इसलिए प्रॉम्प्ट फील्ड इस तरह दिखता है।

Check the current status of {{ $json.body.service }} and tell me
whether it is up. If it is down, say for how long. No preamble.

Step 4: एजेंट को एक टूल दें

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

एजेंट के Tool कनेक्टर से एक HTTP Request नोड जोड़ें। इसे बिल्कुल वैसे ही कॉन्फ़िगर करें जैसे आप सामान्य HTTP Request नोड को करते हैं, फिर पहले शेल से उस एंडपॉइंट का परीक्षण करें।

curl -s -H 'Accept: application/json' \
  https://status.example.com/api/status/database | head -c 400

यदि वह curl कोई त्रुटि या HTML लॉगिन पेज लौटाता है, तो एजेंट भी विफल हो जाएगा, और यह विफलता मॉडल की समस्या जैसी दिखेगी जबकि वास्तव में यह एक URL या प्रमाणीकरण की समस्या होगी। इसे नोड में नहीं, बल्कि शेल में ठीक करें।

टूल का Description फ़ील्ड आपके सहयोगियों के लिए दस्तावेज़ीकरण नहीं है। यह एकमात्र ऐसी चीज़ है जिसे मॉडल यह तय करते समय पढ़ता है कि क्या यह टूल प्रासंगिक है। इसे इस बात के सीधे विवरण के रूप में लिखें कि क्या वापस आता है: "Returns the current up or down state and the downtime duration for one monitored service, as JSON."

मॉडल को अनुरोध का कुछ हिस्सा भरने देने के लिए, $fromAI() एक्सप्रेशन का उपयोग करें। यह केवल AI Agent नोड से जुड़े टूल में काम करता है, और यह Code टूल में काम नहीं करता है।

{{ $fromAI('service', 'The name of the service to look up', 'string') }}

तर्क key हैं, उसके बाद एक वैकल्पिक description, type और defaultValue है। की (key) 1 से 64 वर्णों की होनी चाहिए, जिसमें अक्षर, अंक, अंडरस्कोर और हाइफ़न का उपयोग हो। प्रकार string, number, boolean या json में से एक है, और डिफ़ॉल्ट रूप से string होता है। एक पूर्ण कॉल इस तरह दिखती है।

{{ $fromAI('limit', 'How many records to return', 'number', 20) }}

की (key) एक संकेत है, मौजूदा डेटा का संदर्भ नहीं। $fromAI('service') कहीं से भी service नामक फ़ील्ड को नहीं पढ़ता है। यह मॉडल को बताता है "एक मान उत्पन्न करें और इसे service कहें", और मॉडल एक मान खोजने के लिए बातचीत, इनपुट डेटा और अन्य टूल परिणामों को देखता है। चैट वर्कफ़्लो में यह बस उपयोगकर्ता से पूछ सकता है।

Step 5: मेमोरी, और एजेंट क्यों भूल जाता है

मेमोरी सब-नोड के बिना, हर मैसेज शून्य से शुरू होता है। हाल की बातचीत को सुरक्षित रखने के लिए एक Simple Memory सब-नोड जोड़ें।

इसके दो पैरामीटर हैं। Session Key यह तय करती है कि यह कौन सी बातचीत है, इसलिए अलग-अलग की (keys) वाले दो उपयोगकर्ताओं का इतिहास अलग-अलग रहता है। Context Window Length यह निर्धारित करता है कि पिछली कितनी बातचीत को प्रॉम्प्ट में दोबारा भेजा जाएगा।

Context Window Length गुणवत्ता के साथ-साथ लागत को नियंत्रित करने वाला एक विकल्प भी है, क्योंकि याद रखा गया हर टर्न बाद की हर कॉल में इनपुट टोकन के रूप में दोबारा भेजा जाता है। एक चैटी एजेंट पर 20 की विंडो का मतलब है कि आप शुरुआती मैसेज के लिए बीस बार भुगतान करते हैं।

जब n8n queue mode में चलता है, तो Simple Memory सक्रिय प्रोडक्शन वर्कफ़्लो में काम नहीं करती है, क्योंकि इतिहास साझा स्टोर के बजाय वर्कफ़्लो के अपने डेटा में रहता है। queue-mode इंस्टेंस पर, इसके बजाय Postgres Chat Memory सब-नोड का उपयोग करें और इसे उस डेटाबेस से कनेक्ट करें जिसे मुख्य प्रोसेस और वर्कर्स दोनों एक्सेस कर सकें।

Step 6: System Message

एजेंट के Options खोलें और एक System Message जोड़ें। यहाँ जॉब डिस्क्रिप्शन लिखा जाता है, और यह वर्कफ़्लो का सबसे प्रभावशाली टेक्स्ट है।

You are an infrastructure status assistant. Always call the status
tool before answering a question about whether something is running.
Never guess. If the tool returns an error, say so and stop.

"Always call the status tool before answering" यहाँ वास्तविक कार्य कर रहा है। इसके बिना, एक मॉडल जिसे लगता है कि उसे उत्तर पहले से पता है, वह टूल को छोड़ देगा और मेमोरी से उत्तर देगा। जैसे ही आपका इंफ्रास्ट्रक्चर बदलता है, यह उत्तर आत्मविश्वास के साथ गलत हो सकता है।

एजेंट लूप में क्यों चलता है और इसे क्या रोकता है

Options के अंतर्गत Max Iterations भी होता है, जिसका डिफ़ॉल्ट मान 10 है। एक इटरेशन का अर्थ है एक मॉडल कॉल और उसके साथ संदर्भ (context) में वापस भेजा गया एक टूल परिणाम। इसलिए, एक सिंगल एजेंट रन एक API कॉल नहीं है, बल्कि यह दस तक हो सकता है, और प्रत्येक कॉल इनपुट के रूप में पूरी बढ़ती हुई बातचीत को साथ ले जाता है।

इसे कम करें। अधिकांश सिंगल-टूल एजेंट दो इटरेशन में समाप्त हो जाते हैं, और 3 या 4 की सीमा एक रनअवे लूप को एक स्पष्ट विफलता में बदल देती है जिसे आप निष्पादन सूची (execution list) में देख सकते हैं।

डीबगिंग करते समय, Return Intermediate Steps को चालू करें। अंतिम आउटपुट में तब वे टूल कॉल शामिल होते हैं जो एजेंट ने रास्ते में किए थे, जिससे आप यह पता लगा सकते हैं कि "मॉडल ने कभी टूल को कॉल नहीं किया" और "टूल ने कुछ भी उपयोगी नहीं लौटाया" के बीच क्या अंतर है। लाइव होने से पहले इसे वापस बंद कर दें, क्योंकि वे चरण अंतिम उपयोगकर्ता के लिए अनावश्यक जानकारी (noise) होते हैं।

शेल से रन होते हुए देखें।

docker compose logs -f n8n

बिना निगरानी वाले एजेंट को चुपचाप खर्च करने से रोकना

Chat Trigger के पीछे मौजूद एजेंट में एक इंसान होता है, और यदि उत्तर गलत लगे तो वह इंसान उसे रोक देता है। Schedule Trigger के पीछे मौजूद एजेंट की निगरानी करने वाला कोई नहीं होता। पूरी प्रक्रिया AI agent cost control on an always-on VPS में दी गई है। यहाँ चार सेटिंग्स अधिकांश काम करती हैं।

  • मॉडल सब-नोड पर Maximum Number of Tokens की सीमा निर्धारित करें, ताकि कोई भी एक प्रतिक्रिया बहुत लंबी न हो।
  • Max Iterations को उस न्यूनतम संख्या पर सेट करें जो कार्य को पूरा करने के लिए पर्याप्त हो।
  • टूल की प्रतिक्रियाओं को छोटा रखें। यदि कोई टूल 4,000-लाइन का JSON ब्लॉप लौटाता है, तो वह पूरा डेटा अगली मॉडल कॉल में चला जाता है, और फिर उसी रन में उसके बाद की हर कॉल में भी शामिल रहता है।
  • यह पूछें कि क्या एजेंट को वास्तव में शेड्यूल की आवश्यकता है। हर पाँच मिनट में चलने वाला जॉब दिन में 288 बार ट्रिगर होता है। एक रन की जो भी लागत है, उसे इसी संख्या से गुणा किया जाता है।

जब आप बदलाव कर रहे हों, तो वर्कफ़्लो को निष्क्रिय (deactivate) कर दें। Schedule Trigger वाला एक सक्रिय वर्कफ़्लो n8n द्वारा सहेजे गए वर्शन पर चलता रहता है, जो हमेशा आपकी स्क्रीन पर मौजूद वर्शन नहीं होता है।

FAQ

मेरा AI Agent नोड निष्पादित (execute) होने से इनकार क्यों कर रहा है?

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

एजेंट उत्तर देता है, लेकिन वह मेरे टूल को कभी कॉल नहीं करता। क्या गलत है?

इसका कारण लगभग हमेशा टूल का Description फ़ील्ड होता है। मॉडल इन विवरणों को पढ़कर ही टूल का चयन करता है, इसलिए "HTTP Request" जैसा विवरण उसे यह नहीं बताता कि टूल का उपयोग कब करना है। इसे फिर से लिखें ताकि यह स्पष्ट हो सके कि कौन सा डेटा वापस आता है और यह किस स्थिति में उपयोगी है, फिर System Message में एक पंक्ति जोड़ें जो एजेंट को उत्तर देने से पहले उस टूल को कॉल करने का निर्देश दे।

एक ही प्रश्न की लागत हर बार अलग क्यों होती है?

क्योंकि मॉडल चरणों (steps) की संख्या खुद चुनता है। प्रत्येक पुनरावृत्ति (iteration) अब तक की पूरी बातचीत को फिर से भेजती है, जिसमें पिछले टूल का आउटपुट भी शामिल होता है, इसलिए चार पुनरावृत्तियों वाले रन की लागत एक सिंगल कॉल की तुलना में चार गुना से कहीं अधिक होती है। Max Iterations इसकी अधिकतम सीमा है, और Return Intermediate Steps आपको यह दिखाता है कि किसी दिए गए रन ने वास्तव में कितने चरणों का उपयोग किया।

मेरी मेमोरी एडिटर में काम करती है लेकिन प्रोडक्शन में नहीं। क्या बदला है?

जांचें कि क्या इंस्टेंस queue मोड में चल रहा है। Simple Memory इतिहास को वर्कफ़्लो के अपने निष्पादन डेटा में संग्रहीत करती है, जो एक अलग वर्कर प्रोसेस को सौंपे जाने पर सुरक्षित नहीं रहता है, इसलिए एक सक्रिय प्रोडक्शन वर्कफ़्लो इसे खो देता है। इसके स्थान पर Postgres Chat Memory सब-नोड का उपयोग करें, जो इतिहास को उस डेटाबेस में रखता है जिसे सभी वर्कर साझा करते हैं।