n8n AI agent sa sariling VPS: paano gumawa
Gumawa ng AI agent sa n8n gamit ang AI Agent node, Claude credential, HTTP Request tool, memory, trigger, at settings para malimitahan ang gastos.
Ano ang n8n AI agent at paano ito naiiba sa chain
Ang n8n AI agent ay isang node na AI Agent na may mga sub-node na nakakonekta rito: isang chat model, isa o higit pang tool, at isang optional na memory. Magtakda ng goal sa payak na wika, at magpapasya ang model kung aling mga tool ang tatawagin at kung ano ang pagkakasunod-sunod ng mga ito hanggang makasagot ito. Ang lahat ng sumusunod ay configuration para sa iisang ideyang ito.
Kabaligtaran ang paraan ng paggana ng chain. Sa isang Basic LLM Chain, ikaw ang nagtatakda ng mga hakbang at ang model ang naglalagay lamang ng text. Sa isang agent, ang model ang nagtatakda ng mga hakbang. Dahil dito, maaaring isang model call lang ang magastos ng parehong tanong ngayon at siyam naman bukas. Ang pagkakaibang ito ang pinagmumulan ng bawat setting sa guide na ito.
Ipinapalagay dito na tumatakbo na ang n8n sa likod ng HTTPS sa isang machine na kontrolado mo. Kung hindi pa, magsimula sa self-hosting ng n8n sa Docker gamit ang wastong certificate, dahil kailangan ng API key na ise-save mo ang backup ng encryption key na ipinag-uutos ng guide na iyon. Para sa mga pattern na hindi gumagamit ng agent, tulad ng mga webhook summarizer at naka-schedule na classifier, tingnan ang mga pattern ng Claude at n8n workflow.
Suriin muna ang iyong version bago umasa sa anumang field name dito, dahil madalas baguhin ng n8n ang mga AI node.
docker compose exec n8n n8n --versionAng mga pangalan sa guide na ito ay tumutugma sa kasalukuyang stable version ng n8n noong July 2026. Simula sa version 1.82.0, lahat ng AI Agent node ay tumatakbo bilang Tools Agent, kaya wala na ang dating agent-type dropdown.
Hakbang 1: piliin ang trigger
Para sa conversational agent, magdagdag ng Chat Trigger node. Panatilihing naka-off ang Make Chat Publicly Available habang nagbu-build ka, para ang chat panel lang ng editor ang makagamit nito. I-on ito kapag tapos na ang agent at nakapagpasya ka na sa authentication.
Ipinapasa ng Chat Trigger sa agent ang isang field na tinatawag na chatInput. Mahalaga ang pangalang ito sa step 3, at ang maling pangalan nito ang pinakakaraniwang unang failure.
Para sa unattended agent, gumamit sa halip ng Schedule Trigger o Webhook node. Walang ibinibigay na chatInput ang alinman sa mga ito, kaya ikaw mismo ang magsusulat ng prompt.
Hakbang 2: credential ng modelo
Maglagay ng AI Agent node sa canvas. Agad na magpapakita ang n8n ng walang-lamang Chat Model connector sa ilalim nito. Mag-attach doon ng Anthropic Chat Model sub-node.
Gawin ang credential sa Anthropic Console sa platform.claude.com, sa ilalim ng Settings at pagkatapos ay API Keys. Isang beses lang ipinapakita ang key. Sinisingil ang API usage batay sa token at hiwalay ito sa anumang Claude.ai subscription, kaya kailangang naka-set up ang billing ng account bago ang unang run.
Piliin ang modelo para sa bawat agent, hindi para sa buong kumpanya. Maayos na gumagana sa Haiku ang isang agent na may isang tool para maghanap ng impormasyon at mag-ulat nito. Noong Hulyo 2026, nakalista ito sa $1 bawat milyong input token at $5 bawat milyong output token. Kapag marami nang tool ang agent at kailangan nitong magplano kung paano gagamitin ang mga ito, lumipat sa Sonnet. Ang iniiwasang problema ay isang murang modelo na apat na beses tumatawag sa maling tool. Maaari itong mas mahal kaysa sa mamahaling modelong isang beses tumatawag sa tamang tool.
Itakda ang Maximum Number of Tokens sa options ng sub-node. Nililimitahan nito ang haba ng bawat response na ginagawa ng modelo. Kung iiwan ito sa malaking default value, maaaring makagawa ang isang nalilitong run ng napakahabang sagot at masingil ka para rito.
May isang paalala sa n8n docs na madalas nakalilito: ang mga expression sa loob ng sub-node ay laging nire-resolve batay sa first input item, hindi sa bawat item. Ilagay ang mga expression na para sa bawat item sa prompt fields ng root node.
Hakbang 3: ang prompt na natatanggap ng agent
Buksan ang AI Agent node. May dalawang setting ang Prompt parameter.
- Awtomatikong kumukuha mula sa nakaraang node ang Take from previous node automatically at inaasahan nito ang incoming field na may pangalang
chatInput. Ito ang tamang piliin kapag nasa likod ito ng Chat Trigger. - Ipinapakita ng Define below ang field na Prompt (User Message) kung saan maaari kang magsulat ng static text o expression. Ito ang tamang piliin kapag nasa likod ito ng Schedule Trigger o Webhook node.
Kapag may Webhook node sa unahan, napupunta ang POST body sa ilalim ng $json.body, kaya ganito ang hitsura ng prompt field.
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.Hakbang 4: bigyan ang agent ng isang tool
Ang AI Agent node na walang tool sub-node ay tumatangging tumakbo. Magsimula sa isa, dahil mas marami kang matututunan sa isang gumaganang tool kaysa sa apat na bahagyang naka-configure.
Ikabit ang HTTP Request node sa Tool connector ng agent. I-configure ito gaya ng isang karaniwang HTTP Request node, pagkatapos ay subukan muna ang endpoint mula sa shell.
curl -s -H 'Accept: application/json' \
https://status.example.com/api/status/database | head -c 400Kung nagbabalik ng error o HTML login page ang curl na iyon, mabibigo rin ang agent. Magmumukhang problema ito sa model kahit ang tunay na problema ay nasa URL o authentication. Ayusin ito sa shell, hindi sa node.
Ang field na Description ng tool ay hindi dokumentasyon para sa mga kasamahan mo. Ito lamang ang binabasa ng model kapag nagpapasya kung nauugnay ang tool na ito. Isulat ito bilang malinaw na pahayag tungkol sa ibinabalik na resulta: "Ibinabalik ang kasalukuyang up o down state at tagal ng downtime ng isang mino-monitor na service, bilang JSON."
Para hayaan ang model na maglagay ng bahagi ng request, gamitin ang $fromAI() expression. Gumagana lamang ito sa mga tool na nakakonekta sa AI Agent node, at hindi ito gumagana sa Code tool.
{{ $fromAI('service', 'The name of the service to look up', 'string') }}Ang mga argument ay key, kasunod ang opsyonal na description, type at defaultValue. Dapat may 1 hanggang 64 na character ang key, gamit ang mga letra, digit, underscore at hyphen. Ang type ay isa sa string, number, boolean o json, at ang default nito ay string. Ganito ang mas kumpletong call.
{{ $fromAI('limit', 'How many records to return', 'number', 20) }}Pahiwatig lamang ang key. Hindi ito reference sa kasalukuyang data. Hindi binabasa ng $fromAI('service') ang field na tinatawag na service mula sa kahit saan. Sinasabi nito sa model na "gumawa ng value at tawagin itong service". Pagkatapos, naghahanap ang model ng value sa conversation, input data at iba pang resulta ng tool. Sa isang chat workflow, maaari nitong direktang tanungin ang user.
Hakbang 5: memory at kung bakit nakakalimot ang agent
Kung walang memory sub-node, nagsisimula sa wala ang bawat message. Mag-attach ng Simple Memory sub-node para panatilihin ang kamakailang pag-uusap.
Mayroon itong dalawang parameter. Tinutukoy ng Session Key kung aling conversation ito, kaya magkakaroon ng magkahiwalay na history ang dalawang user na magkaiba ang key. Tinutukoy ng Context Window Length kung ilang nakaraang interaction ang muling isasama sa prompt.
Ang Context Window Length ay nakaaapekto sa gastos pati sa kalidad, dahil ipinapadala muli bilang input tokens ang bawat naaalalang turn sa bawat kasunod na call. Sa chatty na agent, ang window na 20 ay nangangahulugang sisingilin ka sa parehong mga unang message nang dalawampung beses.
Hindi gumagana ang Simple Memory sa active production workflow kapag tumatakbo ang n8n sa queue mode, dahil nasa sariling data ng workflow ang history at hindi ito nasa shared store. Sa queue-mode instance, gamitin ang Postgres Chat Memory sub-node at ituro ito sa database na parehong maaabot ng main process at ng workers.
Hakbang 6: ang System Message
Buksan ang Options ng agent at magdagdag ng System Message. Dito inilalagay ang job description, at ito ang text na may pinakamalaking epekto sa workflow.
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.May mahalagang papel ang “Always call the status tool before answering.” Kung wala ito, lalaktawan ng model na nag-aakalang alam na nito ang sagot ang tool at sasagot batay sa memorya nito. Magiging mali ito nang may kumpiyansa kapag nagbago ang iyong infrastructure.
Bakit umiikot ang agent, at ano ang pumipigil dito
Makikita rin sa Options ang Max Iterations, na ang default ay 10. Ang isang iteration ay isang model call kasama ang isang tool result na ibinabalik sa context. Kaya ang isang agent run ay hindi isang API call lamang. Umaabot ito sa sampu, at dala ng bawat isa ang buong lumalaking conversation bilang input.
Bawasan ito. Karamihan sa mga single-tool agent ay natatapos sa dalawang iteration. Ang limit na 3 o 4 na turn ay ginagawang malinaw na failure ang runaway loop, na makikita mo sa execution list.
Habang nagde-debug ka, i-on ang Return Intermediate Steps. Isasama sa final output ang mga tool call na ginawa ng agent habang tumatakbo. Sa ganitong paraan, matutukoy mo kung hindi kailanman tinawag ng model ang tool o kung walang kapaki-pakinabang na ibinalik ang tool. I-off itong muli bago maging live ang system, dahil ingay lamang ang mga step na ito para sa end user.
Obserbahan ang isang run mula sa shell.
docker compose logs -f n8nPagpigil sa isang unattended agent na tahimik na gumastos
Ang agent sa likod ng Chat Trigger ay may taong sumusubaybay, at ihihinto ng taong iyon ang agent kapag mukhang mali ang sagot. Walang sumusubaybay sa agent sa likod ng Schedule Trigger. Nasa Kontrol sa gastos ng AI agent sa isang palaging naka-on na VPS ang buong paliwanag. Apat na setting ang gumagawa ng karamihan sa kontrol dito.
- Itakda ang limit para sa Maximum Number of Tokens sa model sub-node, para walang iisang response na tumakbo nang sobra ang haba.
- Itakda ang Max Iterations sa pinakamaliit na bilang na nakakatapos pa rin ng task.
- Panatilihing maliit ang tool responses. Kapag nagbalik ang isang tool ng JSON blob na may 4,000 linya, mapupunta ang lahat ng iyon sa susunod na model call, at sa bawat kasunod na call sa parehong run.
- Suriin kung kailangan talaga ng agent ang schedule. Ang job na tumatakbo bawat limang minuto ay nagti-trigger nang 288 beses bawat araw. Anuman ang gastos ng isang run, iyon ang bilang na imu-multiply.
I-deactivate ang workflow habang nag-iiterate ka. Ang active workflow na may Schedule Trigger ay patuloy na tumatakbo gamit ang bersyong na-save ng n8n, na hindi palaging kapareho ng bersyong nasa screen mo.
FAQ
Bakit tumatangging mag-execute ang aking AI Agent node?
Nangangailangan ang AI Agent node ng chat model sub-node at hindi bababa sa isang tool sub-node. Mabibigo ang node na may model pero walang tool bago pa ito gumawa ng anumang API call. Mag-attach ng isang tool, kahit simple lamang, at patakbuhin itong muli.
Sumasagot ang agent, pero hindi nito kailanman tinatawag ang aking tool. Ano ang mali?
Halos palagi, ang problema ay nasa field na Description ng tool. Pinipili ng model ang mga tool sa pamamagitan ng pagbasa sa mga description na iyon, kaya walang sinasabi rito ang description na tulad ng "HTTP Request" tungkol sa kung kailan naaangkop ang tool. Isulat itong muli upang sabihin kung anong data ang ibinabalik nito at sa anong sitwasyon ito kapaki-pakinabang. Pagkatapos, magdagdag ng linya sa System Message na nag-uutos sa agent na tawagin muna ang tool na iyon bago sumagot.
Bakit magkaiba ang gastos sa parehong tanong sa bawat run?
Dahil ang model ang pumipili ng bilang ng mga step. Sa bawat iteration, muling ipinapadala ang buong conversation hanggang sa puntong iyon, kasama ang dating tool output. Kaya ang run na umabot sa apat na iteration ay mas magastos kaysa sa apat na beses ng isang call. Ang Max Iterations ang nagtatakda ng pinakamataas na bilang nito. Ipinapakita naman ng Return Intermediate Steps kung ilang step ang aktuwal na ginamit ng isang run.
Gumagana ang aking memory sa editor pero hindi sa production. Ano ang nagbago?
Tingnan kung tumatakbo ang instance sa queue mode. Iniimbak ng Simple Memory ang history sa execution data ng workflow mismo. Hindi ito nananatili kapag ipinasa ang workflow sa hiwalay na worker process, kaya nawawala ito sa aktibong production workflow. Gamitin ang Postgres Chat Memory sub-node. Pinananatili nito ang history sa database na ginagamit ng bawat worker.