הייחוד בתרגול זה הוא ההפרדה בין ה"מוח" (הסוכן) לבין ה"ידיים" (הכלים). הסוכן יתמקד בשיחה ובלוגיקה, בעוד שהביצוע בפועל – יצירת המסמך ושליחתו – יתבצע על ידי תהליכי n8n סטנדרטיים שהסוכן "קורא" להם ככלים (Tools).
שימו לב – תרגול זה מובנה מאוד והוא מהווה בסיס למחקר וללימוד דרך ״לכלוך הידיים״ בהמשך הדרך. חשוב להכיר את החלקים השונים בתרגול ובמערכת. עם זאת – בכל פרק וסעיף, הרגישו חופשי לחקור יותר לעומק ולסקור גם מושגים שונים ואפשרויות שונות שלא הוזכרו במפורש. נתקעתם? לא נורא – חזרו להוראות המקוריות, ותמיד אפשר להתחיל פרויקט חדש ונקי, ולהתנסות מראש הפרק הנוכחי.
בהצלחה!
הכנה
מעבדה זו עושה שימוש בשירותי רשת שונים, אליהם יש להרשם ולהשיג API-Keys. לאחר מכן יש להתקיד Nodes חדשים בתוך n8n, שאינם מופיעים בגלריית הבלוקים הבסיסית של המערכת:
- Tavily – מנוע חיפוש מבוסס Ai. הוראות פתיחת חשבון וקבלת מפתח גישה כאן
- SerpAPI – חיפוש ומחקר במגוון מנועי חיפוש. הוראות פתיחת חשבון וקבלת מפתח גישה כאן
- PDF Munk – שירות ליצירת דוחות PDF מתוך טקסט ו-HTML. הוראות פתיחת חשבון וקבלת מפתח גישה כאן
- התקנת הבלוקים – צרו Workflow חדש ב n8n, הוסיפו טריגר ידני וחברו אליו בזה אחר זה את הבלוקים Tavily, SerpAPI ו-HTML to PDF. המערכת תציע לכם להתקין את ה Nodes הללו בעת ההוספה הראשונית – אשרו את ההתקנות, ולאחר מכן מחקו את כל תוכן ה Workflow.
אנחנו מוכנים להתחיל.
פרק 1: ייבוא והכרת ״יוצר תוכניות הטיולים״
לפני שנבנה את הסוכן, עלינו להכין את הכלים שבהם הוא ישתמש. הכלי הראשון הוא תהליך מורכב שכבר הכנו עבורכם, אשר מקבל נתונים גולמיים ומחזיר קישור ל-PDF מעוצב – תוכנית טיול מפורטת עם נתוני טיסות, בתי מלון ואטרקציות בהתאם לתחומי העניין של הלקוח.
-
הכנה
- צרו Workflow חדש וריק, ותנו לו את השם Trip Planner.
- לחצו על שלוש הנקודות בפינה הימנית העליונה ובחרו Import from URL….
- הכניסו את הקישור הבא ואשרו:
https://almaya.ai/wp-content/uploads/2025/10/Trip-Planner.json - שימו לב – יתכן ותתבקשו לחבר Credentials שונים לבלוקים המרכיבים את התהליך. עברו על כל תרשים הזרימה והשלימו חוסרים. במידת הצורך – צריך Credentials והזינו את ה API-Keys שיצרתם לשירותים השונים.
- סקירת הקלט והפלט
- פתחו את ה-Workflow שייבאתם. שימו לב שהטריגר הוא מסוג When Executed by Another Workflow.
- זהו הטריגר שמאפשר לתהליך הזה להתנהג כ"כלי" עבור תהליכים אחרים (או סוכנים). הכנסו לחלון ההגדרות של הטריגר ושימו לב לאופן פירוט השדות השונים שהתהליך מצפה לקבל כקלט ראשוני.
- בחנו את ה-Node האחרון בתהליך – HTML to PDF. הוא אמור להחזיר JSON שמכיל שדה חשוב:
url. הסוכן שלנו ישתמש ב-URL הזה כדי להחזיר למשתמש קישור למסמך תוכנית הטיול, וכן לצורך תהליך השליחה שלו למייל הלקוח. - סקרו את אופן ביצוע התהליך, וההוראות השונות לכל אחד מהגורמים.
- הרצה ידנית לבדיקה
- התהליך שלפניכם מיועד לפעול רק כאשר תהליך אחר מפעיל אותו ומזין אליו את השדות הדרושים. לצורך הבדיקה – ניכנס לחלון ההגדרות של הטריגר, ובאזור ה Output נלחץ על כפתור העריכה (אייקון של עפרון, בפינה העליונה-ימנית).
- כעת אנו יכולים לערוך דוגמא של מבנה פלט לבדיקה. הזינו לחלון העריכה את ה-JSON הבא, ותקנו תאריכים כך שיתאימו לתקופה הנוכחית:
[ { "destination": "New York", "origin": "Israel", "departure_date": "Dec 25th 2025", "return_date": "Jan 13th 2026", "activities": "Broadway Shows", "travelers": 2 } ] - לחצו על Save וצאו מחלון ההגדרות.
- שימו לב שכעת מופיע על בלוק הטריגר סימן קטן של נעץ. פירושו – כרגע הפלט של הבלוק ״ננעץ״ על נתונים קבועים שהזנתם. על מנת לבטל את הנעילה – תוכלו בהמשך לחזור לחלון הגדרות הבלוק, וללחוץ על כפתור הנעץ בפינה של אזור ה Output.
- עכשיו אנחנו מוכנים לבדיקה – לחצו על כפתור Execute Workflow בתחתית המסך, ועקבו אחר זרימת התהליך.
- ודאו שהפלט הסופי (ה Output בבלוק האחרון בשרשרת) הוא אכן קישור תקין לקובץ PDF. בדקו, איך נראית תוכנית הטיול שקיבלתם?
- העתיקו את הקישור, ושמרו אותו בצד להמשך בדיקות.
פרק 2: בניית כלי שליחת המייל
כעת נבנה בעצמנו את הכלי השני: תהליך ליניארי שמקבל את הקישור ל-PDF, מוריד אותו, משנה את שמו ושולח אותו במייל ללקוח.
- הגדרת הטריגר
- צרו Workflow חדש בשם "Daniel – The Travel Agent". אנחנו קוראים לו כך, כי ה Workflow הזה ישמש אותנו גם להגדרת תהליך השליחה הליניארי, וגם להגדרת סוכן השיחה עצמו. (כיוון ששני אלו מופעלים בטריגרים מסוגים שונים – ניתן לכלול אותם באותו ה workflow ב-n8n).
- הוסיפו טריגר מסוג When Executed by Another Workflow (חפשו תחת Triggers).
- הגדירו בטריגר את הסכימה (Schema) של הקלט הצפוי. אנו מצפים לקבל ארבעה שדות (כל השדות מסוג String):
email(כתובת המייל של הלקוח)plan_url(הקישור ל-PDF שהופק בכלי הקודם)subject(נושא המייל)email_body(גוף המייל)
- הכניסו כבר עכשיו נתוני Mock לבדיקה בפאנל ה Output של הטריגר, באופן אופן שבדקנו את התהליך הקודם. שימו לב להכניס לשדה ה
plan_urlאת הלינק למסמך שקיבלתם בתהליך ה Planner. לדוגמא:[ { "email": "my_email@gmail.com", "plan_url": "<URL_FROM_PREVIOUS_WORKFLOW>", "subject": "Your Bespoke Trip Plan to China", "email_body": "Here you go! this is your trip plan." } ]
- הורדת הקובץ ושינוי השם
- הוסיפו Node מסוג HTTP Request.
- הגדירו את ה-Method ל-GET.
- בשדה ה-URL, גררו (Drag & Drop) את הערך
plan_urlמהטריגר. - הריצו את הצעד (לחיצה על Execute Step, וודאו שהקובץ יורד בהצלחה, ומופיע בפאנל ה Output של הבלוק.
- אופציונלי: שימו לב לשם הקובץ שירד – הוא מופיע בשם ״לא ידידותי״, ואולי נרצה לשנות זאת.
לצורך כך – חברו בלוק מסוג Code – Javascript, והשתמשו ב Ask AI להסביר לו מה אתם רוצים להשיג. לחילופין ניתן פשוט לבקש מ Gemini ליצור לנו קוד, באופן הבא:
Give me a JS code for a Code Node in n8n that changes the name if a binary file in the input to "Trip Plan.pdf"
הדביקו את הקוד שקיבלתם לחלון ה Code בבלוק, והריצו אותו לבדיקה. ודאו שאתם מקבלים בפלט את אותו הקובץ – עם שם חדש. - אם לא הצלחתם להגיע לתוצאה הרצויה לאחר כמה נסיונות, השתמשו בקוד הבא:
// Loop over input items and update binary file name for (const item of $input.all()) { if (item.binary && item.binary.data) { item.binary.data.fileName = 'My-Trip-Plan.pdf'; } } return $input.all();
- שליחת המייל
- הוסיפו Node של Gmail לשליחת המייל.
- משכו את הנתונים הרלוונטיים מהטריגר לשדות To, Subject ו-Message.
- ודאו שסוג ההודעה היא HTML.
- בתחתית חלון ההגדרות, הוסיפו את האפשרות Attachments ותחת השדה Attachment Field Name ודאו שהערך הוא
data(זה אמור להיות מוגדר כך כבר בהתחלה). - תהליך שליחת המייל מוכן! בדקו אותו מקצה לקצה. וודאו שקיבלתם מייל מסודר עם קובץ התוכנית מצורף.
פרק 3: בניית סוכן הנסיעות "דניאל"
זהו הלב של המערכת. נבנה את הסוכן שידבר עם המשתמש ויפעיל את הכלים שיצרנו.
- הקמת תשתית הסוכן
- נישאר באותו ה Workflow של תהליך השליחה. אם תרצו – ניתן להפריד את הסוכן גם לקנבס חדש ונקי.
- הוסיפו את ה-Node המרכזי: AI Agent, עם טריגר מסוג Chat.
- חברו אליו Chat Model (לביצועים מיטביים – מומלץ להשתמש במודל
Gemini 2.5 Flashדרך שירות OpenRouter, אבל גם מודלי היסק גדולים יחסית של OpenAI יכולים לעבוד טוב.). - חברו לסוכן רכיב זיכרון פשוט (Simple Memory) באורך חלון הקשר של 5 הודעות.
- הכניסו לסוכן את הוראות המערכת הבאות:
# Role You are Daniel, a British, 55 year old, travel agent. # Instructions * You help the user to plan a trip by asking them clarifying questions about their trip. * Then, when you have all the required information from the user - respond with a recap message and ask for approval to go ahead and build the trip plan. * Once given - use the "Generate Trip Plan" tool to generate a trip plan, and respond with a URL to download this plan as a PDF. # Rules - Before calling the "Generate Trip Plan" tool, make sure you have all the required information - Always respond in a very well structured Markdown format. - Use a stereotypical British English - You are very polite and service-oriented, yet assertive and not letting the conversation to go out of bounds. Do not allow open chat, but a goal-oriented conversation in order to refine a trip plan. - Never ask the user for all the information at once, but gather the info by asking question one by one, along with the conversation. - Start by presenting yourself, and ask what can you help? - Always respond with short messages, emphasize the important words (like required information) with Bold. - You can sometimes use more broad questions like "tell me about your trip plans" - After the plan is ready, suggest to send it to the user by email. If they approve, ask for the email address, and then use the "Send Trip Plan" tool - If you send an email - sign up with: Best Regards Daniel | Almaya Travel Agency # Variables * Today is: {{ $today }}
- הגדרת הכלים לסוכן
כעת נחבר שני כלים לסוכן – כלי אחד לבניית תוכנית הטיול כמסמך PDF מעוצב, וכלי לשליחת המסמך במייל ללקוח. כל אחד מהכלים הללו הוא תהליך עבודה בפני עצמו.
- הוסיפו לסוכן כלי (Tool) חדש מסוג Call n8n Workflow.
- חשוב מאוד: שנו את שם הכלי ל Generate Trip Plan. שמות הכלים הללו חשובים מאוד עבור הסוכן, ומשפיעים דרמטית על הזיהוי שלהם ואופן השימוש.
- פתחו את הרשימה בשדה ה Workflow ובחרו בתהליך Trip Planner שיצרתם בתחילת התרגול. שימו לב לשדות הקלט שהתווספו.
- סמנו את כל שדות הקלט – שייקבעו ע״י הסוכן (לחצן הכוכבים מימין לכל שדה).
- הוסיפו כלי נוסף מסוג Call n8n Workflow, והפעם בחרו בתהליך הנוכחי שאתם בו (זה שבתוכו מוגדר גם תהליך שליחת המייל). שנו את שם הכלי ל-Send Trip Plan
- העבירו את כל הפרמטרים הדרושים לאחריות הסוכן (לחצן הכוכבים), ותחת השדה
email_body, הוסיפו את התיאור:Well formatted HTML email body, that summarizes the conversation and refers the user to the attach trip plan.
- בדיקה
פתחו בשיחה עם הסוכן דרך ממשק הצ׳אט. שימו לב לתפקודו ולהיבטים הבאים:
- אופי וסגנון דיבור.
- שמירה על מסגרת השיחה.
- איסוף הפרטים הנדרשים.
- הפעלת כלי בניית התוכנית.
- הצעה לשליחת התוכנית במייל, והפעלת כלי השליחה.
בצעו תיקונים והתאמות לפי הנדרש.
פרק 4: תרגול פתוח
כעת שיש לכם סוכן עובד, זה הזמן לשכלל אותו ולבדוק את הגבולות שלו.
-
הוספת אימות קלט:
הוסיפו שלב שבו הסוכן מוודא שהמייל שהוזן הוא בפורמט תקין לפני שהוא מנסה לשלוח אותו. האם צריך כלי נוסף לשם כך, או שניתן לעשות זאת דרך ה-System Prompt? -
טיפול בשגיאות:
מה קורה אם כלי ה-PDF נכשל? שנו את ה-Workflow של הדו״חות כך שיחזיר שגיאה יזומה, וראו איך דניאל מתמודד עם זה. נסו לכתוב הנחיה שתגרום לו להתנצל ולבקש מהמשתמש לנסות שוב מאוחר יותר. -
שרשור אוטומטי:
כרגע הסוכן מבקש את המייל רק אחרי יצירת הדו״ח. נסו לשנות את הפרומפט כך שהסוכן יאסוף את כל הפרטים (כולל מייל) כבר בהתחלה, ויריץ את שני הכלים בזה אחר זה באופן אוטומטי ללא התערבות נוספת מצד המשתמש באמצע. -
ערוצי קלט:
חברו את הסוכן לערוצי קלט נוספים כמו טלגרם (בשיחת טקסט או דרך הודעות קוליות). -
הודעות ביניים:
השתמשו בכלי Respond to Chat על מנת להעדכן את המשתמש לפני הפעלת תהליכים ממושכים, ולהודות לו מראש על ההמתנה. שימו לב שיהיה צורך לעדכן את הוראות המערכת בהתאם, ולהסביר לסוכן מתי דרוש עדכון מסוג זה.
* כלי זה זמין רק ב n8n מגרסת1.122ומעלה.
בתרגול זה בנינו מערכת מורכבת המשלבת בינה מלאכותית יוצרת (GenAI) עם אוטומציה קלאסית. ראינו כיצד ה-LLM משמש כמנצח על התזמורת, בעוד ה-Workflows הליניאריים מנגנים את התווים המדויקים (יצירת קבצים ושליחת מיילים). זוהי ארכיטקטורה חזקה שמאפשרת לבנות יישומים ארגוניים אמינים, שכן היא מונעת מהמודל "להמציא" פעולות קריטיות ומשאירה אותן בידיים של קוד מובנה.