EVALUATOR_ENDPOINT בשרת.
הערה: אתה מגדיר את ממדי הציון. ההערכה שלך יכולה להחזיר כל מפתחות מספריים שהיא רוצה; Observability אחסן, טרנד ומציג כל מה שאתה שולח חזרה.
במבט חטוף
- כתוב מדרג. הקם שירות HTTP קטן שקורא תמליל של סשן ומחזיר ציונים. Observability משלח התייחסות עובדת שאתה יכול להעתיק. ראה כתיבת מעריך עם ה-SDK.
- הצביע ל-Observability על זה. קבע את
EVALUATOR_ENDPOINT(ו-EVALUATOR_TOKENמשותף) בתהליך השרת. - צפה בציונים שנחתו. כל סשן שהסתיים מדורג באופן אוטומטי; התוצאות מופיעות בעמוד פרטי הסשן, בגריד הסשנים ובלוחות שנשמרו.

איך זה עובד
כאשר Failproof AI Observability SDK פולט אירועagent_end לסשן, השרת מתכנן הערכה. לאחר מכן הוא עושה POST של תמליל האירוע המלא לשירות ההערכה שלך, שיכול:
-
להחזיר את התוצאה בשורה עם
{"status":"done", "scores":{...}, "reasoning":{...}, "summary":"..."}. התוצאה מנוספת לציר הזמן של ההערכה של הסשן.reasoningו-summaryהם אופציונליים. -
לדחות עם
{"status":"pending", "job_id":"abc-123"}. Observability ואז קוראGET {EVALUATOR_ENDPOINT}/evaluate/abc-123עד שההערכה שלך מחזירה{"status":"done", ...}או{"status":"error", "error":"..."}. קצב הסקר הוא לכל עבודה: תגובתpendingעשויה לכלולnext_poll_secsכדי לדרוג; אחרת Observability משתמש בערךdefault_poll_interval_secsמ-GET /config; אחרת השרת חוזר אלEVALUATOR_POLLING_INTERVAL_SECS(ברירת מחדל 10 שניות). כל הערכים מוגבלים ל-[1 שניה, 1 שעה].
agent_end (לדוגמה, תהליך סוכן שהתרסק) יכולים גם להיאסף: GET /config של ההערכה עשוי להחזיר {"inactivity_timeout_secs": 1800}, וה-Observability יעריך כל סשן שנשמר בחוסר פעילות לפי זמן זה. קבע את השדה ל-null או השמיט אותו כדי להשבית את הנופל החלופי.
הצינור הוא כל ל-no-op כאשר EVALUATOR_ENDPOINT לא מוגדר.
סשן יכול להצטבר הערכות מסוף מרובות לאורך זמן: כל אירוע agent_end (וכל הערכה חוזרת ידנית מלוח המחוונים) מוסיף שורת הערכה חדשה. זוהי הדרך הנתמכת להערכת שיחה שנעתקה: משתמש מסיים סוכן, חוזר מאוחר יותר, שולח עוד אירועים, מסיים את הסוכן שוב, והערכה שנייה רצה כנגד התמליל המעודכן המלא. לוח המחוונים משרטט את ההערכה העדכנית ביותר כהכותרת והערכות הקודמות כציר זמן ניתן לצמצום. בזמן שהערכה אחת פועלת לסשן, אירועי agent_end נוספים עבור אותו סשן מתעלמים; האחד הבא לאחר השלמת ההערכה הפועלת יתור הערכה טרייה כרגיל.
הנופל החלופי של חוסר פעילות מחדש בסשנים שנעתקו: אם אירועים חדשים מגיעים לאחר הערכה סוף קודמת וסשן ואז הולך ללא פעילות בעבר inactivity_timeout_secs, הערכה טרייה מתורה.
כשלים חולפים (5xx, 429, timeouts, שגיאות רשת) מנסים שוב עם backoff אקספוננציאלי עד EVALUATOR_MAX_ATTEMPTS; תגובות 4xx הן סופיות. Observability בטוח להריץ עם מספר מקבלות שרת במרובה; העבודה מחולקת כך שאותו סשן לעולם לא יישלח פעמיים במקביל.
חוזה HTTP
כל מסלול מאומת משתמש ב-Bearer Token Auth. אותו ערך חייב להיות מוגדר משני הצדדים:- שרת Observability: משתנה env
EVALUATOR_TOKEN - שירות Evaluator: מוגדר באותו אופן (ה-SDK
agenteye-evaluatorקוראEVALUATOR_TOKENלפי מוסכמה)
EVALUATOR_TOKEN לא מוגדר, השרת לא שולח כותרת Authorization; ההערכה עשויה לקבל בקשות אנונימיות, שזה בסדר לרשת פנימית בלבד אך מודחה באינטרנט הציבורי.
נתיבים שההערכה חייבת להגיש
גוף EvalRequest שנשלח על ידי השרת
צורות תגובה
סינכרוני (בוצע):reasoning (מפת הנמקה לכל ציון) ו-summary (נרטיב אחד-פסקה כולל) שניהם אופציונליים. מפתחות ב-reasoning צריכים לשקף מפתחות ב-scores; לוח המחוונים משרטט כל ערך בשורה מתחת לסרגל הציון שלו. הערכות ישנות יותר שמחזירות רק scores ממשיכות לעבוד ללא שינוי; reasoning ו-summary פשוט קוראים כ-null ויכולות ה-UI המתאימות מושמטות.
אסינכרוני (דחוי):
next_poll_secs הוא אופציונלי; אם מושמט השרת חוזר ל-default_poll_interval_secs של ההערכה מ-/config, ואז ל-משתנה ה-env EVALUATOR_POLLING_INTERVAL_SECS שלו.
שגיאה סופית בצד המעריך:
error סופי לסשן.
כתיבת מעריך עם ה-SDK
אתה לא חייב ליישם את חוזה HTTP ביד. החבילה Pythonagenteye-evaluator נותנת לך ליפוף FastAPI מוקלד שמטפל בהתאמה, ניתוב וצורות בקשה/תגובה בשבילך.
Failproof AI Observability גם משלח מעריך התייחסות עובד שמדרג helpfulness, tool_efficiency ו-factuality מצורת התמליל. העתק אותו כנקודת התחלה וחליף בלוגיקה שלך: שופט LLM, מנוע כללים, כל מה שמתאים לסטנדרט האיכות שלך.
מעריך ברור ברירת מחדל:
app פועל תחת כל שרת ASGI, כך שתחילת uvicorn module:app.
עבור הערכות שצריכות לדחות עבודה יקרה, החזור ב-JobPending בעוד רושם @app.job_lookup handler; שרת Observability סוקר GET /evaluate/{job_id} עד שתחזיר סטטוס סופי או עד שהמכסה EVALUATOR_MAX_POLL_DURATION_SECS (ברירת מחדל 1 שעה) חולפת.
ה-API reference המלא, דפוס אסינכרוני וסכמת אירועים תועדו ב-README של SDK ה-agenteye-evaluator.
הרצת המעריך שלך
ההערכה היא השירות שלך — Failproof AI Observability לא משלח מעריך ברירת מחדל, כך שאתה בונה והרץ אותו במקום שבו אתה מריץ את השירותים שלך. הוא פועל תחת כל שרת ASGI (לדוגמהuvicorn my_evaluator:app); הגיש את נתיבי /health, /config ו-/evaluate מ-חוזה HTTP, ואז הצביע את השרת אליו (ראה הגדרת השרת).
ברגע שההערכה ניתנת להשגה, GET /health מחזיר {"status":"ok"}. לאחר הרצה של סוכן מקצה לקצה, GET /evaluations בשרת מחזיר שורה עם status: "done" וציונים שההערכה שלך ייצרה.
הגדרת השרת
קבע בתהליך השרת:
כדי להפעיל דירוג אוטומטי, קבע הן את
EVALUATOR_ENDPOINT והן את EVALUATOR_TOKEN בשרת, ואז הפעל מחדש כדי להרים את השינוי. עם EVALUATOR_ENDPOINT לא מוגדר הצינור נשאר no-op.
כפתורי הכיול לעיל הם אופציונליים; קבע משתנים סביבה מתאימים בשרת רק אם אתה צריך לדרוג את ברירות המחדל.
API reference
סינון לפי טווח ציון: score_filters
GET /evaluations מקבל פרמטר אופציונלי score_filters שמצמצם תוצאות לפי ערכים מספריים בתוך scores object. הפרמטר הוא רשימה המופרדת בפסיקים של ערכי key:min..max; כל קשר עשוי להיות מושמט. כניסות מרובות משלבות עם AND לוגי. שורות כאשר המפתח הנקוב חסר או לא מספרי מודדות. בקשה עשויה להכיל לכל היותר 20 ערכי סינון; חריגה מזה מחזיר HTTP 400.
דוגמאות:
/evaluations יש שדות אלה:
הרשאות
ה-bootstrap admin (
ADMIN_KEY, ADMIN_EMAIL) מקבל אלה באופן אוטומטי.
צפייה בתוצאות
/sessions/<id>: אירועים ציר זמן + פס ימני המציג את ציוני הסשן וכל שגיאה מניסיון ה-dispatch. אם המפתח שלך כוללevaluations:trigger, כפתור re-evaluate מופיע ליד כפתור ה-export, שימושי לסשנים שמעולם לא פלטוagent_end, או להרעיש ציונים לאחר פריסת מעריך חדש. לוח המחוונים סוקר את התוצאה החדשה ומעדכן את פס הימני כאשר הוא נוחת./sessions: גריד סשנים ניתן לסינון; עמודת הציון מציגה את סטטוס ההערכה וציונים של כל סשן בהצצה./dashboards: צפיות בריאות eval שמורה (ראה לוחות להלן).

