Window Buffer & Postgres / Redis Chat Memory în n8n & Automatizări AI

Nodurile de memorie care îi oferă agentului AI capacitatea de a-și aminti mesajele anterioare dintr-o conversație, fie în RAM pentru teste, fie persistent în PostgreSQL sau Redis pentru producție.

Configurare nod & expresie
Session ID Key (Custom):
  • Telegram: {{ $json.message.chat.id }}
  • WhatsApp: {{ $json.contacts[0].wa_id }}
  • Context Window Length: 10 (ultimele 10 schimburi de mesaje)

Descriere & Utilizare

În mod implicit, apelurile către API-urile LLM sunt complet stateless (fără stare): modelul nu știe ce l-ai întrebat acum 10 secunde. Conectând un nod de Memory la portul Memory al unui AI Agent, n8n salvează și retrimite automat ultimele N mesaje la fiecare interacțiune.

Pentru testare rapidă în editor, Simple Memory (Window Buffer Memory) păstrează istoricul în memoria RAM a procesului n8n. Totuși, la repornirea containerului sau în arhitecturi cu mai multe workere, această memorie se pierde.

Pentru aplicații de producție (boți de Telegram, WhatsApp, chat pe site), folosește Postgres Chat Memory sau Redis Chat Memory: acestea salvează conversațiile într-un tabel dedicat (ex: n8n_chat_histories) pe baza unui Session ID unic per utilizator.

Cum să o reții ușor

💡 Window Buffer Memory este ca o notiță scrisă pe o tablă cu markerul (se șterge când închizi sala), pe când Postgres Chat Memory este un dosar arhivat pe numele fiecărui client.

Opțiuni și parametri tehnici

  • Session ID (Connected Chat Trigger / Define Below): cheia după care sunt grupate mesajele unui utilizator. Pe Telegram sau WhatsApp trebuie definită manual!
  • Context Window Length: câte schimburi de replici (User + AI) să fie trimise înapoi modelului (valoare uzuală: între 5 și 15).
  • Table Name (Postgres): numele tabelului creat automat de n8n în baza de date PostgreSQL (implicit n8n_chat_histories).
  • Session TTL (Redis): timpul în secunde după care conversația expiră automat din cache (ex: 86400 pentru 24 de ore).

Exemple practice și cazuri de utilizare

  • Izolarea conversațiilor pe Telegram: setează Session ID -> Define Below cu expresia telegram_{{ $("Telegram Trigger").item.json.message.chat.id }}.
  • Curățarea memoriei la comanda /reset: rulează un nod Postgres cu DELETE FROM n8n_chat_histories WHERE session_id = $1.
  • Expirare automată după 1 oră de inactivitate: folosește Redis Chat Memory cu TTL = 3600.

Sfaturi de configurare & capcane

Nu seta Context Window Length la valori uriașe (ex: 50 sau 100): fiecare mesaj nou va retrimite tot istoricul, crescând latența și factura de tokeni la fiecare replică.

Comenzi și ghiduri înrudite