SSD Nodes Learn RAM 8GB — $66/tahun
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-01

Cara Bina Ejen AI n8n pada VPS Sendiri

Panduan membina ejen AI n8n dengan nod AI Agent, kelayakan model Claude, alat HTTP Request, memori, pencetus dan had kos.

Apakah ejen AI n8n itu dan perbezaannya daripada rantaian

Ejen AI n8n ialah satu nod AI Agent dengan subnod yang dilampirkan padanya: satu model sembang, satu atau lebih alat, dan memori pilihan. Anda menyatakan matlamat dalam bahasa biasa, kemudian model menentukan alat yang perlu dipanggil dan susunannya sehingga model boleh memberikan jawapan. Semua perkara di bawah ialah konfigurasi yang berkaitan dengan idea itu.

Rantaian berfungsi dengan cara yang berbeza. Dalam Basic LLM Chain, anda menentukan langkah dan model hanya mengisi teks. Dalam ejen, model menentukan langkah. Oleh itu, soalan yang sama mungkin memerlukan satu panggilan model hari ini dan sembilan panggilan pada hari esok. Perbezaan tunggal itu mempengaruhi setiap tetapan dalam panduan ini.

Panduan ini mengandaikan n8n sudah berjalan di belakang HTTPS pada mesin yang anda kawal. Jika belum, mulakan dengan mengehos sendiri n8n pada Docker dengan sijil sebenar, kerana kunci API yang akan anda simpan memerlukan sandaran kunci penyulitan yang diwajibkan oleh panduan tersebut. Untuk corak bukan ejen, seperti peringkas webhook dan pengelas berjadual, lihat corak aliran kerja Claude dan n8n.

Semak versi anda sebelum mempercayai sebarang nama medan di sini, kerana n8n kerap mengubah nod AI.

docker compose exec n8n n8n --version

Nama dalam panduan ini sepadan dengan versi stabil semasa n8n pada Julai 2026. Mulai versi 1.82.0, setiap nod AI Agent berjalan sebagai Tools Agent, jadi menu lungsur jenis ejen yang lama tidak lagi wujud.

Langkah 1: pilih pencetus

Untuk ejen perbualan, tambahkan nod Chat Trigger. Biarkan Make Chat Publicly Available dimatikan semasa anda membina ejen supaya hanya panel chat editor boleh mencapainya. Hidupkan pilihan ini apabila ejen telah siap dan anda telah menentukan kaedah pengesahan.

Chat Trigger memberikan ejen medan yang dipanggil chatInput. Nama itu penting dalam langkah 3. Kesilapan nama ialah punca kegagalan pertama yang paling biasa.

Untuk ejen tanpa pengawasan, gunakan nod Schedule Trigger atau Webhook. Kedua-duanya tidak menghasilkan chatInput. Oleh itu, anda perlu menulis gesaan itu sendiri.

Langkah 2: kelayakan model

Letakkan nod AI Agent pada kanvas. n8n akan memaparkan penyambung Chat Model yang kosong di bawahnya. Lampirkan subnod Anthropic Chat Model di situ.

Cipta kelayakan daripada Anthropic Console di platform.claude.com, di bawah Settings dan kemudian API Keys. Kunci itu dipaparkan sekali sahaja. Penggunaan API dicaj berdasarkan token dan berasingan daripada langganan Claude.ai. Oleh itu, akaun perlu mempunyai pengebilan yang disediakan sebelum pelaksanaan pertama.

Pilih model bagi setiap ejen, bukan bagi setiap syarikat. Ejen dengan satu alat yang mencari sesuatu dan melaporkannya boleh berjalan dengan baik pada Haiku, yang pada Julai 2026 disenaraikan pada harga $1 bagi setiap sejuta token input dan $5 bagi setiap sejuta token output. Setelah ejen mempunyai beberapa alat dan perlu merancang penggunaannya, beralih kepada Sonnet. Kegagalan yang perlu dielakkan ialah model murah yang memanggil alat yang salah sebanyak empat kali. Kosnya boleh melebihi model mahal yang memanggil alat yang betul sekali.

Tetapkan Maximum Number of Tokens dalam pilihan subnod tersebut. Tetapan ini mengehadkan panjang setiap respons yang dihasilkan oleh model. Jika dibiarkan pada nilai lalai yang besar, satu pelaksanaan yang keliru boleh menghasilkan jawapan yang sangat panjang dan menyebabkan caj dikenakan untuknya.

Satu perkara penting daripada dokumentasi n8n sering terlepas pandang: ungkapan dalam subnod sentiasa diselesaikan berdasarkan item input pertama, bukan berdasarkan setiap item. Letakkan ungkapan bagi setiap item dalam medan gesaan nod akar.

Langkah 3: gesaan yang diterima oleh ejen

