EVALUATOR_ENDPOINT على الخادم.
ملاحظة: أنت تحدد أبعاد النقاط. يمكن لمُقيّمك إرجاع أي مفاتيح رقمية يريدها؛ تخزن Observability وتتجه وتعرض كل ما تُرسله مرة أخرى.
لمحة سريعة
- اكتب مُسجّل. أنشئ خدمة HTTP صغيرة تقرأ نسخة من جلسة وترجع نقاط. تشحن Observability مرجعاً يعمل يمكنك نسخه. انظر كتابة مُقيّم مع SDK.
- وجّه Observability إليه. عيّن
EVALUATOR_ENDPOINT(وEVALUATOR_TOKENمشترك) على عملية الخادم. - راقب النقاط تصل. كل جلسة مكتملة يتم تسجيلها تلقائياً؛ تظهر النتائج على صفحة تفاصيل الجلسة، شبكة الجلسات، والقوائم المحفوظة.

كيفية العمل
عندما يُصدر Failproof AI Observability SDK حدثagent_end لجلسة، يجدول الخادم تقييماً. ثم يُرسل نسخة الحدث الكاملة إلى خدمة المُقيّم الخاصة بك، والتي يمكنها إما:
-
إرجاع النتيجة مباشرة مع
{"status":"done", "scores":{...}, "reasoning":{...}, "summary":"..."}. تُلحق النتيجة بجدول تقييم الجلسة.reasoningوsummaryاختياريين. -
تأجيل مع
{"status":"pending", "job_id":"abc-123"}. ثم تستدعي ObservabilityGET {EVALUATOR_ENDPOINT}/evaluate/abc-123حتى يُرجع مُقيّمك{"status":"done", ...}أو{"status":"error", "error":"..."}. وتيرة الاستقصاء لكل وظيفة: قد تتضمن استجابةpendingnext_poll_secsللتجاوز؛ وإلا فتستخدم Observability قيمةdefault_poll_interval_secsمنGET /config؛ وإلا يعود الخادم إلىEVALUATOR_POLLING_INTERVAL_SECS(افتراضي 10 ثانية). جميع القيم محصورة في [1 ثانية، 1 ساعة].
agent_end (على سبيل المثال، عملية وكيل منهارة): قد يُرجع GET /config الخاص بالمُقيّم {"inactivity_timeout_secs": 1800}، وستقيّم Observability أي جلسة خاملة لتلك المدة. عيّن الحقل إلى null أو احذفه لتعطيل هذا البديل.
خط الأنابيب عديم التأثير تماماً عندما يكون EVALUATOR_ENDPOINT غير محدد.
يمكن للجلسة تجميع تقييمات نهائية متعددة بمرور الوقت: كل حدث agent_end (وكل إعادة تقييم يدوية من القوائس) تُلحق صف تقييم جديد. هذه هي الطريقة المدعومة لتقييم محادثة مستأنفة: ينهي المستخدم وكيلاً، ويعود لاحقاً، يُرسل المزيد من الأحداث، ينهي الوكيل مرة أخرى، ويعمل تقييم ثانٍ ضد النسخة الكاملة المحدثة. تُصيّر القوائس أحدث تقييم كعنوان رئيسي والتقييمات السابقة كجدول زمني قابل للطي. بينما يعمل تقييم واحد لجلسة، تُتجاهل أحداث agent_end الإضافية لتلك الجلسة؛ الحدث التالي بعد انتهاء التقييم الجاري سيُدرج تقييماً جديداً كالمعتاد.
يُعاد تفعيل بديل عدم النشاط على الجلسات المستأنفة أيضاً: إذا وصلت أحداث جديدة بعد تقييم نهائي سابق وذهبت الجلسة خاملة بعد inactivity_timeout_secs، يُدرج تقييم جديد في الطابور.
الأعطال العابرة (5xx، 429، انتهاءات المهلة الزمنية، أخطاء الشبكة) تُعاد محاولتها مع تراجع أسي حتى EVALUATOR_MAX_ATTEMPTS؛ استجابات 4xx نهائية. Observability آمن للتشغيل مع خوادم متعددة مقسمة أفقياً؛ يُقسم العمل بحيث لا تُرسل نفس الجلسة مرتين معاً.
عقد HTTP
كل مسار مصادق يستخدم مصادقة رمز الحامل. يجب أن تكون نفس القيمة مُعدة على كلا الجانبين:- خادم Observability: متغير env
EVALUATOR_TOKEN - خدمة المُقيّم: معدة بنفس الطريقة (يقرأ
EVALUATOR_TOKENSDKagenteye-evaluatorحسب الاتفاقية)
EVALUATOR_TOKEN غير محدد، لا يُرسل الخادم رأس Authorization؛ قد يقبل المُقيّم طلبات مجهولة، وهذا جيد لشبكة داخلية فقط لكن غير موصى به على الإنترنت العام.
المسارات التي يجب أن يخدمها المُقيّم
جسم EvalRequest المُرسل من الخادم
أشكال الاستجابة
متزامن (مكتمل):reasoning (خريطة تبرير لكل نقطة) و summary (سرد واحد شامل) كلاهما اختياري. يجب أن تعكس المفاتيح في reasoning المفاتيح في scores؛ تُصيّر القوائس كل إدخال مباشرة تحت شريط النقاط الخاص به. المُقيّمون الأقدم الذين يُرجعون scores فقط يستمرون في العمل بدون تغيير؛ reasoning و summary ببساطة يُقرآن كـ null وتُحذف تسهيلات الواجهة المقابلة.
غير متزامن (مؤجل):
next_poll_secs اختياري؛ إذا تم حذفه يعود الخادم إلى default_poll_interval_secs الخاص بالمُقيّم من /config، ثم إلى متغير env EVALUATOR_POLLING_INTERVAL_SECS الخاص به.
خطأ نهائي من جانب المُقيّم:
error نهائي للجلسة.
كتابة مُقيّم مع SDK
لا يجب أن تُطبق عقد HTTP باليد. حزمةagenteye-evaluator Python توفر لك غلاف FastAPI مكتوب يتعامل مع المصادقة والتوجيه وأشكال الطلب/الاستجابة لك.
تشحن Failproof AI Observability أيضاً مُقيّم مرجعي يعمل يسجل helpfulness و tool_efficiency و factuality من شكل النسخة. انسخه كنقطة بداية وبدّل منطقك الخاص: قاضٍ LLM، محرك قواعد، أي شيء يناسب معيار الجودة لديك.
مُقيّم قابل للحياة الدنيا:
app يعمل تحت أي خادم ASGI، لذا uvicorn module:app يبدئه.
بالنسبة للمُقيّمين الذين يحتاجون تأجيل عمل مكلف، أرجع JobPending بدلاً من ذلك وسجل معالج @app.job_lookup؛ يستقصي خادم Observability GET /evaluate/{job_id} حتى تُرجع حالة نهائية أو تنقضي قيمة حد EVALUATOR_MAX_POLL_DURATION_SECS (افتراضي 1 ساعة).
مرجع الـ API الكامل والنمط غير المتزامن وشماء الحدث موثقة في قراءة agenteye-evaluator SDK.
تشغيل مُقيّمك
المُقيّم هو خدمتك — لا تشحن Failproof AI Observability مُقيّماً افتراضياً، لذا تبني وتشغل أينما تشغل خدماتك. يعمل تحت أي خادم ASGI (على سبيل المثالuvicorn my_evaluator:app؛ خدم المسارات /health و /config و /evaluate من عقد HTTP، ثم وجّه الخادم إليه (انظر تكوين الخادم).
بمجرد وصول المُقيّم، GET /health يُرجع {"status":"ok"}. بعد انتهاء الوكيل من البداية إلى النهاية، GET /evaluations على الخادم يُرجع صفاً مع status: "done" والنقاط التي أنتجها مُقيّمك.
تكوين الخادم
عيّن على عملية الخادم:
لتفعيل التسجيل التلقائي، عيّن كلاً من
EVALUATOR_ENDPOINT و EVALUATOR_TOKEN على الخادم، ثم أعد تشغيله لاستقبال التغيير. مع عدم تعيين EVALUATOR_ENDPOINT يبقى خط الأنابيب عديم التأثير.
أزرار المعايرة أعلاه اختيارية؛ عيّن متغيرات البيئة المقابلة على الخادم فقط إذا اضطررت لتجاوز الافتراضيات.
مرجع API
التصفية حسب نطاق النقاط: score_filters
يقبل GET /evaluations معامل score_filters اختياري يضيق النتائج حسب القيم الرقمية داخل كائن scores. المعامل هو قائمة مفصولة بفواصل من إدخالات key:min..max؛ يمكن حذف أي من الحد. تجمع الإدخالات المتعددة مع AND منطقي. تُستثنى الصفوف حيث المفتاح المسمى غائب أو غير رقمي. قد يحمل طلب واحد 20 إدخال تصفية على الأكثر؛ تجاوز ذلك يُرجع HTTP 400.
أمثلة:
/evaluations هذه الحقول:
الصلاحيات
يحصل المسؤول التمهيدي (
ADMIN_KEY و ADMIN_EMAIL) تلقائياً على هذه.
عرض النتائج
/sessions/<id>: جدول زمني للأحداث + شريط أيمن يعرض نقاط الجلسة وأي خطأ من محاولة الإرسال. إذا كان مفتاحك يملكevaluations:trigger، يظهر زر إعادة تقييم بجانب زر التصدير، مفيد للجلسات التي لم تُصدر أبداًagent_end، أو لتحديث النقاط بعد نشر مُقيّم جديد. تستقصي القوائس النتيجة الجديدة وتحدّث الشريط الأيمن عند وصولها./sessions: شبكة جلسات قابلة للتصفية؛ عمود النقاط يعرض حالة تقييم كل جلسة ونقاطها في لمحة./dashboards: عروض صحة تقييم محفوظة (انظر القوائس أدناه).

القوائس
تسمح صفحة القوائس (/dashboards) بحفظ مزيج من تصافي التقييم كعرض مسمى وقابل لإعادة الاستخدام ومراقبة كيفية تطور تلك الشريحة من التقييمات في لمحة. تُشاركت القوائس عبر منظمتك بأكملها؛ يرى الجميع لديهم dashboards:read نفس المجموعة.
تثبت كل لوحة:
- التصافي: نفس الضوابط كصفحة الجلسات: البيئة والحالة والوكيل ونافذة زمنية متدرجة وتصافي نطاق النقاط (
key:min..max). - تشكيل عرض: مفاتيح النقاط التي تميز، أعتاب صحة أخضر/كهرماني/أحمر، أي لوحات تعرض، وما إذا كنت تطوي إلى أحدث تقييم لكل جلسة.
GET /evaluations/aggregate)، لذا تكون الأرقام دقيقة بدلاً من أخذ عينات.

