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

واجهة الطريقة المشتركة

ملخص تنفيذي. تحدد هذه الصفحة بروتوكول TranslationMethod الذي يجب على جميع طرق Arena تنفيذه، وفئات الطرق الست (raw-llm، coached-llm، pipeline، custom-plugin، api، human)، وصيغة إضافات الطرق (plugins)، وفئات الاعتماديات (S/O/A1/A2/X) التي تحدد ما إذا كان يمكن تشغيل طريقة ما في بيئة التقييم المعزولة (sandbox) وتأهلها للجوائز. أي نهج ينفذ هذا البروتوكول يمكن قياس أدائه؛ وما يعتمد عليه يحدد أين يمكنه المنافسة.

تشترك أداة التقييم (eval harness) ونظام champollion في مفهوم موحد هو طريقة الترجمة. الطريقة هي أي إجراء يأخذ نصًا مصدريًا وينتج نصًا مترجمًا — سواء كان استدعاءً مباشرًا لنموذج لغوي كبير (LLM)، أو خط معالجة متعدد المراحل، أو واجهة برمجة تطبيقات من طرف ثالث، أو مترجمًا بشريًا.

البنية المعمارية

Method Plugin (v2 Spec)
├── method.json ← Manifest (name, class, entry_point, dependencies, metadata)
├── method_card.json ← Leaderboard description (what, not how)
├── pipeline.py ← Python module implementing TranslationMethod
└── (optional helpers) ← Additional Python modules

يتم التحميل عبر --method path/to/dir. لا تكتشف الأداة أي شيء تلقائيًا.

نظامان، واجهة واحدة

Eval Harnesschampollion
اللغةPythonNode.js
نقطة الدخولtranslate.pytranslate.js
الواجهةبروتوكول TranslationMethodإعداد methodPlugin
الغرضتقييم دفعي مع التسجيلتوطين مباشر في بيئة التطوير/CI
المخرجاتبطاقة تشغيل مع المقاييسملفات لغوية مترجمة

الطريقة التي تدعم كلا النظامين توفر نقطتي دخول — واحدة لكل بيئة تشغيل لغوية. بطاقة الطريقة هي الجسر الرابط: فهي تصف الطريقة بصيغة يفهمها كلا النظامين.

بطاقة الطريقة

تصف بطاقة الطريقة ماهية طريقة الترجمة دون الكشف عن التفاصيل المملوكة مثل موجه النظام الكامل. وهي تجيب عن الأسئلة التالية:

  • ما فئة هذه الطريقة؟ (LLM خام، LLM موجَّه، خط معالجة، API، إلخ.)
  • ما الأدوات التي تستخدمها؟ (محلل FST، قاموس، إلخ.)
  • هل التنفيذ مفتوح المصدر؟
  • ما أزواج اللغات التي تدعمها؟

راجع مواصفات بطاقة الطريقة للاطلاع على مخطط JSON الكامل.

مثال

{
"method_id": "fst-gated-v8",
"name": "FST-Gated Coached Translation v8",
"class": "pipeline",
"description": "LLM translation with morphological validation. Failed words are retried with FST feedback.",
"author": "Curtis Forbes",
"tools_used": ["HFST morphological analyzer", "Wolvengrey dictionary"],
"open_source": false,
"dependency_class": "A2",
"supported_pairs": ["eng>crk"]
}

يلخص حقل dependency_class ما تحتاجه الطريقة للتشغيل والنقل — راجع صلاحية الطريقة وفئات الاعتماديات أدناه.

فئات الطرق

الفئةالوصف
raw-llmاستدعاء مباشر لنموذج لغوي كبير بتعليمات بسيطة
coached-llmنموذج لغوي كبير مع موجه منظم وأمثلة وقيود
pipelineخط معالجة متعدد المراحل بمكونات حتمية
custom-pluginعملية خارجية تنفذ بروتوكول TranslationMethod
apiواجهة برمجة تطبيقات ترجمة من طرف ثالث (Google Translate، DeepL، إلخ.)
humanترجمة بشرية (لإنشاء خطوط أساس)

