الانتقال إلى المحتوى الرئيسي

منصة التقييم Eval Harness v2.0

ملخص تنفيذي. تغطي هذه الصفحة تثبيت وإعداد واستخدام منصة تقييم الترجمة الآلية (MT evaluation harness) — وهي الأداة التي تُقيّم أداء طرق الترجمة مقابل مدونات نصية موحّدة وتُنتج بطاقات تشغيل مُقيَّمة. للاطلاع على التعريفات المعتمدة للمقاييس والمخططات وبروتوكول التقييم، راجع مواصفات المعيار.

تُشغّل المنصة تجارب الترجمة وتُنتج بطاقات التشغيل. وهي تتولى بناء الموجّهات (prompts)، واستدعاءات واجهة برمجة التطبيقات (API)، والتقييم، وترميز النتائج وتخزينها — وأنت توفّر مجموعة البيانات والنموذج.

التثبيت

المتطلبات: Python 3.10+

pip install sacrebleu aiohttp

استنسخ مستودع المنصة:

git clone https://github.com/gamedaysuits/arena.git
cd arena

الاستخدام

mt-eval run --corpus path/to/dataset.json

يقوم هذا الأمر بتمرير كل مُدخل في المدونة النصية عبر النموذج المُعدّ (أو إضافة الطريقة)، ثم يُقيّم المخرجات، ويكتب ملف JSON لبطاقة التشغيل في دليل المخرجات.

رايات سطر الأوامر (CLI Flags)

mt-eval run

الرايةإلزاميةالقيمة الافتراضيةالوصف
--corpusمسار ملف المدونة النصية (.json، .jsonl، .tsv)
--source-file / --reference-fileملفات نصية متوازية (بصيغة FLORES+ وWMT)
-m, --modelgemini-proمُعرّف النموذج (اسم مختصر أو مُعرّف OpenRouter كامل). يُحلّ عبر shared/model-aliases.json. يُفصل بفواصل عند تشغيل عدة نماذج
-d, --datasetallمُرشّح مجموعة البيانات: all، أو اسم مقطع، أو نطاق معرّفات
--idsمعرّفات المُدخلات المراد تقييمها، مفصولة بفواصل
--source-langEnglishاسم اللغة المصدر
--target-langاسم اللغة الهدف
-p, --promptnaiveإصدار الموجّه (naive، custom، champollion)
--coaching-fileمسار ملف نصي لموجّه التدريب التوجيهي
--coachingنص توجيهي مباشر (سلسلة نصية بين علامتي اقتباس)
--methodمسار دليل إضافة الطريقة (يحتوي على method.json + وحدة Python)
--method-cardمسار ملف JSON لبطاقة الطريقة الخاصة ببيانات لوحة المتصدرين الوصفية
--fst-retries0عدد محاولات إعادة FST (لطريقة LLM الافتراضية فقط)
--skip-fstfalseتخطي بوابة جودة FST بالكامل
--toolsfalseتفعيل وضع استدعاء الأدوات
--tools-listأسماء الأدوات مفصولة بفواصل
--max-tool-rounds8الحد الأقصى لجولات استدعاء الأدوات لكل مُدخل
--hooksأسماء الخطافات (hooks) لما بعد الترجمة
--style-profileمسار ملف JSON لملف تعريف الأسلوب. يُفعّل مقاييس اتساق أسلوب الكتابة (معلوماتية — لا تدخل أبدًا في composite score؛ راجع § مقاييس أسلوب الكتابة والمستوى اللغوي)
-b, --batch-size25عدد المُدخلات لكل استدعاء API
-c, --concurrency8استدعاءات API المتوازية
--max-tokens32768الحد الأقصى للرموز (tokens) لكل استدعاء API
--temperature0.0درجة حرارة أخذ العينات (0.0 = حتمي)
--no-cachefalseتعطيل التخزين المؤقت للاستجابات
--cache-direval/cache/harnessمسار دليل التخزين المؤقت
-o, --output-direval/logs/harnessدليل المخرجات لبطاقات التشغيل والسجلات
-n, --nameاسم تشغيل قابل للقراءة البشرية
--dry-runfalseالتحقق من صحة الإعدادات دون إجراء استدعاءات API
--champollion-configمسار champollion.config.json
--champollion-cards-dirدليل بطاقات اللغات
--target-lang-codeرمز اللغة وفق BCP-47

الأوامر الفرعية الأخرى