dashboards:read و evaluations:read؛ الإنشاء والتعديل يحتاج dashboards:write؛ الحذف يحتاج dashboards:delete. يستقبل المسؤول التمهيدي جميع هذه تلقائياً.
استكشاف الأخطاء والإصلاح
توجد جلسات لكن لا تُنشأ تقييمات. تأكد من تعيينEVALUATOR_ENDPOINT على عملية الخادم، وأن الخادم والمُقيّم يتشاركان نفس قيمة EVALUATOR_TOKEN، وأن نقطة المسار /health الخاصة بالمُقيّم قابلة للوصول من الخادم. مع عدم تعيين EVALUATOR_ENDPOINT خط الأنابيب عديم التأثير.
تقييمات قيد الطيران تتراكم. استعلم GET /evaluation-jobs لترى طابور الطيران. فتش attempt_count و next_attempt_at و last_error على كل صف. الأسباب الشائعة: خدمة المُقيّم غير قابلة للوصول أو تُرجع 5xx (أعيدت محاولتها مع تراجع)، EVALUATOR_TOKEN خاطئ (401 نهائي)، أو مُقيّم غير متزامن يُرجع pending إلى الأبد (انظر أدناه).
اكتملت الجلسات لكن لا تقييم نهائي. استعلم GET /evaluation-jobs?status=polling؛ النتيجة قد لا تزال قيد الطيران. إذا علقت وظيفة في pending، يواجه الخادم مشكلة في الوصول إلى المُقيّم؛ تحقق من أن المُقيّم مرفوع وأن EVALUATOR_TOKEN يطابق.
HTTP 401 from evaluator: invalid bearer token. EVALUATOR_TOKEN على الخادم لا يطابق القيمة التي عُدت خدمة المُقيّم معها. يجب أن تكون متطابقة.
مُقيّم غير متزامن يُرجع pending للأبد. يستقصي الخادم GET /evaluate/{job_id} حتى يُرجع المُقيّم done أو error، أو حتى تنقضي EVALUATOR_MAX_POLL_DURATION_SECS (افتراضي 1 ساعة). بعد الحد يُسجل التقييم كـ timeout ويُزال من طابور الطيران. ارفع EVALUATOR_MAX_POLL_DURATION_SECS إذا كان مُقيّمك بشكل شرعي يحتاج أكثر من الافتراضي.
الخطوات التالية
- مهارة وكيل المُقيّم: اطلب من وكيل ترميز أن يصمم أبعادك ضد جلسات حقيقية وينشئ هذه الخدمة لك.
- Python SDK: أصدر أحداث
agent_endالتي تُثير التسجيل. - مفاتيح API: صلاحيات
evaluations:readوevaluations:trigger. - عمليات التدقيق: ميزة جودة مؤتمتة أخرى من Observability، للمراجعة المستندة إلى السياسة.

