מעבדת n8n – בקרת Human-in-the-Loop

תוכן עניינים

בתרגול הקודם בנינו תהליך אוטומטי שלם: מטופס לקוח, דרך ניסוח מייל מותאם אישית על ידי AI, ועד לשליחתו ללקוח. עם זאת, בעולם האמיתי, אנו לא תמיד סומכים על AI שישלח תקשורת ללקוח ללא אישור אנושי.

 

כאן נכנס לתמונה תהליך Human in the Loop (HITL). בתרגול זה, נשדרג את ה-Workflow שלנו כך שגירסת הטיוטה של המייל תישלח קודם כל אלינו (או למנהל) לאישור. ה-Workflow ימתין לתגובה שלנו, ורק לאחר שנלחץ על "אשר" – המייל יישלח ללקוח.

 

אנו נשתמש בבלוק Gmail – Send and Wait for Response כדי לעצור את ה-Workflow, נשלח לעצמנו מייל עם קישורי אישור/דחייה מיוחדים, ונשתמש בבלוק IF כדי לפצל את הלוגיקה בהתאם להחלטה האנושית.

 
שימו לב – תרגול זה מובנה מאוד והוא מהווה בסיס למחקר וללימוד דרך ״לכלכלוך הידיים״ בהמשך הדרך. חשוב להכיר את החלקים השונים בתרגול ובמערכת. עם זאת – בכל פרק וסעיף, הרגישו חופשי לחקור יותר לעומק ולסקור גם מושגים שונים ואפשרויות שונות שלא הוזכרו במפורש. נתקעתם? לא נורא – חזרו להוראות המקוריות, ותמיד אפשר להתחיל פרויקט חדש ונקי, ולהתנסות מראש הפרק הנוכחי.
 
בהצלחה!


פרק 1: בסיס – ה-Workflow הקודם

אנו מתחילים מהנקודה בה עצרנו בתרגול הקודם. יש לנו Workflow שמתחיל ב-n8n Forms ומחובר ל-AI Agent.

  1. ודאו שה-AI Agent מוכן:
     

    • פתחו את ה Workflow שיצרנו בתרגול הקודם. נמשיך מהמצב הזה ונתייחס רק לענף שעוסק בשליחת המייל ללקוח.
    • קיצור דרך: נתקעתם? תוכלו להביא לתוך n8n את ה Workflow, במצב שעצרנו בסוף התרגול הקודם. לצורך כך, צרו Workflow חדש, בפס התפריט העליון הקליקו על כפתור השלוש נקודות, ובחרו Import from URL…, בשדה שנפתח (Workflow URL) הכניסו את הכתובת הבאה:
       

      
      https://almaya.ai/wp-content/uploads/2025/10/n8n-On-boarding-process-Form-Triggered-Workflow.json
                      

       
      חברו את כל ה Credentials לבלוקים הרלוונטיים והמשיכו את התרגיל הזה לפי ההוראות.

    • בחנו את בלוק ה Ai Agent (בענף של שליחת המייל). כדי שה-Workflow יפעל, חיוני שבלוק הסוכן יחזיר אובייקט JSON מובנה.
    • ודאו שהפרומפט שלכם (כמו בתרגול הקודם) כולל הנחיות ברורות ל-Output Parser ומייצר שלושה שדות: Subject, Body, ו-Email (כתובת הלקוח).

    • זהו הפרומפט שהשתמשנו בו:

      
      Create a warm welcome email for a new client based on their information. We want the email to be concise and friendly, but also professional. It should be personalized to them based on their industry and what they are hoping to get out of our partnership. Here is information about the client:
      
      Name: {{ $json.Name }}
      Email: {{ $json.Email }}
      Company Industry: {{ $json['Company Industry'] }}
      Hoping to achieve: {{ $json['What are you hoping to achieve through our partnership in the next three months?'] }}
      More things the client would like to share: {{ $json['Anything else we should know?'] }}
      
      ---
      Make sure to always sign off the email from "John Doe" the company is "Almaya - Learning Ai" and his position is "VP of Internal Relations". Don't throw in variables for the sign off if information is unknown, we don't ever want [Your Name], or [Your Contact Information], etc.
      
      Output this information into 3 separate fields:
      
      Subject: The email's subject
      Body: The email's body
      Email: {{ $json.Email }}
      
    • חשוב: נתקו ומחקו את בלוק ה-Gmail (ששולח ללקוח) שהוספנו בתרגול הקודם. אנו נבנה את הלוגיקה הזו מחדש לאחר האישור.

