כאשר סוכני AI עוברים מפרוטוטיפים ניסיוניים ליישומים בעולם האמיתי, היכולת להבין את התנהגותם, לנטר את ביצועיהם ולהעריך את התפוקות שלהם באופן שיטתי הופכת לחשובה.
לאחר סיום שיעור זה, תדעו כיצד/תבינו:
המטרה היא לצייד אתכם בידע כדי להפוך את הסוכנים שלכם, שכעת הם “קופסאות שחורות”, למערכות שקופות, ניתנות לניהול ומהימנות.
הערה: חשוב לפרוס סוכני AI שהם בטוחים ואמינים. מומלץ גם לעיין בשיעור בניית סוכני AI אמינים.
כלי נראות כגון Langfuse או Microsoft Foundry בדרך כלל מציגים ריצות סוכן כעקבות ופסיעות.
ללא נראות, סוכן AI יכול להרגיש כמו “קופסה שחורה” – מצב הפנימי שלו וההיגיון שמאחוריו אינם שקופים, מה שמקשה לאבחן בעיות או לאופטימיזציה. עם נראות, הסוכנים הופכים ל”קופסאות זכוכית”, המציעות שקיפות שחשובה לבניית אמון והבטחת הפעלה כמתוכנן.
מעבר של סוכני AI לסביבות ייצור מציב סט חדש של אתגרים ודרישות. נראות אינה עוד “תוספת נאה” אלא יכולת קריטית:
למטרת ניטור והבנת התנהגות סוכן, יש לעקוב אחר מגוון מדדים ואותות. המדדים הספציפיים עשויים להשתנות לפי מטרת הסוכן, אך כמה מהם חשובים באופן אוניברסלי.
הנה כמה מהמדדים הנפוצים שכלי נראות מנטרים:
תזמון (Latency): כמה מהר הסוכן מגיב? זמני המתנה ארוכים משפיעים לרעה על חוויית המשתמש. יש למדוד תזמון למשימות וצעדים בודדים על ידי מעקב אחרי ריצות הסוכן. לדוגמה, סוכן שלוקח 20 שניות לכל קריאות המודל יכול להיות מואץ על ידי שימוש במודל מהיר יותר או הרצת הקריאות במקביל.
עלויות: מהו ההוצאה לכל ריצת סוכן? סוכני AI נשענים על קריאות ל-LLM שנמדדות לפי תווים או על APIs חיצוניים. שימוש תכוף בכלים או בפרומפטים מרובים יכול להגדיל משמעותית את העלויות. למשל, אם סוכן קורא ל-LLM חמישה פעמים לשיפור איכות שולית, יש להעריך האם העלות מוצדקת או שאפשר להפחית את מספר הקריאות או להשתמש במודל זול יותר. ניטור בזמן אמת יכול גם לסייע בזיהוי זעזועים בלתי צפויים (למשל באגים שגורמים ללופים אינסופיים של API).
שגיאות בבקשות: כמה בקשות נכשלו? זה יכול לכלול שגיאות API או קריאות לכלי נכושות. כדי להפוך את הסוכן לעמיד יותר בייצור, תוכלו להגדיר מנגנוני גיבוי או ניסיון מחדש. למשל, אם ספק LLM A אינו פעיל, מעבירים ספק LLM B כמגבה.
משוב משתמש: יישום הערכות ישירות של המשתמש מספק תובנות חשובות. זה יכול לכלול דירוגים מפורשים (👍אישור/👎דחייה, ⭐1-5 כוכבים) או תגובות טקסטואליות. משוב שלילי עקבי צריך להדליק נורה אזהרה שייתכן שהסוכן אינו מתפקד כמצופה.
משוב משתמש מרומז: התנהגויות משתמש מספקות משוב עקיף גם בלי דירוגים מפורשים. זה יכול לכלול ניסוח מחודש של שאלה מיידית, שאילתות חוזרות או לחיצה על כפתור ניסיון מחדש. למשל, אם רואים שמשתמשים שואלים את אותה שאלה שוב ושוב, זו אינדיקציה שהסוכן אינו מתפקד כמצופה.
דיוק: באיזו שכיחות הסוכן מייצר תוצאות נכונות או רצויות? הגדרות הדיוק משתנות (למשל: נכונות פתרון בעיה, דיוק אחזור מידע, שביעות רצון משתמש). הצעד הראשון הוא להגדיר מה נחשב להצלחה עבור הסוכן שלכם. ניתן לעקוב אחר הדיוק באמצעות בדיקות אוטומטיות, ציון הערכות או תוויות השלמת משימה. לדוגמה, סימון עקבות כ”צלחה” או “נכשל”.
מדדי הערכה אוטומטיים: ניתן גם להגדיר הערכות אוטומטיות. לדוגמה, ניתן להשתמש ב-LLM לציון פלט הסוכן, למשל האם הוא מועיל, מדויק או לא. קיימות גם מספר ספריות קוד פתוח המסייעות בציון היבטים שונים של הסוכן, כמו RAGAS לסוכני RAG או LLM Guard לגילוי שפה מזיקה או הנחת פרומפטים.
למעשה, שילוב של מדדים אלו מספק את הכיסוי הטוב ביותר של מצב הסוכן. בדוגמת המחברת example notebook בפרק זה, נראה כיצד מדדים אלו נראים בדוגמאות אמיתיות, אך תחילה נלמד כיצד נראה תהליך הערכה טיפוסי.
כדי לאסוף נתוני עקבות, תצטרכו לאמלץ את הקוד שלכם. המטרה היא לאמלץ את קוד הסוכן כך שיפלוט עקבות ומדדים שניתן לתפוס, לעבד ולהציג באמצעות פלטפורמת נראות.
OpenTelemetry (OTel): OpenTelemetry הפך לסטנדרט התעשייתי לנראות LLM. הוא מספק סט APIים, SDKים וכלים ליצירה, איסוף ויצוא נתוני טלמטריה.
קיימות ספריות אמלוץ רבות שעוטפות מסגרות סוכן קיימות ומאפשרות ייצוא של פסיעות OpenTelemetry לכלי נראות. Microsoft Agent Framework משתלב עם OpenTelemetry באופן טבעי. להלן דוגמה לאמלוץ סוכן MAF:
from agent_framework.observability import get_tracer, get_meter
tracer = get_tracer()
meter = get_meter()
with tracer.start_as_current_span("agent_run"):
# ביצוע הסוכן מנותב באופן אוטומטי
pass
המחברת example notebook בפרק זה תדגים כיצד לאמלץ סוכן MAF שלך.
יצירת פסיעות ידנית: בעוד ספריות האמלוץ מספקות בסיס טוב, לעיתים נדרש מידע מפורט או מותאם אישית יותר. ניתן ליצור פסיעות ידנית להוספת לוגיקה מותאמת באפליקציה. חשוב מכך, ניתן להעשיר פסיעות שנוצרו אוטומטית או ידנית עם תכונות מותאמות (המוכרות גם כתגים או מטא-דאטה). תכונות אלו יכולות לכלול נתונים עסקיים, חישובים ביניים או כל הקשר שיכול להיות שימושי לדיבוג או ניתוח, כגון user_id, session_id, או model_version.
דוגמה ליצירת עקבות ופסיעות ידנית עם Langfuse Python SDK:
from langfuse import get_client
langfuse = get_client()
span = langfuse.start_span(name="my-span")
span.end()
נראות מספקת מדדים, אך הערכה היא התהליך של ניתוח הנתונים (וביצוע בדיקות) כדי לקבוע כיצד סוכן AI מתפקד וכיצד ניתן לשפרו. במילים אחרות, ברגע שיש לכם את העקבות והמדדים האלו – כיצד להשתמש בהם כדי לשפוט את הסוכן ולקבל החלטות?
הערכה סדירה חשובה כי סוכני AI הם לעיתים לא-דטרמיניסטיים ועלולים להתפתח (דרך עדכונים או שינוי בהתנהגות המודל) – ללא הערכה לא תדעו אם “הסוכן החכם” שלכם באמת עושה את עבודתו טוב או אם הוא נסוג אחורה.
קיימות שתי קטגוריות הערכות לסוכני AI: הערכה מקוונת ו-הערכה לא מקוונת. שתיהן בעלות ערך ומשלימות זו את זו. בדרך כלל מתחילים בהערכה לא מקוונת, כיוון שזו השלב המינימלי הנדרש לפני הפעלת כל סוכן.

