Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/admin/keys-and-permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ The two permissions required by a connected Failproof AI machine are independent
- `events:add` sends events and session data.
- `policies:pull` retrieves assigned policy deployments.

To run [Jev policies through FailproofAI Cloud](/policies/jev), select the **machine** key preset. It adds `jev:evaluate` to both permissions above. Cloud Jev cannot run with a key that lacks it.

Key secrets are shown when created or regenerated. Store them in a secret manager and rotate them without reusing an operator's interactive credentials.

## Permission catalog
Expand All @@ -64,6 +66,7 @@ Key secrets are shown when created or regenerated. Store them in a secret manage
| Audits | `audits:read`, `audits:write` |
| Policies | `policies:read`, `policies:write`, `policies:pull` |
| Usage | `usage:read` |
| Jev | `jev:evaluate` (requires `events:add` and `policies:pull`) |

`orgs:admin` is reserved for the instance operator and cannot be granted to an organization key or ordinary member. Retired `incidents:*` and `alerts:ack` tokens are accepted for compatibility and normalize to current `issues:*` permissions.

Expand Down
28 changes: 28 additions & 0 deletions docs/ar/evaluations/jev.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: "تقييمات Jev"
description: "استخدم Jev لتصحيح جلسة منتهية مقابل سؤال بإجابات معروفة."
icon: "list-checks"
---

يقرأ تقييم Jev **جلسة منتهية** ويعطي درجة من 0 إلى 1. استخدمه عندما تكون الإجابة معروفة مسبقاً، مثل "هل أعرب العميل عن الاستعجالية؟" أو "ما مدى إحباط العميل؟" يساعدك في العثور على أنماط عبر عمليات التشغيل؛ لا يوقف استدعاء أداة. بالنسبة للقرارات المتخذة **قبل** تشغيل أداة، استخدم [سياسات Jev](/ar/policies/jev).

## إنشاء واحد في لوحة التحكم

