# كيف يعمل التحسين

> عقد التشغيل والتقييم، وأنواع العناصر، والمحركات المناسبة لكل نوع.

Skynet هو Optimize Anything: منتج واحد يحسّن أي عنصر مقابل بياناتك ومقياسك. يستخدم كل تشغيل عقد التشغيل نفسه وعقد المقياس نفسه. ويحدّد نوع العنصر المحرّكات التي يمكنها العمل عليه.

## العقد المشترك

لكل تشغيل ملفان. يشغّل `run.py` العنصر على حالة واحدة. ويقيّم `metric.py` المخرجات.

```python tab="run.py"
from skynet import llm


def run(artifact, input):
    return llm(artifact, input=input)
```

```python tab="metric.py"
def score(input, output, expected=None):
    ok = output == expected
    return (1.0 if ok else 0.0), {"feedback": "Match." if ok else "No match."}
```

- `artifact` هو النسخة الحالية التي يقترحها المُحسِّن.
- `input` قاموس (dict) يحمل حقول الإدخال لحالة واحدة.
- `expected` هو القيمة المتوقعة للحالة، أو `None` عندما لا تكون للحالة قيمة متوقعة.
- تُرجع `score` زوجًا: رقمًا، وقاموسًا يحتوي على سلسلة `"feedback"`.

توفّر وحدة المساعدة `skynet` كلًا من `llm` و`Image` و`log`. يذهب استدعاء `llm` من كود التشغيل إلى نموذج المهمة. ويذهب استدعاء `llm` من المقياس إلى نموذج المقياس.

> [!NOTE]
> يعمل كود التشغيل في عملية خاصة به داخل البيئة المعزولة. لا يستطيع رؤية مصدر المقياس ولا القيمة المتوقعة ولا مفتاح المقياس.

اقرأ [المقاييس والمُقيِّمات](/docs/ar/concepts/scorers) للاطلاع على عقد المقياس الكامل.

## أنواع العناصر والمحركات

| نوع العنصر   | المحرّكات                                                                    |
| ------------ | ---------------------------------------------------------------------------- |
| موجّه        | Auto, GEPA, Best-of-N, AutoResearch, Meta-Harness, AutoSaddler, ShinkaEvolve |
| كود          | مثل الموجّه                                                                  |
| نص           | مثل الموجّه                                                                  |
| برنامج DSPy  | Auto, DSPy GEPA, DSPy MIPROv2, DSPy BootstrapFewShot                         |

تنقسم المحرّكات إلى عائلتين:

- تتعامل **المحرّكات الأصلية** مع العنصر كصندوق أسود. تعمل على عناصر الموجّه والكود والنص.
- تعمل **مُحسِّنات DSPy** داخل برنامج DSPy. وتعمل فقط على عناصر برنامج DSPy.

يحتاج DSPy MIPROv2 وDSPy BootstrapFewShot إلى أزواج (حالات مع مخرجات متوقعة). مع إدخال واحد، لا يستطيع برنامج DSPy استخدام سوى Auto وDSPy GEPA.

## عناصر الموجه والكود والنص

تتعامل المحرّكات الأصلية مع العنصر كصندوق أسود. يقترح المحرّك نسخة جديدة، ويشغّل `run(artifact, input)` على الحالات، ويقرأ الدرجة والملاحظات.

تستخدم المحرّكات الأصلية الستة طرق بحث مختلفة:

- يطوّر **GEPA** النسخ بالتأمل ويحتفظ بجبهة باريتو.
- يطلب **Best-of-N** من نموذج التأمل اقتراحات مستقلة ويحتفظ بأفضلها.
- تستخدم **AutoResearch** و**Meta-Harness** و**AutoSaddler** و**ShinkaEvolve** وكيل برمجة لاقتراح النسخ.

اقرأ [المحرّكات](/docs/ar/concepts/engines) للتعرّف على كل محرّك وإعداداته.

## عناصر برنامج DSPy

برنامج DSPy هو نوع واحد من العناصر. يبني ملف `run.py` الخاص بك `dspy.Module` على مستوى الوحدة ويستدعيه داخل `run`. إذا احتوى الملف على أكثر من وحدة، فسمِّ الوحدة المراد تحسينها `program`.

ما يحدث عندما يعمل مُحسِّن DSPy:

1. يعثر Skynet على وحدتك ويغلّفها بدالة `run` الخاصة بك. تمر كل حالة عبر `run` الخاصة بك.
2. يترجم مُحسِّن DSPy البرنامج على حالات التدريب.
3. يختار بناءً على حالات التحقق.
4. الفائز هو نص التعليمات لكل متنبئ (predictor)، بالإضافة إلى الحالة المترجمة الكاملة للوحدة. تشمل الحالة أمثلة few-shot.

تقيس الدرجات النهائية البرنامج نفسه الذي يحفظه Skynet.

| المُحسِّن              | يقرأ نص الملاحظات   |
| --------------------- | ------------------- |
| DSPy GEPA             | نعم                 |
| DSPy MIPROv2          | لا، الدرجة فقط      |
| DSPy BootstrapFewShot | لا، الدرجة فقط      |

لا يستخدم DSPy BootstrapFewShot نموذج تأمل.

> [!TIP]
> يرى نموذج التأمل في DSPy فقط نص الملاحظات الذي يُرجعه مقياسك. ولا يرى مصدر المقياس أبدًا.

## Auto

**Auto** هو الخيار الافتراضي في المعالج.

- على عنصر موجّه أو كود أو نص، يستكشف Auto بخمسة محرّكات أصلية، ثم يتابع بـ GEPA من أفضل نسخة.
- على برنامج DSPy، يشغّل Auto DSPy GEPA.

يقرأ Auto بشكليه نص الملاحظات من مقياسك.

## أي محرك تختار

| وضعك                                                  | استخدم                                                              |
| ----------------------------------------------------- | ------------------------------------------------------------------- |
| لديك موجّه يشغّله نموذج                                 | عنصر موجّه. ابدأ بـ Auto.                                            |
| لديك كود تريد جعله أسرع أو أرخص أو أكثر صحة            | عنصر كود. ابدأ بـ Auto.                                              |
| لديك مستند أو ملف إعدادات                              | عنصر نص. ابدأ بـ Auto.                                               |
| لديك برنامج DSPy                                       | عنصر برنامج DSPy. ابدأ بـ Auto.                                      |
| تريد أمثلة few-shot مختارة من بياناتك                  | عنصر برنامج DSPy مع DSPy BootstrapFewShot أو DSPy MIPROv2            |

> [!WARNING]
> يتعلّم GEPA وDSPy GEPA وAuto من نص الملاحظات. إذا كانت ملاحظاتك دائمًا السلسلة نفسها، فلدى هذه المُحسِّنات معلومات أقل للعمل بها.

## صفحات ذات صلة

- [المحرّكات](/docs/ar/concepts/engines)
- [مجموعات البيانات والتقسيمات](/docs/ar/concepts/datasets)
- [المقاييس والمُقيِّمات](/docs/ar/concepts/scorers)
- [إرسال تشغيل](/docs/ar/guides/submit)

---

Source: https://staging.skynetml.com/docs/ar/concepts/optimization