זה כולל הערכת הסוכן בסביבה מבוקרת, בדרך כלל עם מערכי מבחן, לא בשאילתות משתמשים חיים. משתמשים במערכי נתונים מובחרים שבהם ידוע מהו הפלט המצופה או ההתנהגות הנכונה, ואז מריצים את הסוכן עליהם.
לדוגמה, אם בניתם סוכן לפתירת בעיות מילוליות במתמטיקה, ייתכן שיש לכם מערך מבחן של 100 בעיות עם תשובות ידועות. ההערכה הלא מקוונת מתבצעת לרוב במהלך הפיתוח (ויכולה להוות חלק מצינורות CI/CD) כדי לבדוק שיפורים או למנוע נסיגות. היתרון הוא שהיא ניתנת לחזרה ואתם מקבלים מדדי דיוק ברורים כי יש לכם אמת מידה. ניתן גם לדמות שאילתות של משתמשים ולמדוד תגובות הסוכן מול התשובות האידיאליות או להשתמש במדדים אוטומטיים כנזכר למעלה.
האתגר העיקרי בהערכה לא מקוונת הוא לוודא שמערך המבחן כולל ומעודכן – ייתכן שהסוכן יתפקד טוב במערך קבוע אך ייתקל בשאילתות שונות בייצור. לכן יש לשמור על עדכון מערכי המבחן עם מקרים חדשים ודוגמאות שמשקפות תרחישים אמיתיים. שילוב של מקרים קטנים לבדיקה מהירה ומערכים גדולים יותר למדדים רחבים הוא מועיל: מערכים קטנים לצ’קים מהירים וגדולים למדדי ביצועים.