صلاحية الطريقة وفئات الاعتماديات

لا تكون الطريقة قابلة للتشغيل أو النقل إلا بقدر توفر أقل اعتمادياتها توفرًا. تعتمد آليتان في Arena على المعرفة الدقيقة بما تحتاجه الطريقة:

  1. التقييم في بيئة معزولة (مواصفات المعيار §8.2) — تأتي الدرجات الرسمية المعيارية من بيئة معزولة سياسة شبكتها هي الرفض الافتراضي (default-deny). الطريقة التي تتطلب خدمة خارجية بشكل خفي لا يمكنها إنتاج درجة رسمية.
  2. نقل الجائزة (مواصفات الجوائز) — تُنقل الطرق الفائزة بالجوائز إلى منظمة الحوكمة الخاصة بمجتمع اللغة. الطريقة التي تتضمن محتوى لم يكن للمقدِّم حق تضمينه لا يمكن نقلها قانونيًا. يجب أن يمتلك المقدِّم (أو يُمنح) الحقوق لكل ما هو موجود داخل الحزمة.

ولجعل كلتا عمليتي التحقق آليتين بدلًا من اجتهادية، تعلن كل طريقة عن فئة اعتماديات مشتقة من بيان الاعتماديات في method.json.

ملاحظة حول التسمية. فئة الطريقة (الفقرة أعلاه: raw-llm، pipeline، …) تصف كيف تترجم الطريقة. أما فئة الاعتماديات (هذا القسم) فتصف ما تحتاجه الطريقة للتشغيل والنقل. وهما محوران مستقلان: يمكن لطريقة pipeline أن تكون من أي فئة اعتماديات.

فئات الاعتماديات الخمس

الفئةالاسمالتعريفقابلة للتشغيل في البيئة المعزولة؟مؤهلة للجائزة؟
Sمكتفية ذاتيًاتُشحن جميع الأكواد والبيانات والنماذج والأوزان داخل دليل الطريقة، بموجب تراخيص تسمح بإعادة التوزيع والنقل المجتمعي.✅ نعم، كما هي✅ نعم
Oخارجية مفتوحةتعتمد على مواد مستضافة خارجيًا بموجب تراخيص مفتوحة تسمح بإعادة التوزيع (بما في ذلك تراخيص الحقوق المتروكة مثل AGPL) — مثل FST يُنزَّل عند التثبيت.✅ نعم — تُثبَّت المواد بإصدارات محددة وتُنسَخ داخل التقديم✅ نعم، بشروط توافق الترخيص: تُحفظ شروط الحقوق المتروكة عبر النقل، ويحصل المجتمع على نفس الحقوق التي يمنحها الترخيص للجميع
A1معتمدة على API، قابلة للاستبدالتتطلب استدلال LLM في وقت التشغيل، حيث يكون النموذج إعدادًا قابلًا للاستبدال — يمكن إدراج أي نموذج كافي القدرة. تكمن قيمة الطريقة في موجهاتها وبيانات توجيهها وكودها، وليس في نموذج مزود معين.⚠️ فقط عبر بوابة LLM التي تحددها مواصفات البيئة المعزولة (🔲 مخطط لها — انظر أدناه)⚠️ مشروطة — انظر أدناه
A2معتمدة على API، غير قابلة للاستبدالتتطلب استدعاءات في وقت التشغيل إلى API بيانات أو خدمة خارجية لا يمكن نسخها أو استبدالها — عادةً لأن المحتوى المقدَّم مملوك أو غير مرخَّص (مثل API قاموس لا يحمل قاموسه الأساسي ترخيصًا عامًا).❌ لا — لا يمكن للاعتمادية أن توجد في البيئة المعزولة دون إذن صاحب الحقوق❌ ليس قبل أن يمنح صاحب الحقوق إذني التضمين في البيئة المعزولة والنقل معًا. مسموح بها في لوحة المتصدرين المفتوحة (شريحة التطوير) مع علامة ظاهرة "اعتمادية خارجية"
Xمغلقةتتضمن محتوى لا يحق للمقدِّم إعادة توزيعه — مجموعات بيانات غير مرخصة، محتوى مملوك مستخرج بالكشط، مكونات غير متوافقة الترخيص.❌ غير مقبولة في أي مسار. تضمين محتوى دون حقوق يشكل انتهاكًا للترخيص بغض النظر عن مكان تشغيل الطريقة