Buka nod AI Agent. Parameter Prompt mempunyai dua tetapan.

  • Take from previous node automatically menjangka medan masuk bernama chatInput. Ini ialah pilihan yang betul di belakang Chat Trigger.
  • Define below memaparkan medan Prompt (User Message) untuk anda menulis teks statik atau ungkapan. Ini ialah pilihan yang betul di belakang Schedule Trigger atau nod Webhook.

Dengan nod Webhook di hadapan, isi POST berada di bawah $json.body, jadi medan gesaan kelihatan seperti ini.

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.

Langkah 4: berikan satu alat kepada ejen

Nod AI Agent tanpa subnod alat enggan dijalankan. Mulakan dengan satu alat kerana satu alat yang berfungsi memberikan lebih banyak maklumat berbanding empat alat yang hanya dikonfigurasikan separa.

Sambungkan nod HTTP Request kepada penyambung Tool ejen. Konfigurasikannya sama seperti nod HTTP Request biasa, kemudian uji titik akhir itu daripada shell terlebih dahulu.

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

Jika perintah curl itu mengembalikan ralat atau halaman log masuk HTML, ejen juga akan gagal. Mesej kegagalan itu mungkin kelihatan seperti masalah model, sedangkan puncanya ialah URL atau pengesahan. Betulkan masalah itu dalam shell, bukan dalam nod.

Medan Description alat bukan dokumentasi untuk rakan sekerja anda. Medan itu ialah satu-satunya maklumat yang dibaca oleh model apabila menentukan sama ada alat ini berkaitan. Tulis pernyataan ringkas tentang hasil yang dikembalikan: "Mengembalikan keadaan semasa, sama ada aktif atau tidak aktif, serta tempoh masa henti bagi satu perkhidmatan yang dipantau, dalam format JSON."

Untuk membolehkan model mengisi sebahagian daripada permintaan, gunakan ungkapan $fromAI(). Ungkapan ini hanya berfungsi dalam alat yang disambungkan kepada nod AI Agent dan tidak berfungsi dalam alat Code.

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

Argumennya ialah key, diikuti description, type dan defaultValue yang bersifat pilihan. Kunci mestilah mengandungi 1 hingga 64 aksara, dengan menggunakan huruf, digit, garis bawah dan tanda sempang. Jenisnya ialah salah satu daripada string, number, boolean atau json, dan nilai lalainya ialah string. Contoh panggilan yang lebih lengkap adalah seperti berikut.

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

Kunci itu ialah petunjuk, bukan rujukan kepada data sedia ada. $fromAI('service') tidak membaca medan bernama service dari mana-mana sumber. Ia memberitahu model, "hasilkan satu nilai dan namakannya service", kemudian model mencari nilai itu dalam perbualan, data input dan hasil alat lain. Dalam aliran kerja chat, model mungkin hanya meminta nilai itu daripada pengguna.

Langkah 5: memori dan sebab ejen terlupa

Tanpa subnod memori, setiap mesej bermula tanpa konteks. Lampirkan subnod Simple Memory untuk menyimpan perbualan terkini.

Subnod ini mempunyai dua parameter. Session Key menentukan perbualan yang sedang digunakan. Oleh itu, dua pengguna dengan kunci yang berbeza akan mendapat sejarah yang berasingan. Context Window Length menentukan bilangan interaksi terdahulu yang dimasukkan semula ke dalam gesaan.

Context Window Length ialah kawalan kos dan juga kawalan kualiti. Setiap giliran yang diingati dihantar semula sebagai token input pada setiap panggilan seterusnya. Tetingkap bernilai 20 pada ejen yang banyak bersembang bermakna anda membayar mesej awal yang sama sebanyak dua puluh kali.

Simple Memory tidak berfungsi dalam aliran kerja produksi yang aktif apabila n8n berjalan dalam mod giliran, kerana sejarah disimpan dalam data aliran kerja itu sendiri dan bukannya dalam stor dikongsi. Pada tika yang menggunakan mod giliran, gunakan subnod Postgres Chat Memory dan sambungkannya ke pangkalan data yang boleh dicapai oleh proses utama serta pekerja.

Langkah 6: mesej sistem

Buka Options ejen dan tambahkan System Message. Di sinilah perihal tugas diletakkan, dan teks ini memberikan pengaruh paling besar dalam aliran kerja.

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.

"Sentiasa panggil alat status sebelum menjawab" benar-benar penting. Tanpa arahan ini, model yang menganggapnya sudah mengetahui jawapan akan melangkau alat tersebut dan menjawab berdasarkan ingatan. Jawapan itu akan salah dengan yakin sebaik sahaja infrastruktur anda berubah.

Mengapakah ejen berulang, dan perkara yang menghentikannya

