פלטפורמת תמיכה רב־לשונית · AfifAI
מקרה בוחן · פלטפורמת תמיכה חכמה · ⁦2025–2026⁩

מוקד תמיכה רב־לשוני מבוסס AI לעובדים זרים

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

⁦.NET 8⁩ / ⁦ASP.NET Core⁩EF Core · SQL ServerAzure OpenAIAzure AI SearchReact · TypeScriptWhisper
לקוח
חברה ישראלית שמשרתת תאגידי כוח אדם ואת העובדים הזרים שלהם (חסוי)
התפקיד שלי
ראש צוות, ארכיטקט ומפתח בפועל
ציר זמן
אוגוסט 2025 – פברואר 2026 · מריפו ריק ועד dev / QA / stage / prod
סטטוס
באוויר
במבט אחד
400 עד 8קריאות תרגום ל־⁠LLM כשעורכים שאלה אחת מתוך 50. תוכן שלא השתנה מדולג לפי hash.
≈1 שנייהלשמירת סט שאלות נפוצות. התרגום והאינדוקס הוצאו ממסלול הבקשה.
עד פי 10מהירות אינדוקס: 10 embeddings במקביל ואז העלאה אחת מרוכזת
6שפות לעובדים, ועברית למנהלים. הפניות מתורגמות בשני הכיוונים.
N עד 2פניות למסד הנתונים לכל תסריט משוכפל (קודם: אחת לכל צומת)
1 עד 10 MBמגבלת קובץ מצורף, והודעות קוליות מתומללות אוטומטית
135נקודות קצה REST ב־⁠12 קונטרולרים, ל־⁠6 תפקידים
3 מערכותAPI, אפליקציית ווב לעובדים וממשק ניהול, ב־⁠7 חודשים
הבעיה

העובדים והמנהלים לא מדברים באותה שפה

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

מה הובלתי

מהארכיטקטורה ועד פרודקשן, עם הידיים בקוד

  • תכננתי את הפתרון: API ב־⁠⁦.NET 8⁩, אפליקציית ווב לעובדים, ממשק ניהול, SQL Server, Azure OpenAI ו־⁠Azure AI Search.
  • בניתי בעצמי את מנוע ה־⁠RAG, את צינור התרגום בזמן שמירה ואת תמלול ההודעות הקוליות.
  • בניתי את מנוע התסריטים ואת עורך העץ שלו עם גרירה ושחרור, כולל תסריטי אב שמשוכפלים לכל תאגיד.
  • בניתי את זרימת הפניות: תמליל הצ׳אט נכנס לפנייה, תגובות מתורגמות, התראות SMS למנהלי האזור ועדכונים חיים בצ׳אט.
  • הובלתי את הצוות לאורך ארבע סביבות, הגדרתי את מודל ההרשאות (6 תפקידים) והובלתי את סבב שיפורי הביצועים.
ארכיטקטורה

API אחד, ארבעה מנועים, וכולם מודעים לשפה

התרשים רחב מהמסך: החליקו הצידה לצפייה בכולו →

כל ישות מתורגמת נשמרת פעם אחת לכל שפה, יחד עם hash של טקסט המקור. מסלול הקריאה אף פעם לא פונה ל־⁠LLM, כך שעובד תאילנדי שפותח תסריט מקבל טקסט תאילנדי שמור, בלי שום עיכוב.

איך שאלה זורמת במערכת

מלחיצה על תסריט ועד התשובה של המנהל

אפשר לעבור שלב אחר שלב על שיחה אחת של עובד. התוכן להמחשה בלבד ואין בו נתוני לקוח. הקריאות המדומות מראות מה קורה בכל שלב.

החלטות תכנון

לתרגם פעם אחת, לענות ביושר, ולהשאיר את הבקשה מהירה

קודם תשובה מבוססת מקורות, ורק אחר כך תשובה כללית מסומנת

המודל רשאי לענות רק מתוך הקטעים שאוחזרו, או להחזיר בדיוק את הסימן __NOT_FOUND__. רק אז רצה תשובה מבוססת ידע כללי, והיא נשמרת עם source=llm. כל תשובה מתעדת את המקור, הציון הגבוה, התוצאות שאוחזרו, הציטוטים, הטוקנים וזמן התגובה. המחיר: שתי קריאות ל־⁠LLM כשאין התאמה.

תרגום בזמן שמירה, לפי hash של התוכן

תסריטים, צמתים ושאלות נפוצות מתורגמים כשמנהל שומר אותם, ונשמרים לכל שפה יחד עם SHA-256 של המקור. פריט שה־⁠hash שלו לא השתנה מדולג. קריאה לא עולה אף קריאת LLM. המחיר: יותר שורות במסד, וכמה שניות עד ששינוי חדש מופיע בכל השפות.

העבודה הכבדה אחרי התשובה

שמירת שאלות נפוצות חוזרת מיד אחרי שהמסד מאשר. האינדוקס והתרגום רצים ברקע, כל אחד ב־⁠DI scope משלו, עם הגבלת מקביליות (10 embeddings ו־⁠5 תרגומים). משימה שנכשלת לא כותבת כלום, ולכן השמירה הבאה מנסה שוב באופן טבעי, כי ה־⁠hash עדיין שונה.

תוכן אב שמשוכפל לכל תאגיד

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

תרגום שמבין HTML ושורד את מסנן התוכן

תשובות בטקסט עשיר מתורגמות במצב HTML ששומר על כל התגיות. כותרות פשוטות עוברות במצב טקסט שמנקה תגיות מיותרות. אם מסנן התוכן חוסם טקסט, נשאר המקור והשמירה מצליחה בכל זאת.

