نود Memory در N8N

نود Memory در N8N

نود Memory در n8n برای نگه‌داری و بازیابی «حافظه» در سناریوهای گفت‌وگومحور (مثل چت‌بات‌ها) و ورکفلوهای چندمرحله‌ای طراحی شده است؛ یعنی می‌توانید اطلاعاتی مثل تاریخچه پیام‌ها، ترجیحات کاربر، خلاصه مکالمه یا وضعیت یک فرایند را ذخیره کنید و در مراحل بعدی همان ورکفلو (یا حتی اجرای بعدی) دوباره به آن دسترسی داشته باشید.

معرفی نود در N8N

نود Memory یک لایه مدیریت حافظه برای ورکفلوهای مبتنی بر هوش مصنوعی و مکالمه است. این نود کمک می‌کند زمینه (Context) از بین نرود و هر بار لازم نباشد همه اطلاعات را از صفر تولید یا ارسال کنید.

  • کارکرد اصلی: ذخیره، بازیابی و مدیریت داده‌های حافظه (Conversation/Context/State)
  • دسته‌بندی نود: Function / (در بسیاری از سناریوها در کنار AI Nodes استفاده می‌شود)
  • اهمیت در ورکفلوها: افزایش کیفیت پاسخ‌های AI، کاهش هزینه توکن (با خلاصه‌سازی یا محدود کردن تاریخچه)، و پایدار کردن فرایندهای چندمرحله‌ای

موارد استفاده

1) چت‌بات پشتیبانی با حفظ تاریخچه

کاربر چند پیام می‌دهد و شما می‌خواهید مدل AI همیشه تاریخچه مرتبط را داشته باشد. Memory می‌تواند پیام‌ها را نگه دارد تا در هر پاسخ، زمینه گفتگو حفظ شود.

2) ذخیره ترجیحات کاربر (Profile Memory)

مثلاً کاربر می‌گوید «لطفاً پاسخ‌ها کوتاه باشند» یا «واحد پول تومان». این داده‌ها در حافظه ذخیره می‌شود و در پیام‌های بعدی هم اعمال می‌شود.

3) خلاصه‌سازی مکالمه برای کاهش هزینه

به جای نگه‌داشتن کل تاریخچه، هر چند پیام یک خلاصه از گفتگو ساخته می‌شود و فقط خلاصه + چند پیام اخیر ذخیره می‌گردد. این کار تعداد توکن‌های ورودی به مدل را کم می‌کند.

4) نگه‌داری وضعیت فرایندهای چندمرحله‌ای

در فرایندهایی مثل «ثبت سفارش» یا «رزرو»، کاربر مرحله به مرحله اطلاعات می‌دهد. Memory می‌تواند مرحله فعلی و داده‌های جمع‌آوری‌شده را نگه دارد تا هر پیام جدید ادامه همان فرایند باشد.

ترکیب با نودهای دیگر برای ورکفلوهای عملی

  • Webhook Trigger + Memory + AI (Chat/Agent): ساخت چت‌بات با زمینه پایدار
  • Telegram Trigger + Memory + Switch: مدیریت وضعیت کاربر و مسیرهای مختلف گفتگو
  • Memory + Data Store/Database: انتقال حافظه از حالت موقت به ذخیره‌سازی پایدار (برای گزارش‌گیری یا تحلیل)
  • Memory + Summarization (AI): خلاصه‌سازی دوره‌ای و پاکسازی تاریخچه

پارامترها و تنظیمات

در n8n، پیاده‌سازی Memory می‌تواند با چند «نوع حافظه» (Memory Type) و فیلدهای تنظیمی همراه باشد. نام دقیق برخی گزینه‌ها بسته به نسخه n8n و پکیج‌های AI ممکن است کمی متفاوت باشد، اما مفاهیم و تنظیمات کلیدی زیر در اغلب حالت‌ها وجود دارد.

