نصيحة: جديد في Failproof AI Observability؟ هذه الصفحة هي مرجع أحداث SDK الكامل.
التثبيت
يتم توزيع SDK على العملاء كعجلة خاصة بدلاً من فهرس حزمة عام. يغطي التكامل الخاص بك كيفية الحصول عليه وتثبيته وتثبيت إصداره — تحدث إلى جهة الاتصال 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 واحد يحتوي على مجلد حدث مشترك لكل من
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. يمكن تمرير معاملات أخذ العينات (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 (لا يمكن استخدام أسماء الحقول المحجوزة كحقول مخصصة: [...]) إذا تم تمريرها كحقول مخصصة. session_id و agent_id معاملات مطلوبة في كل طريقة حدث ولا يمكن توفيرها مرة ثانية؛ يرفع Python TypeError إذا فعلت. اضبط البيئة باستخدام configure(environment=...) (أو متغير AGENTEYE_ENVIRONMENT) بدلاً من ذلك.
احفظ الحمولات كـ JSON منظمة عندما تريد الاستعلام عن حقولها. القيم التي لا يدعمها JSON بشكل أصلي — مثل التواريخ، UUIDs، الكسور العشرية، المجموعات، البايتات، أو كائنات النموذج — يتم تحويلها إلى سلاسل نصية بحيث يستمر التسجيل بأمان.
كيف يتم كتابة الأحداث
يتم تخزين الأحداث مؤقتاً داخل العملية وتُغسل على القرص كلflush_interval ثانية (500 ملليثانية افتراضياً). كل عملية غسل تكتب ملف JSONL واحد:
الخطوات التالية
- تدفق الأحداث: شاهد هذه الأحداث تصل مباشرة، مرمزة بألوان وقابلة للتصفية حسب البيئة والوكيل والجلسة.
- الجلسات: شاهد كيف يعيد الأحداث المقترنة بناء كل تشغيل وكيل كرسم بياني للتنفيذ وخط زمني.

