מדריך סוכנים מותאמים
התקנה, קביעה, שיטות האירועים, דוגמה מעבודה, ובעיות נפוצות.
משתמש בפריימוורק?
LangChain, CrewAI, LlamaIndex ו-Pydantic AI מבצעים קביעה עצמית בקריאה אחת.
התקנה
failproofai-sdk ומיובאת ב-Python כ-failproofai_sdk. הרחבות פריימוורק כמו failproofai-sdk[langgraph] מתקינות את הפריימוורק עצמו; המתאמים תמיד משלוחים בגלגל הבסיס.
חיבור ל-Failproof daemon
- לוח הבקרה
- CLI
-
עבור ל-Admin → Keys וצור מפתח עם
events:add. - חבר את Failproof daemon ל-Cloud על מכונת הסוכן.
- הפעל סשן אחד עם קביעה, ואז מצא את ה-ID המדויק שלו תחת Observe → Events.
-
עבור ל-Observe → Sessions, בחר את אותה סביבה, ופתח את ה-trace שעוקב מחדש.

תצורה
הגדר באמצעות משתנה סביבה במקום:
אירועים מעומדים בזיכרון ונכתבים ברקע כל
flush_interval שניות, עם flush סופי ביציאת המפרש. תהליך שהוכה לחלוטין הולך לאבד כל מה שטרם נכתב.
זהות
כל אירוע שייך לסשן ולסוכן. ההיקפים מילאו את שניהם, אז רק לעתים קרובות אתה עובר אותם:session_id או agent_id עדיין עובדת ומנצחת. בלי קשור או העברה, הקריאה מעלה TypeError במקום פליטת אירוע ש-Cloud יודה בשקט.
הזהות רוכבת על משתני הקשר. היא עוקבת אחרי משימות
asyncio באופן אוטומטי, אך לא threads חדש — עטוף עובד ב-failproofai_sdk.propagate() או האירועים שלו נוחתים בלא חיבור.קטלוג אירועים
חמש עשרה שיטות. רובן באים בזוגות — אתה קורא לפותח, ואז לסוגר, וה-SDK מודד את הפער.
שלוש עומדות לבד:
error, human_pause, human_interrupt.
כל שדה, לכל שיטה
כל שדה, לכל שיטה
כל שיטה גם לוקחת
session_id ו-agent_id, אותם ההיקפים מילאו עבורך. כל דבר שנותר כ-None מושמט ולא נשלח כ-JSON null, וכל שיטה מחזירה None.זיווג ומשך
כלל אחד: תן לאירוע הסגירה את אותו id כמו לפותח שלו. זה מה שמזווג אותם, וזה מה שמאפשר ל-SDK למדוד את הפער.
אל תעביר
duration_ms בעצמך. ה-SDK מודד זאת, והעברה שלו מעלה ValueError.
היוצא דופן הוא model_response, כאשר רק אתה יודע את זמן ההשהיה של הספק האמיתי. העבר מספר שלם של אלפיות שנייה — float מעלה חריגות, כי העמודה היא מספר שלם של 32 ביט והיתה נוחתת ריקה אחרת.
מקרי קצה
מקרי קצה
- Ids רק צריכים להיות ייחודיים לסוג, לכל סשן. כלי וקוק יכולים לחלוק אחד; שני סשנים הפועלים בו זמנית יכולים לעשות שימוש חוזר בנתונים הלא מתנגשים.
- הם לא מתוחמים לסוכן. זוג שנפתח תחת סוכן אחד וסגור תחת אחר עדיין מתאים — שזו המקרה הנורמלי בקוד רב-סוכן.
request_idאופציונלי אבל מומלץ. בלעדיו, אירועי מודל מזווגים בסדר שהם מגיעים, אז שתי קריאות בו זמנית באותו סוכן יכולות להזדווג בשגיאה.- זוג מחולק בין תהליכים עדיין תואם בעננן, אבל ה-SDK לא יכול למדוד זאת — שום דבר בשום תהליך ראה את שני החצאים.
- לכל היותר 10,000 פותחים מחכים לסוגר בו זמנית. מעבר לזה הקדום דלק, אז דמות לא יכולה גדלה ללא קשור.
השדות שלך
כל מילת מפתח נוספת שאתה עובר מאוחסנת עם האירוע:Decimal, set, bytes, אובייקט מודל — מאוחסן כמחרוזת.
חמש השמות הבאים שמורים ודחוקים לחלוטין: timestamp, session_id, agent_id, type, environment.
מסור והאמן
- לוח הבקרה
- CLI
ב-Observe → Events, אמת ש-
agent_start קיים תחילה ו-agent_end קיים אחרון. ואז פתח Observe → Sessions ואשר שמודל, כלי, אדם, תריס ואירועי שגיאה מופיעים בסדר המיועד. השתמש בזהות הסשן כמפתח פתרון בעיות ראשוני.$FAILPROOFAI_HOME/custom-agents/events, אחרת ~/.failproofai/custom-agents/events. קובצי JSONL מוכיחים פליטת SDK; spool גדל מצביע על תצורת daemon או הפקה, בעוד spool ריק מצביע על קביעה או אורך חיי תהליך.
בדוק את ה-spool רק כאשר ה-daemon עוצר. בזמן שהוא פועל, הוא אוסף ודל כל קבוצה תוך אלפיות שנייה, אז רשימת ספרייה מתחרה בקולט ומראה הרבה פחות אירועים מאשר פלטו.

