אינטגרציה של OpenAI Assistants API לפיתוח סוכני AI

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

למה OpenAI Assistants API נכשל במשימות אמיתיות

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

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

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

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

מה משתנה בתפעול: מהירות ומחלקות כשלים

אחרי העברת לוגיקת הסוכן ל-OpenAI Assistants API, צוואר הבקבוק הוא לא יצירת התשובה, אלא המתנה לקריאות חיצוניות. לכן את מהירות התשובה של הסוכן מודדים באחוזון ה-95, לא בממוצע: שיחה שבהדגמה נכנסת לכמה שניות, תחת עומס מתפרקת לתור בקשות, חזרות וזמני המתנה.

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

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

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

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

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

דרכי אינטגרציה: עוזרים, פונקציות, שירותים חיצוניים

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

השוואה בין מצבים

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

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

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

איך אנחנו מטמיעים עוזר: שלבי עבודת הנדסה

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

  1. אבחון תסריטים. מפרקים פניות אמיתיות, בוחרים 3–5 עם התדירות הגבוהה ביותר וחומרת הטעות הגבוהה ביותר, מקבעים מקורות נתונים ואחראים לעדכניות שלהם.
  2. תכנון גבולות. מתארים הוראות לעוזר, פונקציות שנקראות, כללי הסלמה לנציג. בנפרד — מה הוא לא צריך לעשות: לאשר תשלומים, להבטיח בשם החברה, לעבוד עם נתונים של אחרים.
  3. הרכבת אב טיפוס על OpenAI Assistants API. מחברים מאגר ידע, מגבילים אורך וזמן תשובה, מפעילים תיעוד בקשות ופניות לשירותים חיצוניים.
  4. בדיקת כשל. מריצים תסריטים שליליים: בקשה ריקה ועמומה, שירות חיצוני לא זמין, נתונים מיושנים, ניסיון להוציא את העוזר מגבולות התפקיד. התנהגות נכונה — תשובה מובנת או העברה לנציג, ולא המצאה סבירה.
  5. הערכת איכות. מחשבים שיעור תשובות נכונות על סט מתויג של שיחות, מפרקים שגיאות, משפרים הוראות ופונקציות עד לסף מוסכם.
  6. העברה לתפעול. מוסרים נהלים, ניטור עם התראות על שגיאות, הוראות לנציגים ותוכנית חזרה לגרסה קודמת של העוזר.
  7. ליווי. בשבועות הראשונים מפרקים שיחות אמיתיות, מכווננים ניסוחים, מוסיפים תסריטים שלא נכנסו לגל הראשון.

מה נשאר אצל הלקוח: קונפיגורציות, סכמות, נהלים

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

  • תיעוד לעוזר — ייעוד ותפקיד, הוראות מערכת, כלים מחוברים, גבולות כשירות וכללי העברת שיחה לאדם.
  • סכמת אינטגרציה — זרמי בקשות מערוצים ל-Assistants API, נקודות תיעוד, טיפול בשגיאות ובזמני המתנה, התנהגות כשירותים חיצוניים אינם זמינים.
  • מדיניות גישה — איזה מפתחות ותחומי נתונים זמינים לסוכן, הפרדת תפקידים, רוטציית סודות, סינון נתונים אישיים לפני שליחה למודל.
  • נוהל עדכון ידע — מי ובאיזו תדירות מעדכן את המאגר, איך נבדקת איכות התשובות לפני פרסום, איך מוחזרת אחורה קבוצה שלא צלחה.
  • קונפיגורציה במאגר — הוראות ופרמטרי יצירה תחת בקרת גרסאות, עם היסטוריית שינויים וסדר פרסום ברור.
  • סט תסריטי בדיקה — שאלות ייחוס עם התנהגות צפויה; הרצה לפני שינויים מראה אם בקשות שעבדו קודם נשברו.
  • הוראות תפעול — היכן לראות יומנים, אילו מדדים לעקוב אחריהם ומה לעשות בדגרדציה של תשובות.

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

מקרה בוחן: איך צמצמנו תשובות ידניות של שירות התמיכה

מה היה ומה שינו

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

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

מה נהיה

  • שיעור הפניות שנסגרו על ידי הסוכן בלי נציג: 0 → 61%.
  • זמן התשובה הראשון הממוצע: מארבע שעות לפחות מדקה בשעות עבודה.
  • זרם התשובות הידניות הצטמצם ב-58% — הזמן שהתפנה עבר לפניות מורכבות.

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

במה Assistants API שונה מקריאות ישירות למודל?

Assistants API של OpenAI — שכבת פלטפורמה מעל קריאה למודל: שיחה, היסטוריה וכלים מחוברים נשמרים בצד השירות, והקוד עובד עם שרשור והרצה. בקריאות ישירות למודל כל צעד הוא בקשה נפרדת, ואת ההקשר עבורה אנחנו אוספים בעצמנו.

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

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

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

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

ספקות טכניים לפני התחלה: נתונים ומגבלות

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

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

היכן נשמרים הנתונים שלנו ומה קורה איתם אחרי המסירה?

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

איך מתעדכן מאגר הידע?

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

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

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

נדון במשימה ונחזור עם הערכה ותוכנית

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

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

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

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