الفئة الفعلية. فئة اعتماديات الطريقة هي الفئة الأكثر تقييدًا بين جميع اعتمادياتها المعلنة، بالترتيب S < O < A1 < A2 < X. قاموس واحد غير مرخص يجعل خط معالجة مكتفيًا ذاتيًا بخلاف ذلك من الفئة A2 (إذا تم الوصول إليه في وقت التشغيل) أو الفئة X (إذا ضُمِّن دون حقوق).

التمييز بين A1 وA2: قابلية الاستبدال

تستدعي معظم الطرق نماذج لغوية كبيرة. لا تتظاهر Arena بغير ذلك — لكنها تميز بين نوعين مختلفين جدًا من الاعتماد على API:

  • A1 (قابلة للاستبدال): توفر API استدلال LLM كسلعة عامة. معرّف النموذج هو إعداد: يجب أن تعمل الطريقة من البداية إلى النهاية مع أي نقطة استدلال متوافقة، بما في ذلك نموذج مفتوح الأوزان يستضيفه المجتمع. قد تختلف جودة المخرجات بين النماذج — وهذه مخاطرة يتحملها المطور، وترتبط الدرجات الرسمية بالنموذج المثبَّت المستخدم في التقييم. الطريقة التي تعتمد على حالة لدى المزود (ضبط دقيق مستضاف فقط لدى المزود، مخازن ملفات المزود، مساعدات خاصة بالمزود) ليست قابلة للاستبدال: لا يمكن استبدال تلك الحالة، لذا تكون الاعتمادية A2 ما لم تُضمَّن الأوزان أو البيانات الأساسية في التقديم.
  • A2 (غير قابلة للاستبدال): تقدم API شيئًا فريدًا — عادةً بيانات مملوكة أو غير مرخصة. لا يمكن لأي نقطة بديلة توفيره، ولا يمكن نسخ المحتوى داخل البيئة المعزولة دون إذن صاحب الحقوق. تعمل الطريقة في لوحة المتصدرين المفتوحة (مع علامة)، لكنها لا تستطيع إنتاج درجات رسمية في البيئة المعزولة أو التأهل للجوائز حتى تتوفر الأذونات.

ما الذي ينقله فعليًا نقل جائزة من فئة A1. لا يحصل المجتمع على النموذج — لا أحد يستطيع نقل أوزان Anthropic أو Google أو OpenAI. يشمل النقل الوصفة الكاملة المحيطة بالنموذج: جميع الموجهات وبيانات التوجيه وكود خط المعالجة ومنطق إعادة المحاولة والإعدادات ومتطلبات النموذج الموثقة. ولأن النموذج قابل للاستبدال بحكم البناء، يمكن للمجتمع توجيه الطريقة المنقولة إلى أي مزود يختاره — أو إلى نموذج مفتوح الأوزان على عتاده الخاص — دون تدخل المطور. الوصفة مملوكة؛ أما المحرك فمستأجَر وقابل للاستبدال.

بيان الاعتماديات (method.json)

تعلن كل طريقة عن اعتمادياتها في بيان method.json. يسجل كل إدخال ما هي المادة، ومن أين تأتي، وما الترخيص الذي يغطيها، وكيف تصل إليها الطريقة:

