דלג לתוכן הראשי
AgentEye Python SDK נותן לך נראות מלאה להתנהגות הסוכנים שלך (כל הרצת סוכן, קריאת כלי, בקשת מודל, hook, והתערבות אדם) כדי שתוכל לבצע ניפוי שגיאות, ביקורת והערכה. הוא מחבר את קוד הסוכן שלך על ידי כתיבת אירועים מובנים לקבצי JSONL מקומיים; דימון האספן קוטף אלה ומשדר אותם לפלטפורמה באופן אוטומטי.

התקנה

הורד את wheel מ-GitHub Releases באמצעות AGENTEYE_TOKEN שלך. אם עדיין אין לך token, ראה GitHub Token Setup לשלבי הגדרה ולהרשאות נדרשות. שימוש ב-gh CLI + pip:
שימוש ב-gh CLI + uv:
שימוש ב-curl (ללא gh CLI):

התחלה מהירה


configure()

קרא פעם אחת לפני כל קריאה event.*. בטוח להשמיט; ברירות המחדל עובדות מחוץ לתיבה. כל הארגומנטים הם keyword-only; העבר אותם לפי שם כפי שמוצג למעלה. כאשר base_dir הוא None (ברירת המחדל), ה-SDK קורא $AGENTEYE_HOME אם הוגדר, אחרת חוזר ל-~/.agenteye. זה תואם את ההחלטה שלעצמו של האספן, כך שמשתנה AGENTEYE_HOME אחד מסביבה מגדיר את ה-spool המשותף של האירועים עבור ה-SDK והאספן, נדרש עבור פריסות sidecar / single-pod כאשר שתי התהליכים חייבים להסכים על נתיב ה-spool.

Environment

תייג כל אירוע עם environment פריסה (production, staging, qa, canary, וכו’). הגדר פעם אחת; ה-SDK מצרף אותה לכל אירוע באופן אוטומטי. אפשרות 1: דרך configure():
אפשרות 2: דרך משתנה סביבה:
עדיפות: configure(environment=...) מנצח על משתנה הסביבה. אם שום דבר לא הוגדר, ברירת המחדל היא "dev". ערך ה-environment מופיע כמסנן מדרגה ראשונה בלוח המחוונים ומאוחסן כעמודה מודדת על השרת לשאילתות מהירות. הגבלה: ערכי environment לא חייבים להכיל פסיק , ממשי. מסנני לוח המחוונים משתמשים בבחירה מרובה מופרדת בפסיקים על החוט (?environment=prod,staging), כך שenv בשם prod,blue היה מחולק לשני ערכים. אירועים עם environments המכילים פסיקים מדחים בזמן הספיגה.

הפניה לאירועים

כל שיטות אירוע דורשות שני שדות אלה:
שדהסוגתיאור
session_idstrמזהה את הרצת הסוכן ברמה העליונה
agent_idstrמזהה איזה סוכן בתוך ה-session פרסם את האירוע
כל השיטות מקבלות גם **kwargs שרירותיות עבור מטא-נתונים מותאמים אישית (ראה Custom Fields).

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()

פולט ממש לפני שליחת prompt ל-LLM.
ערכי messages מקבלים או content מחרוזת פשוטה או Anthropic-style list-of-blocks content. פרמטרי דגימה (temperature, max_tokens, וכו’) יכולים להיות מועברים כ-kwargs נוסף.

event.model_response()

פולט כאשר LLM חוזר עם תגובה.
content מקבל או מחרוזת פשוטה (ספקים גנריים) או רשימה של Anthropic-style content blocks. קריאות כלי חיות בתוך content כ-{"type": "tool_use", ...} blocks, ללא שדה tool_calls נפרד.

event.hook_triggered()

פולט כאשר hook שורה. זוגי עם hook_completed; ה-SDK מחשב אוטומטית duration_ms.

event.hook_completed()

פולט כאשר hook מסתיים. מתואם עם hook_triggered דרך hook_id.

event.error()

פולט כאשר שגיאה לא מטופלת מתרחשת.

אירועי Human-in-the-Loop

אירועי human-in-the-loop נותנים לך פיקוח על הרגעים שבהם אדם נכנס להוצאה לפועל של הסוכן (המתנה לאישור, הנמקת קלט, השהייה, או עצירת הסוכן). הם מאפשרים לך למדוד כמה זמן אדם לוקח כדי להגיב (ה-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, עבודת הסוכן מסתיימת ולא משעה.

שדות מותאמים אישית

כל kwargs נוסף מצורף לאירוע לאחר השדות הסטנדרטיים:
timestamp, type, ו-environment שמורים והעלו ValueError (Reserved field names cannot be used as custom fields: [...]) אם מועברים כשדות מותאמים אישית. session_id ו-agent_id הם פרמטרים נדרשים בכל שיטת אירוע ולא ניתן לספק אותם בפעם שנייה; Python מעלה TypeError אם אתה עושה זאת. הגדר את ה-environment עם configure(environment=...) (או משתנה AGENTEYE_ENVIRONMENT) במקום זאת.

כיצד אירועים נכתבים

אירועים מאוגרים בתהליך ומשטפים לדיסק כל flush_interval שניות (ברירת מחדל 500 ms). כל flush כותב קובץ JSONL אחד:
האספן צפה בתיקייה זו ועלויים קבצים באופן אוטומטי. אתה לא צריך לנהל קבצים אלה ישירות.