יומן הנדסי

מה נשבר, ואיך זה תוקן

נובמבר 2025

דירוג סמנטי לא היה זמין

תכנון האחזור הראשון נשען על דירוג סמנטי מחדש, אבל רמת שירות החיפוש שבשימוש לא תמכה בו, והשאילתות נכשלו.

עברנו לאחזור היברידי: שאילתת מילות מפתח פשוטה יחד עם שאילתת וקטורים ב־⁠HNSW, ושמונה התוצאות המובילות. הגדרת הדירוג הסמנטי נשארה באינדקס, ליום שבו הרמה תאפשר אותה.

נובמבר 2025

כל שמירה תרגמה הכול מחדש

עריכה של שאלה אחת מתוך 50 תרגמה מחדש את כל ה־⁠50 לכל השפות: 400 קריאות LLM בשביל שינוי של שורה אחת.

הוספתי SourceHash לכל ישות ושפה. פריטים שלא השתנו מדולגים, ואותה עריכה עולה היום 8 קריאות.

דצמבר 2025

שמירת שאלות נפוצות חיכתה ל־⁠LLM

בקשת השמירה חיכתה שכל התרגומים וה־⁠embeddings יסתיימו, וממשק הניהול נתקע בינתיים.

איחדתי את ה־⁠upsert למסד לפעולה אחת, והעברתי את האינדוקס והתרגום למשימות רקע עם scope משלהן ו־⁠semaphores. התשובה חוזרת תוך שנייה בערך.

דצמבר 2025

המודל דחה פרמטר

אחרי שינוי ב־⁠deployment, קריאות הצ׳אט נכשלו על הגדרת temperature מפורשת שהמודל כבר לא קיבל.

הסרתי את הגדרות הדגימה מכל הקריאות, ושם ה־⁠deployment נשאר המתג היחיד להחלפת מודל. העקביות בתרגום מגיעה היום מפרומפטים קפדניים.

ינואר 2026

השעות זזו בכמה שעות

זמני הצ׳אט והפניות הוצגו באזור זמן לא נכון. EF Core החזיר DateTimeKind.Unspecified, ומעבר מוקדם יותר לשעון מקומי רק החמיר את המצב.

השרת שומר UTC ומסמן אותו במפורש ב־⁠DTOs. הפרסר בצד הלקוח מקבל מחרוזות בלי Z ומציג אותן לפי השפה.

ינואר 2026

שכפול עץ תסריט היה איטי ושביר

קליטת תאגיד חדש העתיקה את תסריט האב צומת אחר צומת, וקישורי ההורה היו צריכים להצביע על מזהים שעוד לא קיימים.

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

ינואר 2026

עובדים שמתקשים להקליד

חלק מהעובדים שולחים הודעות קוליות במקום טקסט, והמנהל ראה קובץ שמע בלי שום הקשר.

הוספתי הקלטה באפליקציה ותמלול Whisper בשרת. מסך הפנייה משלב כל קובץ שמע עם התמלול שלו בנקודה הנכונה בשיחה.

תוצאות

איפה זה עומד

  • עובדים שואלים בשפה שלהם. התשובות מגיעות מהשאלות הנפוצות והתסריטים של התאגיד עצמו, וכשאין התאמה רצה תשובה כללית שמסומנת ככזו.
  • כל הסלמה הופכת לפנייה עם תמליל הצ׳אט המלא. המנהל קורא ועונה בעברית, והעובד מקבל את התשובה בשפה שלו. התרגום הידני לכל פנייה ירד מכ־⁠5 דקות לאפס.
  • מנהלי האזור מקבלים SMS על פניות חדשות ועל תגובות. העובד רואה תשובות בצ׳אט תוך כ־⁠5 שניות, כי הצ׳אט מושך רק תגובות חדשות.
  • עריכת תוכן מתרגמת מחדש רק את מה שהשתנה (400 → 8 קריאות בתרחיש של 50 שאלות), והשמירה חוזרת תוך שנייה בערך.
  • תאגיד חדש מתחיל עם תסריט אב וסט שאלות נפוצות מוכנים ומתורגמים, ולא עם חשבון ריק.
  • דשבורדים לניהול מציגים פניות לפי נושא, לפי עובד ולפי שעה ויום בשבוע, ומספר עובדים לכל תאגיד. עובדים נקלטים מאקסל או CSV עם בדיקת תקינות לכל שורה.
טכנולוגיות

טכנולוגיות

Backend
⁦.NET 8⁩, ⁦ASP.NET Core⁩, EF Core, SQL Server, AutoMapper, NLog
AI
מודלי שיחה, embeddings ו־⁠Whisper ב־⁠Azure OpenAI, ואחזור היברידי ב־⁠Azure AI Search
Front end
React 18, TypeScript, Redux Toolkit, Vite, Ant Design, i18next, dnd-kit, Quill, Chart.js
אינטגרציות
אחסון קבצים ב־⁠AWS S3, שער SMS והתחברות עם JWT + OTP
אספקה
ענפים לסביבות פיתוח, QA, stage ופרודקשן, אימג׳ים ב־⁠Docker וסקריפטי השוואת SQL
שפות
עברית (RTL), אנגלית, רוסית, תאית, הינדי, סינהלית; ערבית בעבודה

שיחת אבחון חינם · 30 דקות · ללא התחייבות

הביאו תהליך אחד. קבלו תוכנית ומספר לשפר.

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

לשיחת אבחון חינםafif.mansour@gmail.com

נפתח מייל מוכן מראש · מענה תוך יום עסקים

ה־AI קורא. הקוד סופר.

כל הפרויקטים