فهرست پارامترهای رایج

  • Operation / Mode (حالت عملکرد)
    • نوع داده: Option (Select)
    • کاربرد: مشخص می‌کند حافظه چه کاری انجام دهد: ذخیره (Write/Save)، بازیابی (Read/Load)، پاکسازی (Clear/Reset) یا به‌روزرسانی (Update/Merge)
    • مثال عملی: در ابتدای پاسخ AI، حالت Read برای گرفتن تاریخچه؛ بعد از تولید پاسخ، حالت Write برای ذخیره پیام جدید
  • Memory Type (نوع حافظه)
    • نوع داده: Option (Select)
    • کاربرد: تعیین می‌کند حافظه چگونه مدیریت شود؛ مثلاً تاریخچه پیام‌ها (Chat/Conversation Buffer)، پنجره‌ای (Window)، یا خلاصه‌شونده (Summary)
    • مثال عملی: انتخاب Window Memory برای نگه داشتن فقط 10 پیام آخر
  • Session ID / Key (کلید نشست یا شناسه)
    • نوع داده: String
    • کاربرد: مهم‌ترین فیلد برای جداسازی حافظه کاربران/گفتگوها از هم. هر کاربر یا هر کانال باید Session ID خاص خودش را داشته باشد.
    • مثال عملی: برای تلگرام: {{ $json.message.chat.id }}، برای وب: {{ $json.body.userId }}
  • Namespace (فضای نام)
    • نوع داده: String
    • کاربرد: جداسازی حافظه‌ها در پروژه‌های مختلف یا برای چند بات/چند کاربرد در یک n8n
    • مثال عملی: support-bot یا sales-assistant
  • Max Messages / Window Size (اندازه پنجره)
    • نوع داده: Number
    • کاربرد: محدود می‌کند چند پیام اخیر نگه داشته شود تا حافظه بیش از حد بزرگ نشود.
    • مثال عملی: 10 یا 20 پیام آخر
  • Input Mapping (نگاشت پیام ورودی)
    • نوع داده: Object / Expression
    • کاربرد: تعیین می‌کند متن پیام کاربر از کدام فیلد JSON خوانده شود.
    • مثال عملی: {{ $json.body.message }} یا {{ $json.message.text }}
  • Output Mapping (ساختار خروجی حافظه)
    • نوع داده: Option / Object
    • کاربرد: تعیین می‌کند حافظه به چه فرمتی به نود بعدی تحویل داده شود (مثلاً آرایه پیام‌ها یا یک متن یکپارچه)
    • مثال عملی: خروجی به صورت messages[] برای ارسال مستقیم به نود AI Chat
  • TTL / Expiration (انقضا)
    • نوع داده: Number (Seconds/Minutes) یا Duration
    • کاربرد: تعیین می‌کند حافظه بعد از چه مدت پاک شود (برای حفظ حریم خصوصی و کنترل حجم داده).
    • مثال عملی: 86400 ثانیه (1 روز) برای چت‌های موقت
  • Clear Conditions (شرایط پاکسازی)
    • نوع داده: Boolean / Rules
    • کاربرد: اگر کاربر گفت «شروع مجدد» یا «ریست»، حافظه پاک شود.
    • مثال عملی: اگر {{ $json.body.message }} برابر /reset بود، Operation را روی Clear قرار دهید

نکات مهم هنگام پیکربندی

  • Session ID باید پایدار باشد: اگر هر بار تغییر کند (مثلاً بر اساس timestamp)، حافظه عملاً کار نمی‌کند.
  • حجم تاریخچه را کنترل کنید: نگه‌داری نامحدود پیام‌ها باعث کندی، هزینه توکن بالا و پاسخ‌های پراکنده می‌شود.
  • حریم خصوصی: از ذخیره اطلاعات حساس (رمز، کد ملی، کارت بانکی) در حافظه خودداری کنید یا TTL کوتاه بگذارید.
  • هم‌زمانی: اگر چند پیام هم‌زمان برای یک Session برسد، احتمال تداخل وجود دارد؛ بهتر است صف‌بندی یا قفل منطقی با نودهایی مثل Queue/Wait و کنترل تکرار انجام شود.

ورودی‌ها و خروجی‌ها

ورودی (Input)

ورودی نود Memory معمولاً آیتم‌های استاندارد n8n است که شامل داده‌های کاربر/پیام و کلید نشست (Session ID) می‌شود. بسته به حالت Operation، ورودی می‌تواند شامل پیام جدید برای ذخیره یا فقط کلید برای بازیابی باشد.

خروجی (Output)

خروجی معمولاً یکی از این حالت‌هاست:

  • Conversation Messages: آرایه‌ای از پیام‌ها (role/content) برای تزریق به مدل چت
  • Context Text: یک متن یکپارچه از خلاصه/تاریخچه
  • Metadata: اطلاعاتی مثل تعداد پیام‌ها، زمان آخرین بروزرسانی، Session ID

نمونه ساختار JSON (نمونه رایج برای چت)

نمونه‌ای از خروجی که برای نودهای چت کاربردی است:

{  "sessionId": "123456789",  "namespace": "support-bot",  "messages": [    { "role": "user", "content": "سلام، وضعیت سفارشم چی شد؟" },    { "role": "assistant", "content": "سلام! شماره سفارش را می‌فرمایید؟" },    { "role": "user", "content": "45821" }  ],  "stats": {    "messageCount": 3,    "lastUpdated": "2026-02-14T09:20:00.000Z"  }}

نکات پیشرفته و ترفندها

1) الگوی صحیح قرارگیری Memory در ورکفلو

  • قبل از AI: Memory (Read) برای گرفتن تاریخچه/خلاصه
  • بعد از AI: Memory (Write) برای ذخیره پیام کاربر + پاسخ دستیار

این الگو باعث می‌شود هر پاسخ جدید با زمینه قبلی تولید شود و سپس همان پاسخ در حافظه ثبت گردد.

