טיפ: חדש ב-Failproof AI Observability? דף זה היא ההתייחסות לאירועי ה-SDK המלאה.
התקנה
ה-SDK מופץ ללקוחות כקובץ wheel פרטי במקום מאינדקס חבילות ציבורי. ההטמעה שלך מכסה כיצד להשיג אותו, להתקין אותו ולהצמיד אותו — דבר עם אנשי הקשר של Failproof AI שלך אם אתה צריך גישה. לאחר התקנתו, אמת שיש לך אותו:התחלה מהירה
השתלבות בקריאה אמיתית
בפועל אתה עוטף את קוד הסוכן הקיים שלך. תחום קריאת מודל עםmodel_request לפני וmodel_response אחרי, כך שני האירועים משתרעים על הבקשה האמיתית וה-Failproof AI Observability יכול להזדווג עם הם:
tool_use וtool_result, וודא שימוש באחד tool_call_id בכל הזוג.
הנה איך נראים האירועים האלה ברגע שהם מגיעים לדשבורד, מקודדים בצבע לפי סוג וניתנים לסינון לפי סביבה, סוכן וסדרת:

configure()
event.*. בטוח להשמיט; הערכות ברירת המחדל עובדות מהקופסה. כל הטיעונים הם רק מילות מפתח; העבור אותם בשם כפי שמוצג למעלה.
כאשר base_dir הוא None (ברירת המחדל), ה-SDK קורא $AGENTEYE_HOME אם הוגדר,
אחרת חוזר ל~/.agenteye. זה תואם את הרזולוציה של הקולט עצמו,
כך שמשתנה סביבה AGENTEYE_HOME יחיד מגדיר את ה-spool של אירועים משותפים לשניהם
ה-SDK והקולט.
סביבה
תווית כל אירוע עם סביבת הפריסה (production, staging, qa, canary וכו’). הגדר אותה פעם אחת; ה-SDK מצרף אותה לכל אירוע באופן אוטומטי.
אפשרות 1: דרך configure():
configure(environment=...) מנצחת על משתנה הסביבה. אם לא הגדרת אף אחד מהם, ברירת המחדל היא "dev".
ערך הסביבה מופיע כמסנן מהדרגה הראשונה בדשבורד וניתן לאחסון בשרת לשאילתות מהירות.
אזהרה: ערכי סביבה חייבים לא להכיל פסיק תחתוני,. מסננים הדשבורד משתמשים בבחירה מרובה המופרדת בפסיקים ברשת (?environment=prod,staging), כך שסביבה בשםprod,blueהיתה מחולקת לשני ערכים. אירועים עם סביבות המכילות פסיקים נדחים בזמן הצגת.
נתונים וסודיות
ה-SDK מתעד רק את השדות שאתה מעביר במפורש. הנושאים, ההודעות, תשומות וביצוע הכלים, ותוכן המודל נלכדים אך ורק מפני שאתה מעביר אותם לקריאתevent.*. שום דבר לא נקרא מתהליך שלך או נלכד במובלע. כל שדה שאתה משאיר לא מוגדר מושמט מהאירוע לחלוטין; הוא לא כתוב לדיסק.
זה הופך את ההחלפה לבחירה שלך ולאחריות שלך. אם הנושא או עומס הכלים מכיל PII או סודות שלא היית רוצה לאחסן, הסר או הכסה אותו לפני שאתה מעביר אותו לשיטת האירוע.
התייחסות לאירועים
רוב האירועים באים בזוגות התחלה/סיום שחולקים מזהה מתאם:tool_use וtool_result חולקים tool_call_id, hook_triggered וhook_completed חולקים hook_id, וhuman_wait וhuman_input חולקים input_id. פלוט את אירוע ההתחלה, בצע את העבודה, ואז פלוט את אירוע הסיום עם אותו מזהה. Failproof AI Observability תואם את הזוג ומחשב את duration_ms עבורך, כך שלעולם לא תעביר את duration_ms בעצמך.