פרק 2: הכנסת בקרה אנושית – "Human in the Loop"

כעת ניצור את נקודת העצירה. אנו רוצים שה-Workflow ירוץ, ייצר את הטיוטה, ואז יחכה להנחיות. הדרך הטובה ביותר לעשות זאת היא עם בלוק Wait.

 

  1. הוספת והגדרת בלוק Wait:
     

    • ביציאה של בלוק ה AI Agent, לחצו על [+] לבחירת בלוק חדש. מתוך הגלריה – גשו למחלקת Human in the Loop ובחרו בבלוק Gmail.
    • כאשר בחרתם בבלוק Gmail דווקא מתוך מחלקת Human in the Loop, הבלוק הופיע מכוון כבר על הפעולה Send Message and Wait for Response.
    • שנו את שם הבלוק (בראש חלון ההגדרות שלו) ל-Gmail – Wait.
    • פעולה זו הופכת את הבלוק למאזין. הוא ישלח מייל לכתובת של ה״מבקר האנושי״ (במקרה הזה – הכתובת הפרטית שלנו), עם כפתור לפתיחת טופס אישור – שם יופיע נוסח המייל כפי שמוכן להשלח ללקוח, ואנחנו נתבקש לאשר את הנוסח, או לחילופין – לתת הערות לתיקון. בזמן הזה – ה Workflow עוצר את סדר הביצוע וממתין לתגובה שלנו.
    • בחלון הגדרות בלוק ה Gmail – Send Message and Wait for Response, קבעו את השדות באופן הבא:
       

      • To – כתובת המייל הפרטית שלכם
      • Subject – הגדירו [PENDING APPROVAL] Message to Customer
      • Message – משכו את נתון ה body מתוך הבלוק הקודם (Ai Agent). ניתן להוסיף גם פתיח קצר מותאם כמו:
         

        
        Please approve (or decline) the following message to a customer:
        
        {{ $json.output.body }}
        
      • Response Type – הגדירו Approval
      • תחת Approval Options, לחצו על Add option והגדירו:
         

        • Type of Approval – הגדירו Approve and Disapprove
        • Approve Button Label – הגדירו Send Now
        • Approve Button Style – הגדירו Primary
        • Disapprove Button Label – הגדירו Hold It
        • Disapprove Button Style – הגדירו Secondary
      •  

  2. בדיקה נקודתית:
     

    • ודאו כי בלוק ה Gmail – Wait הוא האחרון בשרשרת, והריצו את התהליך מחדש. מלאו פרטים והמתינו למייל אישור שיישלח לכם.
    • כאשר סדר הביצוע יגיע לבלוק ה Gmail – Wait, ה Execution יעצור, ואייקון קטן של שעון יופיע על הבלוק. התהליםך ממתין לאישור שלכם במייל.
    • גשו לתיבת המייל שלכם, והמתינו להודעה שתתקבל. במצב תקין – תראו הודעה עם הטקסט לאישור, ובתחתית – שני לחצנים, לאישור או דחייה:
       
    • לחצו במייל על כפתור האישור וחזרו ל-n8n. שימו לב שהתהליך נעצר, וגשו לבדוק את הפלט של בלוק ה Gmail – Wait.
    • הריצו את התהליך שוב- והפעם דחו את המייל. חזרו ל-n8n ושימו לב לפלט של בלוק האישור.
       
      אנו נשתמש בפרמטר התשובה כדי להחליט על הצעדים הבאים בתהליך.

פרק 3: פיצול הלוגיקה – בלוק IF