2) ترکیب Window + Summary برای تعادل کیفیت و هزینه

یک روش عملی این است که:

  • پنجره پیام‌های اخیر را روی 10 نگه دارید
  • هر وقت تعداد پیام‌ها از 10 بیشتر شد، با یک نود AI خلاصه بسازید و به جای پیام‌های قدیمی، خلاصه را ذخیره کنید

نتیجه: مدل همیشه «خلاصه گفتگو» + «چند پیام آخر» را دارد.

3) حافظه چندلایه (Profile + Conversation)

به جای یک حافظه، دو حافظه جدا بسازید:

  • Profile Memory: ترجیحات ثابت کاربر (زبان، لحن، واحد پول، شهر)
  • Conversation Memory: تاریخچه همین گفتگو

در زمان ارسال به AI، هر دو را ادغام کنید: ابتدا پروفایل به عنوان دستورالعمل، سپس تاریخچه مکالمه.

4) پاکسازی هوشمند با فرمان کاربر

با یک نود Switch یا IF بررسی کنید اگر کاربر /reset یا «شروع مجدد» گفت:

  • Memory را Clear کنید
  • یک پیام استاندارد “حافظه پاک شد” ثبت کنید

5) جلوگیری از ذخیره داده‌های بی‌کیفیت

همه پیام‌ها ارزش ذخیره ندارند. با یک IF می‌توانید موارد زیر را ذخیره نکنید:

  • پیام‌های خیلی کوتاه مثل «اوکی»
  • پیام‌های تکراری
  • پیام‌های شامل داده حساس (با Regex یا لیست کلمات)

محدودیت‌ها و خطاها

محدودیت‌ها

  • افزایش حجم داده: اگر محدودیت پیام/TTL نگذارید، حافظه بزرگ می‌شود و کارایی کاهش می‌یابد.
  • وابستگی به Session ID: هر گونه اشتباه در تولید Session ID باعث می‌شود مکالمه‌ها قاطی شوند یا حافظه دائماً خالی باشد.
  • مناسب نبودن برای داده‌های حساس: حافظه مکالمه جای ذخیره امن اطلاعات محرمانه نیست مگر با سیاست‌های امنیتی و حذف دوره‌ای.
  • چالش هم‌زمانی: پیام‌های هم‌زمان برای یک نشست ممکن است ترتیب ذخیره را بر هم بزنند.

خطاهای رایج و راه‌حل‌ها

  • خطا: حافظه همیشه خالی است
    • علت‌های محتمل: Session ID هر بار عوض می‌شود، Namespace متفاوت است، یا Operation روی Read تنظیم شده ولی هیچ Write انجام نشده است.
    • راه‌حل: Session ID را از یک فیلد ثابت (مثل userId/chatId) بگیرید و مسیر Write را بعد از پاسخ AI اضافه کنید.
  • خطا: حافظه کاربران با هم قاطی می‌شود
    • علت‌های محتمل: همه کاربران از Session ID مشترک استفاده می‌کنند (مثلاً مقدار ثابت).
    • راه‌حل: Session ID را یکتا کنید (chat.id، شماره موبایل هش‌شده، userId دیتابیس).
  • خطا: پاسخ‌های AI طولانی و پرهزینه می‌شود
    • علت‌های محتمل: کل تاریخچه بدون محدودیت به مدل ارسال می‌شود.
    • راه‌حل: Window Size را کم کنید، Summary اضافه کنید، و فقط زمینه ضروری را ارسال کنید.
  • خطا: ترتیب پیام‌ها به‌هم می‌ریزد
    • علت‌های محتمل: چند اجرای هم‌زمان برای یک Session.
    • راه‌حل: قفل منطقی با Data Store (فلگ busy)، یا استفاده از صف/Wait، یا کنترل Rate Limit ورودی.

ایده ها

  • سیستم «یادآور هوشمند» که ترجیحات کاربر و آخرین درخواست‌ها را نگه می‌دارد و در پیام‌های بعدی ادامه می‌دهد.
  • چت‌بات فروش که محصولات دیده‌شده/علاقه‌مندی‌ها را ذخیره می‌کند و پیشنهادهای مرحله بعد را بر اساس آن می‌سازد.
  • دستیار تولید محتوا که دستورالعمل‌های ثابت برند (لحن، کلمات ممنوع، ساختار) را در Profile Memory نگه می‌دارد.
  • فرایند ثبت تیکت پشتیبانی مرحله‌ای که اطلاعات را از کاربر می‌گیرد (موضوع، اولویت، توضیحات) و در پایان یک تیکت کامل می‌سازد.
  • سیستم آموزش زبان که سطح کاربر، اشتباهات پرتکرار و لغات یادگرفته‌شده را ذخیره می‌کند و تمرین‌های بعدی را شخصی‌سازی می‌کند.

منابع و مستندات اصلی

دسته بندی: N8N برچسب ها:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پنج + 14 =