Skip to main content
شاهد بالضبط ما فعلته وكلاء الذكاء الاصطناعي الخاصة بك في الإنتاج: كل تشغيل للوكيل، استدعاء أداة، طلب نموذج، خطاف، وتدخل بشري. يسجل Failproof AI Observability Python SDK هذا المسار من داخل كود الوكيل الخاص بك حتى تتمكن من تصحيح الأخطاء والتدقيق وتقييم ما حدث. استخدمه كلما أردت أن يراقب Failproof AI Observability وكلاءك. تحت الغطاء، يكتب SDK أحداثاً منظمة في ملفات JSONL محلية، وتلتقطها عملية جمع البيانات الخلفية وترسلها إلى المنصة تلقائياً. لا تحتاج إلى إدارة تلك الملفات بنفسك.
نصيحة: جديد في Failproof AI Observability؟ هذه الصفحة هي مرجع أحداث SDK الكامل.

التثبيت

يتم توزيع SDK على العملاء كعجلة خاصة بدلاً من فهرس حزمة عام. يغطي التكامل الخاص بك كيفية الحصول عليه وتثبيته وتثبيت إصداره — تحدث إلى جهة الاتصال Failproof AI الخاصة بك إذا كنت بحاجة إلى الوصول. بمجرد تثبيته، تأكد من أن لديك:
هل تفضل السماح لوكيل ترميز بإجراء التكامل كله؟ Python SDK Agent Skill يعرف مسار التثبيت، ويخطط نقاط الأداة، ويكتبها، ويتحقق من وصول الأحداث.

البداية السريعة

أداة استدعاء حقيقية

في الممارسة العملية، تلف كود الوكيل الموجود لديك. ضع استدعاء نموذج بين 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():
الخيار 2: عبر متغير البيئة:
الأولوية: 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 بنفسك. رسم بياني لتنفيذ جلسة على طراز git بجانب الخط الزمني للحدث، تم إعادة بناؤه من الأحداث المقترنة، مع لوحة تفصيل الأداة/النموذج/الخطاف تتطلب جميع طرق الأحداث هذين الحقلين: تقبل جميع الطرق أيضاً **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 واحد:
يراقب جامع البيانات هذا الدليل ويرفع الملفات تلقائياً. لا تحتاج إلى إدارة هذه الملفات مباشرة. يتم كتابة كل ملف بشكل ذري: يكتب SDK إلى ملف مؤقت ثم يعيد تسميته في مكانه، لذا لا يرى جامع البيانات أبداً ملف نصفي. عملية غسل نهائية تعمل أيضاً عند خروج عمليتك، لذا لم تُفقد الأحداث المخزنة مؤقتاً في الفترة الأخيرة. إذا كان جامع البيانات غير متصل، تتراكم الأحداث ببساطة كملفات على القرص وتُرسل بمجرد عودته.

الخطوات التالية

  • تدفق الأحداث: شاهد هذه الأحداث تصل مباشرة، مرمزة بألوان وقابلة للتصفية حسب البيئة والوكيل والجلسة.
  • الجلسات: شاهد كيف يعيد الأحداث المقترنة بناء كل تشغيل وكيل كرسم بياني للتنفيذ وخط زمني.