الأمر الفرعيالوصف
mt-eval test <log_path>تحليل سجل تشغيل مكتمل
mt-eval publish <report_path>إرسال بطاقة تشغيل إلى لوحة المتصدرين
mt-eval compare <logs...>مقارنة عدة عمليات تشغيل جنبًا إلى جنب
mt-eval dashboard <logs...>إنشاء لوحة معلومات HTML من سجلات التشغيل
mt-eval list models|prompts|datasetsعرض الموارد المتاحة
mt-eval exportتجميع الإعداد الحالي كإضافة طريقة champollion
mt-eval export-configتصدير MethodConfig المُحلّ (جميع الحقول القياسية الثمانية) بصيغة JSON

أمثلة

# Run with defaults (gemini-pro alias → google/gemini-3.1-pro-preview, naive prompt)
mt-eval run --corpus data/edtekla-dev-v1.json

# Coached experiment with coaching file
mt-eval run \
--corpus data/edtekla-dev-v1.json \
--model google/gemini-3.1-pro \
--coaching-file prompts/crk-coaching-v8.txt \
--temperature 0.0

# Run a custom method plugin with FST retries
mt-eval run \
--corpus data/edtekla-dev-v1.json \
--method ./methods/fst-gated-pipeline \
--fst-retries 3

مخطط بطاقة التشغيل

تُنتج كل تجربة بطاقة تشغيل — وهي مستند JSON مكتفٍ بذاته. البنية على المستوى الأعلى:

{
"run_id": "uuid-v4",
"harness_version": "2.0",
"model_slug": "google/gemini-3.1-pro",
"model_id": "gemini-3.1-pro-001",
"condition": "baseline",
"timestamp": "2026-06-01T03:22:41Z",
"elapsed_seconds": 142.7,
"dataset": { ... },
"config": { ... },
"method_card": { ... },
"system_prompt_sha256": "abc123...",
"system_prompt_used": "You are a translator...",
"fingerprint": { ... },
"scores": { ... },
"totals": { ... },
"environment": { ... },
"results": [ ... ],
"run_card_hash": "sha256-of-entire-card"
}

راجع مواصفات بطاقة التشغيل للاطلاع على المخطط الكامل مع توثيق كل حقل.

:::info المخطط المعتمد تُعد مواصفات المعيار المصدر الوحيد للحقيقة فيما يخص مخطط بطاقة التشغيل. لتعريفات المقاييس وأوزان composite ومستويات الجودة، راجع مواصفات التقييم. توثّق هذه الصفحة كيفية استخدام المنصة؛ بينما تحدد المواصفات معنى المخرجات. :::

الكتل الرئيسية

dataset — تحدد مجموعة البيانات المستخدمة، بما في ذلك تجزئة محتواها (content hash) بحيث ترتبط النتائج بإصدار محدد:

// Example using master_corpus.json (62 gold + 342 textbook = 404)
{
"id": "edtekla-dev-v1",
"version": "1.0",
"language_pair": "EN→CRK",
"sha256": "...",
"entry_count": 404
}

scores — المقاييس المُجمَّعة للتشغيل:

// Counts reflect the dataset used (here: master_corpus.json, 404 entries)
{
"total": 404,
"exact_matches": 12,
"exact_match_rate": 0.0968,
"fst_accepted": 87,
"fst_acceptance_rate": 0.7016,
"chrf_plus_plus": 42.31,
"errors": 0,
"avg_latency_seconds": 1.15,
"median_latency_seconds": 1.02,
"p95_latency_seconds": 2.34,
"by_difficulty": { ... },
"by_provenance": { ... }
}

totals — تتبّع استخدام الرموز والتكلفة:

{
"prompt_tokens": 48200,
"completion_tokens": 3100,
"reasoning_tokens": 0,
"cached_tokens": 12000,
"total_cost_usd": 0.42,
"cost_per_entry_usd": 0.0034,
"reasoning_ratio": 0.0
}

مقاييس أسلوب الكتابة والمستوى اللغوي (معلوماتية)

يمكن للمنصة تقييم ما إذا كانت الترجمات تطابق المستوى اللغوي وأسلوب الكتابة المستهدفين، عبر إضافة مقياس WritingStyleConsistency (mt_eval_harness/plugins/writing_style.py). فقد تكون الترجمة صحيحة لغويًا لكن بمستوى لغوي خاطئ — صياغة غير رسمية في مستند قانوني، أو عبارات رسمية جاهزة في نص تسويقي — ولن تلاحظ المقاييس النصية ذلك. أما هذه المقاييس فتلاحظه.

ما يُقاس (لكل مُدخل):