{
"name": "FST-Gated Coached Translation v8",
"method_id": "fst-gated-v8",
"class": "pipeline",
"entry_point": "pipeline:PipelineMethod",
"supported_pairs": ["eng>crk"],
"dependency_class": "A2",
"dependencies": [
{
"id": "giellalt-lang-crk-fst",
"kind": "software",
"license": "AGPL-3.0-or-later",
"access": "mirrored",
"source": "https://github.com/giellalt/lang-crk",
"pin": "sha256:3f1a…",
"redistributable": true,
"transferable": true
},
{
"id": "llm-inference",
"kind": "model",
"license": "proprietary",
"access": "gateway",
"source": "openrouter:google/gemini-2.5-flash",
"substitutable": true,
"redistributable": false,
"transferable": false,
"notes": "Any compatible chat-completions endpoint works; the model slug is configuration."
},
{
"id": "crk-dictionary-api",
"kind": "service",
"license": "none",
"access": "external-api",
"source": "https://itwewina.altlab.app/",
"redistributable": false,
"transferable": false,
"notes": "Dictionary content has no public license; runtime lookups only. Class A2 until the rights holders grant permission."
}
]
}
الحقلمطلوبالوصف
idمعرّف ثابت للاعتمادية
kinddata، أو model، أو software، أو service
licenseمعرّف SPDX، أو proprietary، أو none. تعني none عدم وجود ترخيص عام — وتُعامل كجميع الحقوق محفوظة
accessbundled (يُشحن داخل دليل الطريقة)، mirrored (يُجلب عند التثبيت، مثبَّت الإصدار، مضمَّن في التقديم)، gateway (استدلال LLM في وقت التشغيل عبر بوابة التقييم)، external-api (أي استدعاء شبكي آخر في وقت التشغيل)
sourceعنوان URL القياسي أو معرّف provider:slug
pinلـ mirroredإصدار أو commit أو تجزئة محتوى تثبّت المادة بدقة
substitutableلـ gateway/external-apiما إذا كان بإمكان أي نقطة متوافقة تقديم هذه الاعتمادية
redistributableما إذا كان الترخيص يسمح بإعادة توزيع المادة
transferableما إذا كان يمكن نقل المادة (أو الحقوق عليها) إلى مجتمع بموجب شروط نقل الجائزة
notesسياق حر الصياغة

اشتقاق الفئة. تساهم كل اعتمادية بفئة؛ وتكون dependency_class الخاصة بالطريقة هي الأكثر تقييدًا:

ملف تعريف الاعتماديةتساهم بـ
bundled + ترخيص يسمح بإعادة التوزيع والنقلS
mirrored + ترخيص مفتوح يسمح بإعادة التوزيع (بما في ذلك الحقوق المتروكة)O
gateway + substitutable: true (استدلال LLM)A1
external-api، أو gateway مع substitutable: falseA2
bundled + license: none أو ترخيص غير متوافق مع إعادة التوزيعX

يجب أن تتطابق dependency_class المعلنة مع الفئة التي تشتقها الأداة من البيان. عدم التطابق يُعد خطأ تحقق.

الطريقة التي لا تملك اعتماديات خارجية تعلن "dependency_class": "S" و"dependencies": []. المصفوفة الفارغة هي إقرار إيجابي يُدقَّق مثل أي إقرار آخر.

كيف يتم التحقق من الصلاحية

ثلاث طبقات، من الأقل تكلفة إلى الأكثر حجية:

  1. تدقيق البيان. تشتق الأداة الفئة الفعلية من البيان وترفض حالات عدم التطابق. يتحقق المراجعون من كل اعتمادية معلنة مقابل ترخيصها ومصدرها المذكورين — الاعتمادية المعلنة كـ redistributable: true بينما ينص ترخيص مصدرها على خلاف ذلك ترسب في المراجعة.
  2. التحليل الساكن. يُفحص الكود المقدَّم بحثًا عن استدعاءات شبكية وتنزيلات ديناميكية ووصول لنظام الملفات لا يفسرها البيان. أي اعتمادية غير معلنة تُكتشف في المراجعة تشكل سببًا للرفض بغض النظر عن الفئة التي كانت ستنتمي إليها — يجب أن يكون البيان كاملًا، لا دقيقًا فحسب.
  3. سياسة شبكة البيئة المعزولة. تتطلب مواصفات البيئة المعزولة رفضًا افتراضيًا للاتصالات الصادرة (default-deny egress): لا تحصل حاويات الطرق على أي وصول شبكي ما لم يُدرج مسار في القائمة المسموح بها صراحةً. المسار الصادر الوحيد الذي تحدده المواصفات هو بوابة LLM — وكيل استدلال تشغّله البنية التحتية للتقييم، مقيد بقائمة سماح صريحة من النماذج المثبتة، مع تسجيل كل طلب واستجابة للتدقيق بعد التشغيل. أي شيء غير مدرج في قائمة السماح يفشل على مستوى الشبكة، لا على مستوى السياسة. راجع مواصفات المعيار §8.6 للاطلاع على سياسة الشبكة وتصميم البوابة.