לוחות
דף Dashboards (/dashboards) מאפשר לך שמירה של שילוב של סינני הערכה כתצוגה בשם וניתנת לשימוש חוזר וצפייה כיצד האות פרוסה של הערכות עושה בהצצה. לוחות הם משותפים בכל הארגון שלך; כולם עם dashboards:read רואים את אותה סט.
כל לוח משמירה:
- סינונים: אותם בקרים כמו עמוד הסשנים: סביבה, סטטוס, סוכן, חלון זמן מתגלגל וסינני טווח ציון (
key:min..max). - תצורת תצוגה: איזה מפתחות ציון לתכונה, סף בריאות ירוק/כהה/אדום, איזה פנלים להציג והאם לצמצם לאחרון הערכה לכל סשן.
GET /evaluations/aggregate), כך המספרים מדויקים ולא דגומים.

dashboards:read והן evaluations:read; יצירה ועריכה צריכה dashboards:write; מחיקה צריכה dashboards:delete. ה-bootstrap admin מקבל את כל אלה באופן אוטומטי.
פתרון בעיות
סשנים קיימים אך לא נוצרות הערכות. אשר כיEVALUATOR_ENDPOINT מוגדר בתהליך השרת, שהשרת וההערכה משתפים אותו ערך EVALUATOR_TOKEN וכי נקודת הסוף /health של ההערכה ניתנת להשגה מהשרת. עם EVALUATOR_ENDPOINT לא מוגדר הצינור הוא no-op.
הערכות בטיסה צוברות. שאילתה GET /evaluation-jobs כדי לראות את התור בטיסה. בדוק את attempt_count, next_attempt_at ו-last_error על כל שורה. סיבות נפוצות: שירות ההערכה לא ניתן להשגה או מחזיר 5xx (מנסה שוב עם backoff), EVALUATOR_TOKEN שגוי (401 סופי) או מעריך אסינכרוני שמחזיר pending לנצח (ראה להלן).
סשנים הושלמו אך לא הערכה סופית. שאילתה GET /evaluation-jobs?status=polling; התוצאה עדיין עשויה להיות בטיסה. אם עבודה תקועה ב-pending, לשרת יש בעיה להשגת ההערכה; בדוק שהערכה מעלה וכי EVALUATOR_TOKEN משחק.
HTTP 401 from evaluator: invalid bearer token. ה-EVALUATOR_TOKEN בשרת לא משחק עם הערך שהשירות ההערכה מוגדר איתו. הם חייבים להיות זהים.
מעריך אסינכרוני מחזיר pending לנצח. השרת סוקר GET /evaluate/{job_id} עד שההערכה מחזירה done או error, או עד ש-EVALUATOR_MAX_POLL_DURATION_SECS (ברירת מחדל 1 שעה) חולפת. לאחר הכובע ההערכה מוקלטת כ-timeout והוסרת מתור הבטיסה. הרם את EVALUATOR_MAX_POLL_DURATION_SECS אם ההערכה שלך בחוקיות צריכה יותר מברירת המחדל.
שלבים הבאים
- מיומנות סוכן Evaluator: יש לסוכן קידוד עיצוב הממדים שלך כנגד סשנים אמיתיים וביצוע שירות זה בשבילך.
- Python SDK: פלטו את אירועי
agent_endשמפעילים דירוג. - API keys: הרשאות
evaluations:readו-evaluations:trigger. - Audits: תכונת בריאות אוטומטית נוספת של Observability, לבדיקה מבוססת מדיניות.