المقياسالنطاقالمعنى
style_register_matchقيمة منطقية (boolean)هل يطابق المخرج المستوى اللغوي المتوقع؟ يُستمد الهدف من حقل register في مُدخل المدونة النصية (راجع مواصفات المعيار §2.6) أو من ملف تعريف أسلوب
style_sentence_length_ratioعدد عشري (float)متوسط طول الجملة المتوقع مقابل المرجعي (1.0 = تطابق؛ التباعد = انحراف أسلوبي)
style_formality_score0.0–1.0وجود علامات الرسمية/عدم الرسمية (ضمائر T–V، الاختصارات، …) باستخدام موارد العلامات الخاصة بكل لغة

المُجمَّع: style_consistency_rate — نسبة المُدخلات التي لم يُكتشف فيها عدم تطابق في المستوى اللغوي.

فعّل هدفًا مخصصًا باستخدام --style-profile path/to/profile.json (مثل ملف تعريف صوت العلامة التجارية)؛ ومن دونه، تعود الإضافة إلى البيانات الوصفية register لكل مُدخل في المدونة النصية حيثما وُجدت.

:::caution تحديد نزيه للنطاق هذه المقاييس معلوماتية فقط — فهي لا تدخل أبدًا في composite score، كما أن اكتشاف الرسمية يعتمد على العلامات (أسلوب استدلالي)، وليس حكمًا قائمًا على التعلّم. تعامل معها كأداة لاكتشاف الانحراف في الالتزام بالمستوى اللغوي، وليس حكمًا على جودة الأسلوب. :::


البصمة (Fingerprint) مقابل تجزئة بطاقة التشغيل

تُنتج المنصة تجزئتين مختلفتين، ولكل منهما غرض مختلف:

البصمة (Fingerprint)

تجيب البصمة على السؤال: "هل يمكن إعادة إنتاج هذا التشغيل؟"

فهي تُجزّئ مجموعة المُدخلات التي تحدد إعدادات التجربة — وليس المخرجات:

  • SHA-256 لمجموعة البيانات
  • مُعرّف النموذج
  • تسمية الحالة
  • SHA-256 لموجّه النظام
  • درجة الحرارة
  • إصدار المنصة

عمليتا تشغيل بهما بصمتان متطابقتان استخدمتا الإعداد نفسه. وينبغي أن تكون نتائجهما قابلة للمقارنة (مع مراعاة عدم حتمية واجهة برمجة التطبيقات).

تجزئة بطاقة التشغيل

تجيب تجزئة بطاقة التشغيل على السؤال: "هل تم العبث بملف النتائج المحدد هذا؟"

فهي قيمة SHA-256 لملف JSON الكامل لبطاقة التشغيل (باستثناء حقل run_card_hash نفسه). فإذا تغيّر أي حقل — درجة، أو طابع زمني، أو مخرج واحد — تنكسر التجزئة.

:::info متى تستخدم كلًّا منهما استخدم البصمة لتجميع عمليات التشغيل القابلة للمقارنة (التجربة نفسها، عمليات تنفيذ مختلفة). واستخدم تجزئة بطاقة التشغيل للتحقق من سلامة ملف نتائج محدد. :::


النشر إلى لوحة المتصدرين

بعد إكمال التشغيل، استخدم mt-eval publish لإرسال بطاقة التشغيل:

mt-eval publish eval/logs/harness/your-run-card.json

إذا لم يتم توفير --method-card أثناء التشغيل، يُطلق mt-eval publish معالجًا تفاعليًا (method_card_wizard.py) يرشدك خلال وصف طريقتك (الاسم، الفئة، الأدوات المستخدمة، وما إلى ذلك). يُدمج ناتج المعالج في بطاقة التشغيل قبل الإرسال.

الإرسال اليدوي

تُحفظ بطاقات التشغيل كملفات JSON في دليل المخرجات. يمكنك أيضًا إرسال أي ملف بطاقة تشغيل عبر واجهة لوحة المتصدرين على /leaderboard، أو من خلال واجهة برمجة التطبيقات:

curl -X POST https://champollion.dev/api/leaderboard/submit \
-H "Content-Type: application/json" \
-d @eval/logs/harness/your-run-card.json

:::warning التحقق من صحة لوحة المتصدرين تتحقق لوحة المتصدرين من صحة بطاقات التشغيل المُرسلة مقابل سجل مجموعات البيانات. تُرفض الإرسالات التي تشير إلى مجموعات بيانات غير معروفة، أو التي تحتوي على run_card_hash معطوب. :::

:::danger لا تُدرّب على بيانات التقييم إذا اطّلعت طريقتك على مجموعة بيانات التقييم أثناء التطوير — كبيانات تدريب، أو أمثلة few-shot، أو مُدخلات معجمية، أو مادة لهندسة الموجّهات — فسيتم استبعاد إرسالك. راجع تقييم الترجمة الآلية لمعرفة ما يميز الطريقة الجيدة من السيئة. :::


انظر أيضًا