ה-Workflow שלנו נעצר בבלוק ה-Gmail – Wait. כעת, עלינו לבנות את מה שקורה *אחרי* הלחיצה.

 

  1. הוספת בלוק IF:
     

    • הוסיפו בלוק IF וחברו אותו אחרי בלוק ה-Gmail – Wait.
    • אנו צריכים לבדוק איזה ערך הגיע בפרמטר approved מהבלוק הקודם. בחלון הגדרות ה IF, משכו את הנתון approved לשדה התנאי.
    • הגדירו את סוג ההשוואה ל Boolean -> is true.
       
    • בדיקת ניתוב: בעוד בלוק ה IF מחובר לפלט של Gmail – Wait, לחצו על Execute Step ושימו לב דרך איזו מהיציאות הזרימה ממשיכה. בדקו גם מצב של אישור וגם מצב של דחייה.
       
      במצב תקין – כאשר תאשרו את נוסח ההודעה במייל, הפלט יזרום לענף ה-true של הבלוק, וכאשר תדחו אותו, הפלט יזרום לענף ה-false.

פרק 4: טיפול במצבים השונים (Gmail 2)

כעת נרצה להמשיך את התהליך בהתאם לאישור / דחיה שלכם: אם אישרתם את נוסח המייל – הוא יישלח ללקוח. או דחיתם אותו – המערכת תיצור לכם טיוטה (Draft) של נוסח המייל, ללא שליחה, לתיקונים ושליחה ידנית.

 

  1. ענף האישור – שליחת נוסח המייל המאושר:
     

    • חברו בלוק Gmail ליציאת ה true של בלוק ה IF, בחרו בפעולת Send Message ושבצו את הנתונים המתאימים מהחלקים המוקדמים יותר בתהליך:
       

      • To – נתון ה email מתוך בלוק AI Agent
      • Subject – נתון ה subject מתוך בלוק AI Agent
      • Message – נתון ה body מתוך בלוק AI Agent
    • תנו לבלוק השליחה את השם Gmail – Send to Customer.
  2. ענף הדחיה – יצירת טיוטה, לאישור עתידח:
     

  3. חברו בלוק Gmail נוסף ליציאת ה false של בלוק ה IF, עם הפעולה Create a draft ושבצו את נתוני ה Subject ו Message.
  4. תנו לבלוק השליחה את השם Gmail – Create a Draft.
  5. אופציונלי: הוסיפו Option חדש בשם To Email, וחברו אליו את נתון ה email. זה יאפשר לנו לשלוף בקלות את כתובת המייל של הלקוח לאחר אישור הנוסח.
  6. בדיקה מקצה לקצה:
     

    • שמרו והפעילו את ה-Workflow.
    • מלאו את הטופס.
    • גשו לתיבת המייל הפנימית שלכם.
    • לחצו על הכפתור הירוק "אשר שליחה".
    • בדקו ב-Executions ב-n8n. אתם אמורים לראות את ה-Workflow "נתקע" ב-Wait, ואז ממשיך דרך ה-IF (בירוק) ושולח את המייל השני.
    • ודאו שהמייל אכן הגיע לתיבת הדואר של ה"לקוח" (האימייל שהזנתם בטופס).
    • חזרו על התהליך והפעם דחו את נוסח ההודעה. בדקו שנוצרת לכם טיוטה חדשה בתיבת המייל האישית (אופציונלית – עם כתובת מייל הלקוח ב-To).

פרק 5: תרגול פתוח