1. افتح **Analyze → eval authoring** وحدد **new eval**.
2. صف سؤالاً واحداً وإجاباته المحتملة. على سبيل المثال: "هل وعد الوكيل برد المبلغ قبل التحقق من سياسة الاسترجاع؟ أجب بنعم أو لا." حدد **draft** واراجع أن النتيجة هي درجة مصنف.
3. [اختبره](/ar/evaluations/test) على جلسات حديثة، ثم [انشره](/ar/evaluations/deploy). يتم تصحيح الجلسات المكتملة الجديدة؛ [أملأ السجل السابق](/ar/evaluations/deploy#score-sessions-you-already-have) إذا كنت بحاجة أيضاً إلى السجل التاريخي.

![نموذج تأليف التقييم المشترك، حيث تصف سؤالاً بإجابة ثابتة، وتراجع المسودة، وتنشر بعد الاختبار. المثال المعروض هو تقييم برمجي؛ سؤال Jev يستخدم نفس مسار التأليف.](/images/dashboard/eval-authoring-draft.png)

يمكن للمساعد الاختيار بين الكود وتصنيف Jev و[judge](/ar/evaluations/judge). تحقق من اختياره قبل النشر. يعطي Jev درجة بدون استدلال نثري؛ اختر judge عندما تحتاج إلى شرح. راجع [مرجع تقييم Jev](/ar/reference/jev-evaluations) لأنواع الأسئلة وحدود الدرجات.

## اقرأ الدرجات

افتح **Observe → Evaluations** لرسم النتيجة حسب الوكيل والوقت. من الطرفية، يمكن لـ Cloud CLI قراءة نفس النتائج:

```bash
fp evals --since 7d
fp evals --aggregate --since 7d
```

يقرأ Cloud CLI النتائج؛ يحدث التأليف والنشر في لوحة التحكم. راجع [مرجع Cloud CLI](/ar/reference/cloud-cli#evaluations) للحصول على المرشحات.
91 changes: 91 additions & 0 deletions docs/ar/evaluations/judge.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
title: "قضاة نماذج اللغة"
description: "قيّم الجلسات على أشياء لا يستطيع الكود قياسها — الصحة، النبرة، ما إذا كان الوكيل يتبع سياسة — من خلال وصف ما يبدو عليه الجيد والسماح لنموذج بقراءة المحادثة."
icon: "scale"
---

يمكن للتقييم المستضاف في Python أن يحسب ويقارن: كم عدد استدعاءات الأدوات، كم عدد الأخطاء، كم من الوقت استغرقت الجلسة. لكنه لا يمكنه أن يخبرك ما إذا كانت الإجابة *صحيحة*، أو ما إذا كانت الرد فظاً، أو ما إذا تحقق الوكيل من سياسة قبل التصرف.

**قاضي نموذج اللغة** يمكنه ذلك. أنت تصف ما يبدو عليه الجيد بلغة عادية، ونموذج يقرأ الجلسة ويعيد درجة من 0 إلى 1 مع تعليل له.

<Note>
القاضي يكلف استدعاء نموذج واحد لكل جلسة يعمل عليها، والتقييم البرمجي لا يكلف شيئاً. استخدم قاضياً فقط للأسئلة التي تحتاج إلى *فهم* المحادثة — وأعطه شرطاً، حتى يعمل على الجلسات التي يتعلق بها السؤال فعلاً.
</Note>

## أيهما أريد؟

| السؤال | استخدم |
| --- | --- |
| هل استدعى نفس الأداة مرتين؟ | كود |
| كم عدد الأخطاء التي حدثت؟ | كود |
| هل كانت الجلسة أقل من 30 ثانية؟ | كود |
| هل عبّر العميل عن استعجالية؟ | [مصنف](/ar/evaluations/jev) |
| ما مدى إحباط العميل؟ | [مصنف](/ar/evaluations/jev) |
| هل كانت الإجابة صحيحة فعلاً؟ | **قاضي** |
| هل كان الرد فظاً أو استخفافياً؟ | **قاضي** |
| هل تحقق من سياسة الاسترجاع قبل الوعد باسترجاع الأموال؟ | **قاضي** |

القاعدة الأساسية: **قابل للعد → كود، إجابات يمكنك إدراجها مقدماً → [مصنف](/ar/evaluations/jev)، يحتاج تفسيراً → قاضي.** القاضي هو الذي يكتب نصاً عما رآه؛ استخدمه عندما قد يسأل شخص ما عن الرقم "لماذا؟".

لا يتعين عليك الاختيار مقدماً. اوصف ما تريد قياسه والمساعد سيختار، ثم يخبرك بما اختاره ولماذا. يمكنك تبديله.

## اكتب واحداً

1. اذهب إلى **Analyze → eval authoring** واختر **new eval**.
2. اوصف ما تريد الحكم عليه، واختر **draft**.
3. راجع **criteria** و**threshold** و**condition**، ثم انشره.

### Criteria

جملة أو جملتان، مكتوبة كمتطلب وليس كسؤال:

> يجب على المساعد ألا يعد أو يوافق على استرجاع الأموال دون التحقق أولاً من سياسة الاسترجاع.

كن محدداً حول ما الذي سيجعله *فاشلاً*. "هل كانت الرد جيداً؟" يعطيك رقماً لا يعني شيئاً؛ الجملة أعلاه تعطيك واحداً يمكنك التصرف بناءً عليه.

### Threshold

الدرجة التي تساوي أو تتجاوزها الجلسة لتمرير التقييم. `0.7` هو نقطة انطلاق معقولة. يتم تخزين الدرجة الكاملة من 0 إلى 1 دائماً، لذا فإن الحد الأدنى يقرر فقط النجاح/الفشل — يمكنك رؤية التوزيع والتعديل.

### Condition

نفس شرط Python كما في أي تقييم آخر، وهو يهم بكثير هنا. بدونه، يعمل القاضي على **كل** جلسة في منظمتك، بتكلفة استدعاء نموذج واحد لكل منها:

```python
session.count("tool_use") > 0
```

```python
session.agent_id == "support-bot" and session.count("error") > 0
```

لوحة المعلومات تحذرك إذا نشرت قاضياً بدون شرط. هذا صحيح في بعض الأحيان — وكيل منخفض الحجم تريد الحكم عليه بالكامل — لكن يجب أن يكون قراراً، وليس حادثة.

## ما يراه القاضي

المحادثة، كلفات، الأحدث أولاً إذا كانت الجلسة طويلة:

- ما قاله المستخدم
- ما ردت به المساعد
- **كل أداة استدعاها الوكيل، وما أعادته تلك الاستدعاء، بالترتيب**

هذا الجزء الأخير هو ما يجعل "هل فعل X *قبل* Y" سؤالاً عادلاً. يتم عرض استدعاء الأداة الفاشل كفشل، لذا فإن "هل تعافى بأناقة من خطأ" يعمل أيضاً.

الجلسات الطويلة جداً تتم اختصارها لتناسب سياق النموذج. عندما يحدث ذلك، يقول التعليل ذلك صراحة — لن ترى أبداً حكماً تم إصداره على جزء من جلسة تم تقديمه كما لو أنه تم على كلها.

## قراءة النتائج

ينتج القاضي **score** مثل أي تقييم مسجل آخر، لذا فهو يرسم بيانات، يصفي، وينشئ تنبيهات بنفس الطريقة. إلى جانب الرقم، يخزن **reasoning** القاضي — الفقرة التي تشرح ما رآه. اقرأ ذلك أولاً عندما تفاجئك نتيجة؛ فهي عادة ما تكون إما جلسة مثيرة للاهتمام حقاً أو علامة على أن المعايير تحتاج إلى شحذ.

النتائج مستقرة للحالات الواضحة لكن ليست حتمية بالبت. تعامل مع نتيجة حدودية واحدة كدعوة للذهاب وقراءة الجلسة، وليس كحكم.

## الحدود

- **الاختبار غير متاح حالياً.** يجفف التشغيل لا يوجد تعيين جلسة خلفه، وذلك التعيين هو ما يخول قضاء ميزانية النموذج الخاصة بك — لذا لا يوجد شيء لاستدعاء الاختبار للفرض عليه. انشره ضد شرط ضيق واقرأ النتائج القليلة الأولى.
- **الملء بأثر رجعي غير متاح.** ملء تقييم برمجي للخلف على أشهر من السجل مجاني؛ القيام به مع القاضي سوف ينفق ميزانيتك بالكامل في دقائق.
- **تحرير المعايير ينشر نسخة جديدة.** النتائج القديمة والجديدة غير قابلة للمقارنة، لذا يتم الاحتفاظ بها بعيداً عن بعضها بدلاً من مزجها في خط اتجاه واحد.
- **القاضي يسفر دائماً عن درجة**، أبداً متري أو تأكيد.

## عندما تنفد ميزانيتك

يقضي القضاة ميزانية النموذج لمنظمتك. عندما تنفد، توقف تقييمات القاضي برسالة واضحة بدلاً من الفشل الصامت، و**تستمر التقييمات البرمجية بشكل طبيعي**. ارفع الميزانية وتستأنف في الجلسة التالية.
Loading
Loading