כל השיטות גם קבלות
**kwargs שרירותי לנתונים מטא מותאם אישית (ראה שדות מותאם אישית).
event.agent_start()
מתפוצץ כאשר סוכן מתחיל עבודה.
event.agent_end()
מתפוצץ כאשר סוכן סיים את העבודה.
event.tool_use()
מתפוצץ כאשר סוכן משדל כלי. זווג עם tool_result; ה-SDK מחשב באופן אוטומטי את duration_ms.
event.tool_result()
מתפוצץ כאשר כלי חוזר. מתאם עם tool_use דרך tool_call_id.
event.model_request()
מתפוצץ ממש לפני שליחת הנושא ל-LLM.
messages מקבלים או content של מחרוזת רגילה או Anthropic בסגנון רשימה-בלוקים content. פרמטרים של דגימה (temperature, max_tokens וכו’) יכולים להיות מועברים כ-kwargs נוספים.
event.model_response()
מתפוצץ כאשר ה-LLM חוזר בתגובה.
content מקבל או מחרוזת רגילה (ספקים גנריים) או רשימה של בלוקי תוכן בסגנון Anthropic. קריאות כלים חיות בתוך content כבלוקים של {"type": "tool_use", ...}, ללא שדה נפרד של tool_calls.
event.hook_triggered()
מתפוצץ כאשר ווק דולק. זווג עם hook_completed; ה-SDK מחשב באופן אוטומטי את duration_ms.
event.hook_completed()
מתפוצץ כאשר ווק מסיים. מתאם עם hook_triggered דרך hook_id.
event.error()
מתפוצץ כאשר שגיאה לא טופלת מתרחשת.
אירועי אדם-בתוך-לולאה
אירועי אדם-בתוך-לולאה נותנים לך פיקוח על הרגעים בהם אדם צועד לביצוע הסוכן (מחכה לאישור, מספק קלט, משהה או עוצר את הסוכן). הם מאפשרים לך למדוד כמה זמן אנשים לוקחים להגיב (ה-SDK מחשב באופן אוטומטי אתduration_ms על האירועים המזווגים), בדוק את מי השהה או הפסיק סוכן, ובנה זרימות אישור וניהול שמשטחות בדשבורד.
event.human_wait()
מתפוצץ כאשר הסוכן משהה את הביצוע בהמתנה לאדם לספק קלט. זווג עם human_input; ה-SDK מחשב באופן אוטומטי את duration_ms (כמה זמן האדם לקח להגיב).
event.human_input()
מתפוצץ כאשר אדם מספק קלט והסוכן מתחדש. מתאם עם human_wait דרך input_id. duration_ms מחושב באופן אוטומטי ולא יכול להיות מעביר על ידי הקורא.
event.human_pause()
מתפוצץ כאשר אדם משהה באופן פעיל את הסוכן (למשל דרך בקרה בדשבורד). הסוכן מושעה אך לא מסתיים.
event.human_interrupt()
מתפוצץ כאשר אדם עוצר באופן פעיל את הסוכן באמצע הביצוע. בניגוד לhuman_pause, עבודת הסוכן מסתיימת במקום להיות משעה.
שדות מותאם אישית
כל טיעונים מילת מפתח נוספים מצורפים לאירוע אחרי השדות הסטנדרטיים:timestamp, type וenvironment שמורים ויגרום ValueError (Reserved field names cannot be used as custom fields: [...]) אם מועברים כשדות מותאם אישית. session_id וagent_id הם פרמטרים נדרשים בכל שיטת אירוע ולא ניתן לספק אותם פעם שנייה; Python מעלה TypeError אם אתה עושה זאת. הגדר את הסביבה עם configure(environment=...) (או המשתנה AGENTEYE_ENVIRONMENT) במקום.
שמור משא כמו JSON מובנה כאשר אתה רוצה לשאול את השדות שלהם. ערכים שה-JSON לא תומך במקום בהם — כגון datetimes, UUIDs, decimals, sets, bytes, או אובייקטי מודל — מומרים למחרוזות כדי להמשיך בהקלטה בבטחה.
כיצד אירועים כתובים
אירועים מאוחסנים בתהליך ודחפו לדיסק כל שניותflush_interval (ברירת מחדל 500 ms). כל דחיפה כותבת קובץ JSONL אחד:
שלבים הבאים
- Event stream: צפה באירועים אלה להגיע בשידור חי, מקודדים בצבע וניתנים לסינון לפי סביבה, סוכן וסדרת.
- Sessions: ראה כיצד האירועים המזווגים בנו מחדש כל הרצת סוכן כגרף ביצוע וציר זמן.