🔲 مخطط له. البيئة المعزولة وبوابة LLM الخاصة بها محددتان في المواصفات لكنهما لم تُبنيا بعد. وحتى تصبح البوابة عاملة، لا يمكن تقييم سوى طرق الفئتين S وO في البيئة المعزولة؛ أما طرق الفئة A1 فهي مؤهلة للجوائز من حيث المبدأ لكنها لا تستطيع بعد إنتاج درجات رسمية معيارية. تصف هذه الصفحة ما تتطلبه المواصفات، لا ما يعمل حاليًا.

العرض في لوحة المتصدرين

  • تعرض لوحة المتصدرين فئة اعتماديات كل طريقة إلى جانب شارة فئة طريقتها.
  • تحمل طرق الفئة A2 في لوحة المتصدرين المفتوحة علامة ظاهرة "اعتمادية خارجية": تعتمد درجاتها على خدمة طرف ثالث قد تتغير أو تختفي، وهي غير مؤهلة حاليًا للجوائز.
  • لا تُدرج طرق الفئة X.

أداة التقييم: بروتوكول TranslationMethod

تستخدم أداة التقييم النمذجة البنيوية في Python (Protocol) للإضافات. أي صنف (class) يحمل توقيع الدالة الصحيح يعمل — دون الحاجة إلى الوراثة:

class MyMethod:
async def translate(self, entries: list[dict], config: RunConfig) -> list[dict]:
results = []
for entry in entries:
translation = await self.do_translation(entry["source"])
results.append({
"id": entry["id"],
"predicted": translation,
"latency_s": 0.5,
"usage": {"prompt_tokens": 0, "completion_tokens": 0},
"error": None,
"tool_calls": [],
"tool_call_count": 0,
"metadata": {},
})
return results

راجع بروتوكول الإضافات للاطلاع على التوثيق الكامل بما في ذلك أمثلة الأغلفة (wrappers) للطرق غير المكتوبة بـ Python.

champollion: إعداد methodPlugin

في champollion، تُسجَّل الطرق لكل زوج لغوي في champollion.config.json:

{
"version": 3,
"pairs": {
"en:crk": {
"methodPlugin": "crk-coached-v1"
}
}
}

راجع مواصفات الإضافات للاطلاع على الواجهة الخاصة بجانب champollion.

التكامل مع لوحة المتصدرين

عند إرفاق بطاقة طريقة بتشغيل (عبر --method-card)، تُضمَّن في بطاقة التشغيل وتُعرض في لوحة المتصدرين:

# Run with method card attached
mt-eval run \
--method path/to/my-method \
--corpus data/edtekla-dev-v1.json \
--method-card method_card.json

# Publish to the leaderboard
mt-eval publish eval/logs/harness/your-run-card.json

إذا لم تُقدَّم --method-card، يطلق mt-eval publish معالجًا تفاعليًا يرشدك خطوة بخطوة في وصف طريقتك.

تعرض لوحة المتصدرين:

  • شارة الفئة — مؤشر بصري (مثل "pipeline"، "coached-llm")
  • فئة الاعتماديات — S/O/A1/A2 (راجع صلاحية الطريقة وفئات الاعتماديات)؛ تحمل طرق الفئة A2 علامة "اعتمادية خارجية"
  • اسم الطريقة — من بطاقة الطريقة
  • الأدوات المستخدمة — مدرجة من بطاقة الطريقة
  • مؤشر المصدر المفتوح

عند عدم إرفاق بطاقة طريقة، تعرض لوحة المتصدرين إعدادات الأداة الأصلية (النموذج، إصدار الموجه، درجة الحرارة، الأدوات المفعَّلة).

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


انظر أيضًا