تنسيق مواصفات المهمة
Type: Build
Languages: Python
Prerequisites: Phase 19 Track B foundations
Time: ~90 min
أهداف التعلم
- حدد مخطط سجل مهمة JSONL يغطي الحسابات، والخيار المتعدد، وتنفيذ الرمز، والتصنيف، وتجميع النص الحر في شكل واحد.
- قم بإعداد لغة مغلقة من الأسماء المترتبة بحيث يمكن أن تُرسل الدروس (71-73) في مجال واحد.
- تحديد عدد قليل من الأمثلة والقواعد بعد المعالجة كجزء من المهمة، وليس الجاري، بحيث نفس الإرشاد ينتج نفس الهدف عبر النماذج.
- تنفيذ مؤكد صارم يرفض السجلات الملفقة قبل أن تصل إلى المتدرب.
- أرسل مجموعة من المعدات التي تعمل على 10 مهام تمارس كل فروع من المواصفات حتى يكون للمؤكد شيء حقيقي لضغينه.
لماذا المفردات المجمدة
قاعدة البحث سوف تتراكم نصوص تقييم أسرع من أنها تتراكم الاختبارات. في ستة أشهر، كل دفتر ملاحظات لها شكل JSON الخاص به، كل مقياس يتم إعادة تنفيذ مرتين، ولا يمكن مقارنة أي شيء عبر الجري. الإصلاح ممل. اختيار مخطط. كتابة مؤكد. رفض كل شيء آخر. وهذا ما يفعله هذا الدروس.
يستخدم الشكل الأفكار من الحبال في النمط الكبير، والصدق، والطريقة الزمنية، ولكن أسماء المجال هي لنا. لكل مجال مالك واحد. يقرأ الجاري المهمة. يقرأ المقياس الهدف. خطوة ما بعد العملية تعاديل الجيل. لا يوجد مجال يتغير في منتصف الأنابيب.
شكل السجل
المهمة هي جسم JSON على سطر واحد.tasks.jsonlويقوم بتحقق كل سطر بشكل مستقل.
json{
"task_id": "arith_001",
"category": "arithmetic",
"prompt": "Compute the result. Question: 17 + 24\nAnswer:",
"targets": ["41"],
"metric_name": "exact_match",
"few_shot_examples": [
{"prompt": "Question: 2 + 2\nAnswer:", "completion": "4"}
],
"post_process": "strip_whitespace",
"metadata": {"difficulty": "easy"}
}الحقول المطلوبة هيtask_id،category،prompt،targets،metric_name،post_process. .few_shot_examplesوmetadataغير معروفة الحقول المستوى العلوي فشل التحقق من التحقق
قواعد الميدان
task_idهو سلسلة بدون مساحة بيضاء. المحقق يفرض الاختلاف على جميع الملفات.
categoryهو واحد منarithmetic،mcq،code_exec،classification،summary. تفرض الفئة قيود على زوج الميترات والعقليات التي تتم بعد العملية.code_execالمهمة يجب أن تستخدمmetric_name = code_execو (أ)mcqالمهمة يجب أن تستخدمmetric_name = exact_matchضد هدف واحد حرف
promptهو سلسلة غير فارغة. المحقق يحظر التراجع في الفضاء الأبيض ويرفض السجلات التي تحتوي بالفعل على كتلة بضع صواريخ في الجسم المطلوب. يحدث تقديم صواريخ بضع صواريخ في المتدرب، وليس المؤلف.
targetsهو قائمة غير فارغة من السلاسل.exact_match، أي عنصر يطابق يعد.f1وrouge_l،الهدف الأكثر رصيدًا يفوزmcq، القائمة تحتوي على عنصر واحد بالضبط.
metric_nameهو واحد منexact_match،f1،bleu_4،rouge_l،accuracy،code_execالمفردات مغلقة، المقياس الجديد يتطلب درس جديد و مدخل جديد هنا
few_shot_examplesهو قائمة {prompt, completion}المحقق يضع حدوداً على القائمة إلى ثمانية إدخالات للحفاظ على الحدود.
post_processهو واحد منnone،strip_whitespace،lower،extract_letter،extract_code_block،extract_first_lineكل قاعدة لها سلوك محدد واحد. المحقق يحظر مزيج القواعد.
سلوك المحقق
flowchart TD
A[read tasks.jsonl] --> B[parse line as JSON]
B -->|error| Z[record error, continue]
B --> C[check required fields]
C -->|missing| Z
C --> D[check field types]
D -->|bad type| Z
D --> E[check category-metric pair]
E -->|illegal| Z
E --> F[check task_id uniqueness]
F -->|dup| Z
F --> G[append to validated set]
Z --> H{more lines?}
G --> H
H -->|yes| B
H -->|no| I[return validated, errors]يعيد المؤكد قائمتين: سجلات معتمدة وسجلات خطأ مع الخط المخالف، والقاعدة المخرقة، والحقل الخطأ. يرفض المتدرب البدء إذا كانت قائمة الخطأ غير فارغة ما لم يكن صريحا --allow-bad-tasksالعلم جاهز
إصدار قليل
يجمع المتشغيل أمثلة قليلة من المقاطع أمام المشاركة مع منفصل خط فارغ. يسير مسار الشفرة نفسه لكل نموذج، لذلك المصدر الوحيد للخلاف هو النموذج نفسه. يكتب المؤلفون أمثلة مرة واحدة، وليس مرة واحدة لكل مزود.
pythondef render(task):
parts = []
for ex in task.get("few_shot_examples", []):
parts.append(ex["prompt"] + " " + ex["completion"])
parts.append(task["prompt"])
return "\n\n".join(parts)قواعد ما بعد العملية
الخطوة بعد العملية تمر بعد الجيل، قبل الميتر. إنها تحديدية وغير ذات أساسية.
noneيعيد السلسلة دون تغييرstrip_whitespaceالشريطات التي تقود وترتيب الفضاء الأبيضlowerيقلل من السلسلةextract_letterيعيد أول حرف يطابق[A-E]يستخدم في المادة المختلفةextract_code_blockيعيد جسم أول كتلة محاصرة ثلاثية الخلفية، تستخدم لتنفيذ الرمز.extract_first_lineيعود أول سطر غير فارغ، المستخدم للتصنيف المختص.
مهمة تحتاج إلى قاعدة خارج هذه القائمة تنتمي إلى دروس جديدة.
ما لا يفعله هذا الدروس
لا تسجل، لا تدعو نموذجاً، لا تشغيل الرموز، هذه الدروس تأتي في الدروس 71، 72، و 75.
يحتوي جهاز التثبيت العشري على عناصر رياضية، وعن عناصر MCQ، وعن عناصر تنفيذ رمز، وعن عناصر تصنيف، وعن عناصر تلخيص. يقوم المحقق بتقديم جميع العشرة.tasks_bad.jsonl) يطرد كل قاعدة و يعيد المؤكد بالضبط الكثير من الأخطاء.
كيفية قراءة الرمز
main.pyيحددTaskSpec،validate_task،validate_file، و نقطة دخول CLI. محمول الأجهزة هو load_fixtures. المساعدين في التصوير و بعد العملية يعيشون بجانب التحقق من التحقق لذلك السائق في الدروس 75 يستورد وحدة واحدة.
اقرأmain.pyمن أعلى إلى أسفل، ثم اقرأcode/tests/test_spec.pyالاختبارات تحدد كل قاعدة التحقق وكل سلوك بعد العملية.main.pyيصدق على الجهاز المجمّع ويطبّق ملخصاً.
الذهاب إلى أبعد
تطور مجموعات تقييم حقيقية الفئات بالطريقة التي تنمو بها الخطة العمودات. الخطوة النظيفة هي رفض إضافة فئة دون إضافة متريكا، قاعدة ما بعد العملية، ومهمة ثابتة واحدة على الأقل. تعامل المضمونة مثل هجرة قاعدة البيانات. يتم مراجعة كل تغيير، وتصيغ، ومرافقة اختبارات. المؤكد في هذه الدروس هو البوابة.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.