מתייחס להערכת הסוכן בסביבה חיה, בזמן אמת, לדוגמה בשימוש בפועל בייצור. הערכה מקוונת כוללת ניטור ביצועי הסוכן באינטראקציות משתמש אמיתיות וניתוח תוצאות רציף.
לדוגמה, ניתן לעקוב אחר שיעורי הצלחה, ציוני שביעות רצון משתמש או מדדים נוספים בתנועת משתמשים חיה. היתרון של הערכה מקוונת הוא שהיא לוכדת דברים שאולי לא צפיתם להם בסביבת מעבדה – אתם יכולים להבחין בהסטת מודל עם הזמן (אם יעילות הסוכן יורדת עקב שינוי תבניות הקלט) ולקלוט שאילתות או מצבים בלתי צפויים שלא היו במערך המבחן. היא מספקת תמונה אמתית של התנהגות הסוכן בשטח.
הערכה מקוונת כוללת לעיתים איסוף משוב מפורש ועקיף מהמשתמשים, וככל הנראה הרצת ניסויים מוצלים או ניסויי A/B (שלסוכן החדש רץ במקביל לבדיקה מול הישן). האתגר הוא שקשה לקבל תוויות אמינות או ציונים לאינטראקציות חיות – יתכן ותסתמכו על משוב משתמש או מדדים משניים (כגון האם המשתמש לחץ על התוצאה).
הערכות מקוונות ולא מקוונות אינן בלעדיות; הן משלימות זו את זו היטב. תובנות מניטור מקוון (למשל סוגים חדשים של שאילתות שבהן הסוכן מתפקד גרוע) יכולות לשמש להגדלת ושיפור מערכי מבחן לא מקוונים. מכיוון ש, סוכנים שמתפקדים היטב במבחני לא מקוון יכולים לאחר מכן להיות מופעלים ומנוטרים בביטחון גבוה יותר באופן מקוון.
למעשה, צוותים רבים מאמצים לופ עבודה:
הערכה לא מקוונת -> פריסה -> ניטור מקוון -> איסוף מקרים כושלים חדשים -> הוספה למערך לא מקוון -> שיפור הסוכן -> חזרה על התהליך.
בעת פריסת סוכני AI בייצור, עשויות להיתקל באתגרים מגוונים. הנה כמה בעיות נפוצות ופתרונות אפשריים:
| בעיה | פתרון אפשרי |
|---|---|
| סוכן AI לא מבצע משימות באופן עקבי | - שפר את הפרומפט שניתן לסוכן; היה ברור לגבי המטרות. - זהה היכן ניתן לחלק משימות לתת-משימות ולטפל בהן באמצעות כמה סוכנים. |
| סוכן AI נתקל בלופים רציפים | - ודא שיש תנאי סיום ברורים כדי שהסוכן ידע מתי לעצור. - למשימות מורכבות שדורשות חשיבה ותכנון, השתמש במודל גדול יותר המתמחה במשימות חשיבה. |
| קריאות לכלי של סוכן AI אינן מתפקדות היטב | - בדוק ואמת את פלט הכלי מחוץ למערכת הסוכן. - דייק את הפרמטרים, הפרומפטים, ושמות הכלים. |
| מערכת סוכני מרובה לא מתפקדת בעקביות | - שפר את הפרומפטים שניתנים לכל סוכן כדי לוודא שהם ספציפיים ומובחנים זה מזה. - בנה מערכת היררכית המשתמשת בסוכן “נתב” או מבקר כדי לזהות איזה סוכן נכון. |
רוב הבעיות האלו ניתנות לזיהוי ביעילות רבה יותר כאשר יש נראות. העקבות והמדדים שהזכרנו עוזרים לאתר בדיוק באיזה שלב בזרימת הסוכן מתרחשות הבעיות, מה שהופך את הדיבוג והאופטימיזציה ליעילים משמעותית.
הנה כמה אסטרטגיות לניהול העלויות של פריסת סוכני AI בפרודקשן:
שימוש במודלים קטנים יותר: מודלים קטנים של שפה (SLMs) יכולים לבצע היטב במקרים שימוש סוכניים מסוימים ויקטינו עלויות בצורה משמעותית. כפי שנאמר קודם, בניית מערכת הערכה כדי לקבוע ולהשוות ביצועים מול מודלים גדולים יותר היא הדרך הטובה ביותר להבין עד כמה SLM יפעל היטב במקרה השימוש שלך. שקול להשתמש ב-SLM למשימות פשוטות יותר כמו סיווג כוונות או חילוץ פרמטרים, בעוד שמודלים גדולים יותר שמורים למחשבה מורכבת.
שימוש במודל נתב: אסטרטגיה דומה היא להשתמש במגוון של מודלים וגדלים. ניתן להשתמש ב-LLM/SLM או בפונקציה ללא שרת כדי לנתב בקשות על בסיס רמת המורכבות למודלים המתאימים ביותר. זה גם יסייע בהפחתת העלויות תוך וידוא ביצועים במשימות הנכונות. לדוגמה, ניתוב שאילתות פשוטות למודלים קטנים ומהירים יותר, ושימוש במודלים גדולים ויקרים רק למשימות חשיבה מורכבות.
שמירת תגובות במטמון: זיהוי בקשות ומשימות נפוצות ומתן התשובות לפני שהן עוברות במערכת הסוכנית שלך היא דרך טובה להפחית את נפח הבקשות הדומות. תוכל אפילו ליישם זרימה לזיהוי עד כמה בקשה דומה לבקשות השמורות במטמון שלך באמצעות מודלים בסיסיים יותר של AI. אסטרטגיה זו יכולה להקטין משמעותית את העלויות עבור שאלות נפוצות או תהליכי עבודה שגרתיים.
בדוגמה מחברת הדוגמה של החלק הזה, נראה דוגמאות כיצד נוכל להשתמש בכלי תצפית לניטור ולהערכת הסוכן שלנו.
הצטרף ל-Microsoft Foundry Discord כדי להיפגש עם לומדים אחרים, להשתתף בשעות פתוחות ולקבל מענה על שאלותיך בנוגע לסוכני AI.
כתב ויתור: מסמך זה תורגם באמצעות שירות תרגום אוטומטי Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.