Dalam Options juga terdapat Max Iterations, yang lalai kepada 10. Satu lelaran ialah satu panggilan model dan satu hasil alat yang dihantar semula ke konteks. Jadi, satu pelaksanaan ejen bukan satu panggilan API, tetapi boleh mencapai sepuluh panggilan. Setiap panggilan membawa keseluruhan perbualan yang semakin panjang sebagai input.

Kurangkan nilai ini. Kebanyakan ejen alat tunggal selesai dalam dua lelaran. Had 3 atau 4 giliran biasanya menukar gelung tanpa henti menjadi kegagalan yang jelas dalam senarai pelaksanaan.

Semasa menyahpepijat, aktifkan Return Intermediate Steps. Output akhir akan menyertakan panggilan alat yang dibuat oleh ejen sepanjang proses. Dengan ini, anda boleh membezakan antara keadaan “model tidak pernah memanggil alat” dengan keadaan “alat tidak mengembalikan apa-apa yang berguna”. Nyahaktifkannya semula sebelum sistem digunakan dalam persekitaran sebenar kerana langkah tersebut hanya mengganggu pengguna akhir.

Pantau pelaksanaan dari shell.

docker compose logs -f n8n

Mengelakkan ejen tanpa pengawasan daripada berbelanja secara senyap

Ejen di belakang Chat Trigger mempunyai manusia yang memantaunya, dan manusia itu akan menghentikannya apabila jawapannya kelihatan salah. Ejen di belakang Schedule Trigger tidak dipantau oleh sesiapa. Huraian lengkap terdapat dalam kawalan kos ejen AI pada VPS yang sentiasa hidup. Empat tetapan ini melakukan sebahagian besar kerja.

  • Hadkan Maximum Number of Tokens pada subnod model supaya tiada satu respons pun berjalan terlalu panjang.
  • Tetapkan Max Iterations kepada bilangan paling kecil yang masih dapat menyelesaikan tugas.
  • Pastikan respons alat bersaiz kecil. Alat yang mengembalikan blob JSON 4,000 baris akan memasukkan kesemuanya ke dalam panggilan model seterusnya, dan kemudian ke dalam setiap panggilan selepas itu dalam larian yang sama.
  • Tanyakan sama ada ejen itu benar-benar memerlukan jadual. Tugas yang berjalan setiap lima minit akan dicetuskan 288 kali sehari. Gandakan kos satu larian dengan angka tersebut.

Nyahaktifkan aliran kerja semasa anda melakukan lelaran. Aliran kerja aktif dengan Schedule Trigger terus berjalan menggunakan versi yang telah disimpan oleh n8n, yang tidak semestinya sama dengan versi pada skrin anda.

FAQ

Mengapa nod AI Agent saya enggan dilaksanakan?

Nod AI Agent memerlukan subnod model sembang dan sekurang-kurangnya satu subnod alat. Nod yang mempunyai model tetapi tiada alat akan gagal sebelum membuat sebarang panggilan API. Lampirkan satu alat, walaupun alat yang ringkas, kemudian jalankannya semula.

Ejen memberikan jawapan, tetapi tidak pernah memanggil alat saya. Apakah masalahnya?

Hampir selalu, masalahnya terletak pada medan Description alat tersebut. Model memilih alat dengan membaca perihalan itu. Oleh itu, perihalan seperti "HTTP Request" tidak menerangkan bila alat itu sesuai digunakan. Tulis semula perihalan tersebut untuk menyatakan data yang dikembalikan dan situasi alat itu berguna. Kemudian, tambahkan satu baris pada System Message yang mengarahkan ejen memanggil alat itu sebelum memberikan jawapan.

Mengapa soalan yang sama memerlukan kos yang berbeza bagi setiap pelaksanaan?

Model menentukan bilangan langkah yang diperlukan. Setiap lelaran menghantar semula keseluruhan perbualan setakat itu, termasuk output alat terdahulu. Oleh itu, pelaksanaan yang mengambil empat lelaran boleh menelan kos jauh lebih tinggi daripada empat kali kos satu panggilan. Max Iterations menetapkan had maksimum tersebut. Return Intermediate Steps menunjukkan bilangan langkah yang sebenarnya digunakan oleh sesuatu pelaksanaan.

Memori saya berfungsi dalam editor tetapi tidak dalam pengeluaran. Apakah yang berubah?

Semak sama ada tika tersebut berjalan dalam mod baris gilir. Simple Memory menyimpan sejarah dalam data pelaksanaan aliran kerja itu sendiri. Data ini tidak kekal apabila diserahkan kepada proses pekerja yang berasingan. Oleh itu, aliran kerja pengeluaran yang aktif akan kehilangan sejarah tersebut. Gantikan dengan subnod Postgres Chat Memory, yang menyimpan sejarah dalam pangkalan data yang dikongsi oleh setiap pekerja.