עכשיו, כשיש לכם תהליך HITL בסיסי, נסו לשכלל אותו:

 

  1. הגדרת Timeout:
     

    מה קורה אם המנהל אף פעם לא מאשר?

     

    • בבלוק ה-Gmail – Wait, חקרו את האפשרות Timeout.
    • הגדירו שההמתנה תפוג לאחר שעתיים, וחברו את יציאת ה-Timeout (שמופיעה כשמפעילים את האפשרות) לבלוק ששולח התראה על "טופס שלא אושר בזמן".
  2. עיצוב מתקדם ללקוח:
     

    • בענף ה״אישור״ – נסו להוסיף Styling מתקדם יותר לנוסח המייל, רגע לפני שנשלח ללקוח. בעוד שנוסח המייל לאישור מוצג כטקסט פשוט ושטוח, המייל שנשלח ללקוח יכול להיות מעוצב יותר, עם כותרות ראשיות ומשניות, הגדרות או אימוג׳יז.
    • לצורך כך הוסיפו בלוק של Ai Agent בין ה Human in the Loop לבין בלוק שליחת המייל ללקוח. הגדירו בו הוראות מדויקות איך להתערב בעיצוב המייל ללקוח, מבלי לשנוח את הניסוח עצמו, והזרימו את התוצאה לבלוק של השליחה.
    • שימו לב: אל תשכחו לשנות את סוג המייל הנשלח ל HTML, ולהגדיר מחדש את ניתובי הנתונים לשליחה.
  3. הוספת משוב מילולי:
     

    • זו משימה מורכבת יותר. נסו לשנות את הגדרות בלוק ה Gmail – Wait ל Custom Form, כך שהגורם המאשר יהיה יכול לציין לא רק ״אישור / דחיה״ אלא גם משוב מילולי מה לתקן.
    • המשוב המילולי ונוסח המייל המקורי ייכנסו ביחד לבלוק נוסף של Ai Agent בענף ה false, וזה ינסח גרסה חדשה וישלח את המייל.
  4. אשרור נוסח סופי לאחר תיקונים:
     

    • לאחר שטיפלנו בענף הדחיה וביקשנו מ Ai Agent נוסף לתקן את הניסוח בהתאם לתגובת המנהל, כעת נרצה לשלוח את הנוסח המתוקן בחזרה למנהל – לאישור נוסף, לפני שליחה סופית ללקוח.
    • חברו את בלוק ה Ai Agent שמבצע את התיקון בחזרה לבלוק Gmail – Wait. נוצרה לכם לולאת משוב, שתבקש שוב ושוב את אישור המנהל לפני שליחת נוסח בפועל.
    • חשוב מאוד! כיוון שכעת בלוק ה Gmail – Wait מקבל את הקלט משני בלוקים שונים (פעם מהסוכן הראשון שמנסח את המייל המקורי, ופעם מבלוק הסוכן שמבצע את התיקון), חשוב וקליטי להגדיר את מבנה הפלט של שני הסוכנים באופן זהה! וכן לנתב את הנתונים לבלוקים השונים כראוי (להשתמש ב {{ $json }} ולא בפניה לבלוק לפי שם {{ $("block name") }}.

       

      תהליך אשרור אנושי – ולולאת משוב
    • טיפ: נסו לפשט את תהליך האישור, ולבקש מהמנהל תשובה מילולית בלבד, ללא שדות נוספים. סוכן Ai נוסף יחלץ מתוך הטקסט את מצב האישור (אם מדובר באישור או דחיה), וכן את ההוראות לתיקון – אם יש כאלו.
  5. חקרו אפשרויות אחרות לאישור אנושי:
     

    • במעבדה זו השתמשנו בתהליך אישור אנושי דרך המייל. יש דרכים רבות ונוספות לתקשר עם מנהל אנושי לצורך קבלת אישור כגון טלגרם, Slack, והודעה חוזרת לממשק השיחה הפנימי של n8n.
    • נסו לעבוד עם תהליכים נוספים ולבחור – מה הדרך המתאימה לכם ביותר?

סיכום:
בתרגול זה לקחנו אוטומציה מלאה והוספנו לה נקודת ביקורת אנושית קריטית. למדנו כיצד להשתמש בבלוק Human in the Loop מסוג Gmail כדי להשהות Workflow, לשלוח מייל עם קישורי הפעלה דינמיים, ולהשתמש ב-IF כדי לנתב את המשך התהליך על בסיס החלטה אנושית. זהו דפוס פעולה חיוני לבניית תהליכים עסקיים בטוחים ואמינים.