--- layout: default title: "المواصفات الفنية لـ 'خطة سير العمل' (Flow Blueprint) للمعلمات القابلة للتكوين" parent: "Arabic (Beta)" --- # المواصفات الفنية لـ "خطة سير العمل" (Flow Blueprint) للمعلمات القابلة للتكوين > **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta. ## نظرة عامة تصف هذه المواصفة تنفيذ المعلمات القابلة للتكوين لـ "خطط سير العمل" في TrustGraph. تتيح المعلمات للمستخدمين تخصيص معلمات المعالج في وقت بدء تشغيل سير العمل من خلال توفير قيم تحل محل العناصر النائبة للمعلمات في تعريف "خطة سير العمل". تعمل المعلمات من خلال استبدال متغيرات القالب في معلمات المعالج، على غرار كيفية عمل المتغيرات `{id}` و `{class}`، ولكن مع قيم مقدمة من المستخدم. يدعم التكامل أربعة حالات استخدام رئيسية: 1. **اختيار النموذج**: السماح للمستخدمين باختيار نماذج LLM مختلفة (مثل `gemma3:8b`، `gpt-4`، `claude-3`) للمعالجات. 2. **تكوين الموارد**: تعديل معلمات المعالج مثل أحجام الدُفعات، وأحجام الدُفعات، وحدود التزامن. 3. **الضبط الدقيق للسلوك**: تعديل سلوك المعالج من خلال معلمات مثل درجة الحرارة، والحد الأقصى للرموز، أو عتبات الاسترجاع. 4. **معلمات خاصة بالبيئة**: تكوين نقاط النهاية، ومفاتيح API، أو عناوين URL خاصة بالمنطقة لكل عملية نشر. ## الأهداف **تكوين المعالج الديناميكي**: تمكين تكوين معلمات المعالج في وقت التشغيل من خلال استبدال المعلمات. **التحقق من صحة المعلمات**: توفير التحقق من النوع والتحقق من صحة المعلمات في وقت بدء تشغيل سير العمل. **القيم الافتراضية**: دعم القيم الافتراضية المعقولة مع السماح بالتجاوزات للمستخدمين المتقدمين. **استبدال القوالب**: استبدال العناصر النائبة للمعلمات في معلمات المعالج بسلاسة. **التكامل مع واجهة المستخدم**: تمكين إدخال المعلمات من خلال كل من واجهات برمجة التطبيقات وواجهات المستخدم. **الأمان من النوع**: التأكد من أن أنواع المعلمات تتطابق مع أنواع معلمات المعالج المتوقعة. **التوثيق**: مخططات معلمات ذاتية التوثيق داخل تعريفات "خطط سير العمل". **التوافق مع الإصدارات السابقة**: الحفاظ على التوافق مع "خطط سير العمل" الحالية التي لا تستخدم المعلمات. ## الخلفية تدعم "خطط سير العمل" في TrustGraph الآن معلمات المعالج التي يمكن أن تحتوي إما على قيم ثابتة أو عناصر نائبة للمعلمات. هذا يخلق فرصة للتخصيص في وقت التشغيل. تدعم معلمات المعالج الحالية: القيم الثابتة: `"model": "gemma3:12b"` العناصر النائبة للمعلمات: `"model": "gemma3:{model-size}"` تحدد هذه المواصفة كيفية: الإعلان عن المعلمات في تعريفات "خطط سير العمل". التحقق من صحة المعلمات عند بدء تشغيل سير العمل. استبدال المعلمات في معلمات المعالج. <<<<<<< HEAD الكشف عنها من خلال واجهات برمجة التطبيقات وواجهات المستخدم. من خلال الاستفادة من معلمات معلمات المعالج، يمكن لـ TrustGraph: تقليل تكرار "خطط سير العمل" باستخدام المعلمات للتغيرات. ======= الكشف عن المعلمات من خلال واجهات برمجة التطبيقات وواجهات المستخدم. من خلال الاستفادة من معلمات معلمات المعالج، يمكن لـ TrustGraph: تقليل تكرار "خطط سير العمل" باستخدام المعلمات للتنوعات. >>>>>>> 82edf2d (New md files from RunPod) تمكين المستخدمين من ضبط سلوك المعالج دون تعديل التعريفات. دعم التكوينات الخاصة بالبيئة من خلال قيم المعلمات. الحفاظ على الأمان من النوع من خلال التحقق من صحة مخططات المعلمات. ## التصميم الفني ### البنية يتطلب نظام المعلمات القابلة للتكوين المكونات الفنية التالية: 1. **تعريف مخطط المعلمات** تعريفات المعلمات المستندة إلى JSON Schema داخل بيانات تعريف "خطة سير العمل". تعريفات الأنواع بما في ذلك أنواع السلاسل والأرقام والمنطق والقوائم وأنواع الكائنات. قواعد التحقق من الصحة بما في ذلك القيم الدنيا/القصوى، والأنماط، والحقول المطلوبة. الوحدة: trustgraph-flow/trustgraph/flow/definition.py 2. **محرك حل المعلمات** التحقق من صحة المعلمات في وقت التشغيل مقابل المخطط. تطبيق القيم الافتراضية للمعلمات غير المحددة. حقن المعلمات في سياق تنفيذ سير العمل. التحويل والتحويل من النوع حسب الحاجة. الوحدة: trustgraph-flow/trustgraph/flow/parameter_resolver.py 3. **تكامل مخزن المعلمات** استرداد تعريفات المعلمات من نظام المخطط/التكوين. التخزين المؤقت لتعريفات المعلمات المستخدمة بشكل متكرر. التحقق من الصحة مقابل المخططات المخزنة مركزيًا. الوحدة: trustgraph-flow/trustgraph/flow/parameter_store.py 4. **امتدادات مشغل سير العمل** امتدادات واجهة برمجة التطبيقات لقبول قيم المعلمات أثناء بدء تشغيل سير العمل. دقة تعيين المعلمات (أسماء سير العمل إلى أسماء التعريف). معالجة الأخطاء لمجموعات المعلمات غير الصالحة. الوحدة: trustgraph-flow/trustgraph/flow/launcher.py 5. **نماذج واجهة المستخدم للمعلمات** إنشاء نماذج ديناميكية من بيانات تعريف معلمات سير العمل. عرض المعلمات بترتيب باستخدام `order`. تسميات وصفية للمعلمات باستخدام `description`. التحقق من صحة الإدخال مقابل تعريفات أنواع المعلمات. إعدادات مسبقة وقوالب للمعلمات. الوحدة: trustgraph-ui/components/flow-parameters/ ### نماذج البيانات #### تعريفات المعلمات (مخزنة في المخطط/التكوين) يتم تخزين تعريفات المعلمات مركزيًا في نظام المخطط والتكوين مع النوع "parameter-type": ```json { "llm-model": { "type": "string", "description": "LLM model to use", "default": "gpt-4", "enum": [ { "id": "gpt-4", "description": "OpenAI GPT-4 (Most Capable)" }, { "id": "gpt-3.5-turbo", "description": "OpenAI GPT-3.5 Turbo (Fast & Efficient)" }, { "id": "claude-3", "description": "Anthropic Claude 3 (Thoughtful & Safe)" }, { "id": "gemma3:8b", "description": "Google Gemma 3 8B (Open Source)" } ], "required": false }, "model-size": { "type": "string", "description": "Model size variant", "default": "8b", "enum": ["2b", "8b", "12b", "70b"], "required": false }, "temperature": { "type": "number", "description": "Model temperature for generation", "default": 0.7, "minimum": 0.0, "maximum": 2.0, "required": false }, "chunk-size": { "type": "integer", "description": "Document chunk size", "default": 512, "minimum": 128, "maximum": 2048, "required": false } } ``` #### مخطط سير العمل مع مراجع المعلمات <<<<<<< HEAD تحدد مخططات سير العمل بيانات وصفية للمعلمات مع مراجع للأنواع والأوصاف والترتيب: ======= تحدد مخططات سير العمل بيانات تعريف المعلمات مع مراجع الأنواع والأوصاف والترتيب: >>>>>>> 82edf2d (New md files from RunPod) ```json { "flow_class": "document-analysis", "parameters": { "llm-model": { "type": "llm-model", "description": "Primary LLM model for text completion", "order": 1 }, "llm-rag-model": { "type": "llm-model", "description": "LLM model for RAG operations", "order": 2, "advanced": true, "controlled-by": "llm-model" }, "llm-temperature": { "type": "temperature", "description": "Generation temperature for creativity control", "order": 3, "advanced": true }, "chunk-size": { "type": "chunk-size", "description": "Document chunk size for processing", "order": 4, "advanced": true }, "chunk-overlap": { "type": "integer", "description": "Overlap between document chunks", "order": 5, "advanced": true, "controlled-by": "chunk-size" } }, "class": { "text-completion:{class}": { "request": "non-persistent://tg/request/text-completion:{class}", "response": "non-persistent://tg/response/text-completion:{class}", "parameters": { "model": "{llm-model}", "temperature": "{llm-temperature}" } }, "rag-completion:{class}": { "request": "non-persistent://tg/request/rag-completion:{class}", "response": "non-persistent://tg/response/rag-completion:{class}", "parameters": { "model": "{llm-rag-model}", "temperature": "{llm-temperature}" } } }, "flow": { "chunker:{id}": { "input": "persistent://tg/flow/chunk:{id}", "output": "persistent://tg/flow/chunk-load:{id}", "parameters": { "chunk_size": "{chunk-size}", "chunk_overlap": "{chunk-overlap}" } } } } ``` <<<<<<< HEAD القسم `parameters` يربط أسماء المعلمات الخاصة بالتدفق (المفاتيح) بكائنات بيانات تعريف المعلمات التي تحتوي على: `type`: مرجع إلى تعريف المعلمة المحدد مركزيًا (مثل "llm-model") `description`: وصف يمكن قراءته بواسطة الإنسان للعرض في واجهة المستخدم ======= القسم `parameters` يربط أسماء المعلمات الخاصة بالتدفق (المفاتيح) بكائنات بيانات وصفية للمعلمات والتي تحتوي على: `type`: مرجع إلى تعريف المعلمة المحدد مركزيًا (مثل "llm-model") `description`: وصف قابل للقراءة بواسطة الإنسان للعرض في واجهة المستخدم >>>>>>> 82edf2d (New md files from RunPod) `order`: ترتيب العرض لنماذج المعلمات (تظهر الأرقام الأقل أولاً) `advanced` (اختياري): علامة منطقية تشير إلى ما إذا كانت هذه معلمة متقدمة (افتراضي: خطأ). عند تعيينها على "صحيح"، قد تخفي واجهة المستخدم هذه المعلمة افتراضيًا أو تضعها في قسم "متقدم" `controlled-by` (اختياري): اسم معلمة أخرى تتحكم في قيمة هذه المعلمة عند التواجد في الوضع البسيط. عند تحديدها، ترث هذه المعلمة قيمتها من المعلمة المتحكمة ما لم يتم تجاوزها بشكل صريح تسمح هذه الطريقة بما يلي: تعريفات أنواع معلمات قابلة لإعادة الاستخدام عبر قوالب تدفق متعددة إدارة مركزية لأنواع المعلمات والتحقق من صحتها <<<<<<< HEAD أوصاف وترتيب المعلمات الخاصة بالتدفق ======= أوصاف وترتيب معلمات خاصة بالتدفق >>>>>>> 82edf2d (New md files from RunPod) تجربة واجهة مستخدم محسنة مع نماذج معلمات وصفية التحقق من صحة المعلمات بشكل متسق عبر التدفقات إضافة سهلة لأنواع معلمات قياسية جديدة واجهة مستخدم مبسطة مع فصل الوضع الأساسي/المتقدم وراثة قيمة المعلمة للإعدادات ذات الصلة #### طلب بدء تشغيل التدفق تقبل واجهة برمجة تطبيقات بدء تشغيل التدفق المعلمات باستخدام أسماء المعلمات الخاصة بالتدفق: ```json { "flow_class": "document-analysis", "flow_id": "customer-A-flow", "parameters": { "llm-model": "claude-3", "llm-temperature": 0.5, "chunk-size": 1024 } } ``` ملاحظة: في هذا المثال، `llm-rag-model` غير مقدمة بشكل صريح ولكنها سترث القيمة "claude-3" من `llm-model` بسبب علاقتها مع `controlled-by`. وبالمثل، يمكن أن ترث `chunk-overlap` قيمة محسوبة بناءً على `chunk-size`. سيقوم النظام بما يلي: <<<<<<< HEAD 1. استخراج بيانات تعريف المعلمات من تعريف مخطط التدفق 2. مطابقة أسماء معلمات التدفق مع تعريفات أنواعها (على سبيل المثال، `llm-model` → نوع `llm-model`) 3. حل علاقات "يتم التحكم بها" (على سبيل المثال، ترث `llm-rag-model` من `llm-model`) ======= 1. استخراج بيانات وصفية للمعلمات من تعريف مخطط التدفق 2. ربط أسماء معلمات التدفق بتعريفات أنواعها (مثل: `llm-model` → نوع `llm-model`) 3. حل علاقات "التحكم بواسطة" (مثل: `llm-rag-model` ترث من `llm-model`) >>>>>>> 82edf2d (New md files from RunPod) 4. التحقق من صحة القيم المقدمة من المستخدم والقيم الموروثة مقابل تعريفات أنواع المعلمات 5. استبدال القيم التي تم حلها في معلمات المعالج أثناء إنشاء التدفق ### تفاصيل التنفيذ #### عملية حل المعلمات عندما يتم بدء تدفق، يقوم النظام بتنفيذ الخطوات التالية لحل المعلمات: <<<<<<< HEAD 1. **تحميل مخطط التدفق**: تحميل تعريف مخطط التدفق واستخراج بيانات تعريف المعلمات 2. **استخراج البيانات الوصفية**: استخراج `type`، `description`، `order`، `advanced`، و `controlled-by` لكل معلمة معرفة في قسم `parameters` الخاص بمخطط التدفق 3. **البحث عن تعريف النوع**: لكل معلمة في مخطط التدفق: استرجاع تعريف نوع المعلمة من متجر المخطط/التكوين باستخدام حقل `type` ======= 1. **تحميل مخطط التدفق**: تحميل تعريف مخطط التدفق واستخراج بيانات وصفية للمعلمات 2. **استخراج البيانات الوصفية**: استخراج `type`، `description`، `order`، `advanced`، و `controlled-by` لكل معلمة معرفة في قسم `parameters` الخاص بمخطط التدفق 3. **البحث عن تعريف النوع**: لكل معلمة في مخطط التدفق: استرجاع تعريف نوع المعلمة من متجر المخططات/التكوين باستخدام حقل `type` >>>>>>> 82edf2d (New md files from RunPod) يتم تخزين تعريفات الأنواع مع النوع "parameter-type" في نظام التكوين يحتوي كل تعريف نوع على مخطط المعلمة والقيمة الافتراضية وقواعد التحقق من الصحة 4. **حل القيمة الافتراضية**: لكل معلمة معرفة في مخطط التدفق: التحقق مما إذا كان المستخدم قد قدم قيمة لهذه المعلمة إذا لم يتم تقديم قيمة من قبل المستخدم، استخدم القيمة `default` من تعريف نوع المعلمة <<<<<<< HEAD إنشاء خريطة معلمات كاملة تحتوي على كل من القيم المقدمة من قبل المستخدم والقيم الافتراضية 5. **حل إرث المعلمات** (علاقات "يتم التحكم بها"): ======= إنشاء خريطة كاملة للمعلمات تحتوي على كل من القيم المقدمة من قبل المستخدم والقيم الافتراضية 5. **حل إرث المعلمات** (علاقات "التحكم بواسطة"): >>>>>>> 82edf2d (New md files from RunPod) للمعلمات التي تحتوي على حقل `controlled-by`، تحقق مما إذا تم توفير قيمة بشكل صريح إذا لم يتم توفير قيمة صريحة، فقم بوراثة القيمة من المعلمة المسيطرة إذا كانت المعلمة المسيطرة أيضًا لا تحتوي على قيمة، فاستخدم القيمة الافتراضية من تعريف النوع التحقق من عدم وجود تبعيات دائرية في علاقات `controlled-by` 6. **التحقق من الصحة**: التحقق من صحة مجموعة المعلمات الكاملة (القيم المقدمة من قبل المستخدم والقيم الافتراضية والقيم الموروثة) مقابل تعريفات الأنواع 7. **التخزين**: تخزين مجموعة المعلمات التي تم حلها بالكامل مع مثيل التدفق لأغراض التدقيق <<<<<<< HEAD 8. **الاستبدال القالب**: استبدال عناصر نائب المعلمات في معلمات المعالج بالقيم التي تم حلها ======= 8. **استبدال القوالب**: استبدال عناصر نطق المعلمات في معلمات المعالج بالقيم التي تم حلها >>>>>>> 82edf2d (New md files from RunPod) 9. **إنشاء المعالجات**: إنشاء معالجات بمعلمات مستبدلة **ملاحظات تنفيذ مهمة:** يجب على خدمة التدفق دمج المعلمات المقدمة من قبل المستخدم مع القيم الافتراضية من تعريفات أنواع المعلمات يجب تخزين مجموعة المعلمات الكاملة (بما في ذلك القيم الافتراضية المطبقة) مع التدفق لأغراض التتبع يحدث حل المعلمات في وقت بدء التدفق، وليس في وقت إنشاء المعالج يجب أن يؤدي عدم وجود معلمات مطلوبة بدون قيم افتراضية إلى فشل بدء التدفق مع رسالة خطأ واضحة <<<<<<< HEAD #### إرث المعلمات مع "يتم التحكم بها" ======= #### إرث المعلمات مع "التحكم بواسطة" >>>>>>> 82edf2d (New md files from RunPod) يتيح الحقل `controlled-by` وراثة قيمة المعلمة، وهو مفيد بشكل خاص لتبسيط واجهات المستخدم مع الحفاظ على المرونة: **سيناريو مثال:** تتحكم المعلمة `llm-model` في نموذج LLM الأساسي تحتوي المعلمة `llm-rag-model` على `"controlled-by": "llm-model"` في الوضع البسيط، يؤدي تعيين `llm-model` إلى "gpt-4" تلقائيًا إلى تعيين `llm-rag-model` إلى "gpt-4" أيضًا في الوضع المتقدم، يمكن للمستخدمين تجاوز `llm-rag-model` بقيمة مختلفة **قواعد الحل:** 1. إذا كانت المعلمة تحتوي على قيمة مقدمة بشكل صريح، فاستخدم تلك القيمة 2. إذا لم تكن هناك قيمة صريحة وتم تعيين `controlled-by`، فاستخدم قيمة المعلمة المسيطرة 3. إذا كانت المعلمة المسيطرة لا تحتوي على قيمة، فارجع إلى القيمة الافتراضية من تعريف النوع 4. تؤدي التبعيات الدائرية في علاقات `controlled-by` إلى خطأ في التحقق من الصحة **سلوك واجهة المستخدم:** في الوضع الأساسي/البسيط: قد تكون المعلمات التي تحتوي على `controlled-by` مخفية أو معروضة كقراءة فقط مع القيمة الموروثة في الوضع المتقدم: يتم عرض جميع المعلمات ويمكن تكوينها بشكل فردي عندما تتغير المعلمة المسيطرة، يتم تحديث المعلمات التابعة تلقائيًا ما لم يتم تجاوزها بشكل صريح #### تكامل Pulsar 1. **عملية بدء التدفق** يجب أن تقبل عملية بدء التدفق في Pulsar حقل `parameters` يحتوي على خريطة لقيم المعلمات يجب تحديث مخطط طلب بدء التدفق في Pulsar لتضمين الحقل الاختياري `parameters` مثال للطلب: ```json { "flow_class": "document-analysis", "flow_id": "customer-A-flow", "parameters": { "model": "claude-3", "size": "12b", "temp": 0.5, "chunk": 1024 } } ``` 2. **عملية الحصول على التدفق** يجب تحديث مخطط بولسر لـ "استجابة الحصول على التدفق" ليشمل الحقل `parameters`. يتيح ذلك للعملاء استرداد قيم المعلمات التي تم استخدامها عند بدء التدفق. مثال على الاستجابة: ```json { "flow_id": "customer-A-flow", "flow_class": "document-analysis", "status": "running", "parameters": { "model": "claude-3", "size": "12b", "temp": 0.5, "chunk": 1024 } } ``` #### تنفيذ خدمة التدفق تتطلب خدمة تكوين التدفق (`trustgraph-flow/trustgraph/config/service/flow.py`) التحسينات التالية: 1. **وظيفة حل المعلمات** ```python async def resolve_parameters(self, flow_class, user_params): """ Resolve parameters by merging user-provided values with defaults. Args: flow_class: The flow blueprint definition dict user_params: User-provided parameters dict Returns: Complete parameter dict with user values and defaults merged """ ``` يجب أن تقوم هذه الدالة بما يلي: <<<<<<< HEAD استخراج بيانات تعريف المعلمات من قسم `parameters` في مخطط سير العمل. لكل معلمة، استرداد تعريف النوع الخاص بها من مستودع التكوين. ======= استخراج بيانات تعريف المعلمات من قسم `parameters` في مخطط التدفق. لكل معلمة، استرجاع تعريف النوع الخاص بها من مستودع التكوين. >>>>>>> 82edf2d (New md files from RunPod) تطبيق القيم الافتراضية لأي معلمات لم يتم توفيرها من قبل المستخدم. التعامل مع علاقات الوراثة `controlled-by`. إرجاع المجموعة الكاملة للمعلمات. 2. **الطريقة المعدلة `handle_start_flow`** <<<<<<< HEAD استدعاء `resolve_parameters` بعد تحميل مخطط سير العمل. استخدام المجموعة الكاملة للمعلمات التي تم حلها للاستبدال في القوالب. تخزين المجموعة الكاملة للمعلمات (وليس فقط المعلمات التي قدمها المستخدم) مع سير العمل. التحقق من أن جميع المعلمات المطلوبة لها قيم. 3. **استرداد أنواع المعلمات** ======= استدعاء `resolve_parameters` بعد تحميل مخطط التدفق. استخدام المجموعة الكاملة للمعلمات التي تم حلها للاستبدال في القوالب. تخزين المجموعة الكاملة للمعلمات (وليس فقط المعلمات التي قدمها المستخدم) مع التدفق. التحقق من أن جميع المعلمات المطلوبة لها قيم. 3. **استرجاع أنواع المعلمات** >>>>>>> 82edf2d (New md files from RunPod) يتم تخزين تعريفات أنواع المعلمات في التكوين بنوع "parameter-type". يحتوي كل تعريف نوع على مخطط وقيمة افتراضية وقواعد تحقق. تخزين أنواع المعلمات المستخدمة بشكل متكرر في ذاكرة التخزين المؤقت لتقليل عمليات البحث في التكوين. #### تكامل نظام التكوين <<<<<<< HEAD 3. **تخزين كائنات سير العمل** عندما تتم إضافة سير عمل إلى نظام التكوين بواسطة مكون سير العمل في مدير التكوين، يجب أن تتضمن كائن سير العمل قيم المعلمات التي تم حلها. يحتاج مدير التكوين إلى تخزين كل من المعلمات التي قدمها المستخدم في الأصل والقيم التي تم حلها (مع تطبيق القيم الافتراضية). يجب أن تتضمن كائنات سير العمل في نظام التكوين: `parameters`: القيم النهائية للمعلمات التي تم حلها والتي تم استخدامها لسير العمل. ======= 3. **تخزين كائنات التدفق** عندما تتم إضافة تدفق إلى نظام التكوين بواسطة مكون التدفق في مدير التكوين، يجب أن تتضمن كائن التدفق قيم المعلمات التي تم حلها. يحتاج مدير التكوين إلى تخزين كل من المعلمات التي قدمها المستخدم في الأصل والقيم التي تم حلها (مع تطبيق القيم الافتراضية). يجب أن تتضمن كائنات التدفق في نظام التكوين: `parameters`: القيم النهائية للمعلمات التي تم حلها والتي تم استخدامها للتدفق. >>>>>>> 82edf2d (New md files from RunPod) #### تكامل واجهة سطر الأوامر 4. **أوامر واجهة سطر الأوامر الخاصة بالمكتبة** <<<<<<< HEAD تحتاج أوامر واجهة سطر الأوامر التي تبدأ سير العمل إلى دعم المعلمات: قبول قيم المعلمات عبر علامات سطر الأوامر أو ملفات التكوين. التحقق من صحة المعلمات مقابل تعريفات مخطط سير العمل قبل الإرسال. دعم إدخال ملف المعلمات (JSON/YAML) لمجموعات المعلمات المعقدة. تحتاج أوامر واجهة سطر الأوامر التي تعرض سير العمل إلى عرض معلومات المعلمات: عرض قيم المعلمات المستخدمة عند بدء سير العمل. عرض المعلمات المتاحة لمخطط سير عمل. ======= تحتاج أوامر واجهة سطر الأوامر التي تبدأ التدفقات إلى دعم المعلمات: قبول قيم المعلمات عبر علامات سطر الأوامر أو ملفات التكوين. التحقق من صحة المعلمات مقابل تعريفات مخطط التدفق قبل الإرسال. دعم إدخال ملفات المعلمات (JSON/YAML) لمجموعات المعلمات المعقدة. تحتاج أوامر واجهة سطر الأوامر التي تعرض التدفقات إلى عرض معلومات المعلمات: عرض قيم المعلمات المستخدمة عند بدء التدفق. عرض المعلمات المتاحة لمخطط تدفق. >>>>>>> 82edf2d (New md files from RunPod) عرض مخططات التحقق من صحة المعلمات والقيم الافتراضية. #### تكامل الفئة الأساسية للمعالج 5. **دعم ParameterSpec** <<<<<<< HEAD تحتاج الفئات الأساسية للمعالج إلى دعم استبدال المعلمات من خلال آلية ParametersSpec الحالية. يجب تحسين فئة ParametersSpec (الموجودة في نفس الوحدة النمطية مثل ConsumerSpec و ProducerSpec) إذا لزم الأمر لدعم استبدال القوالب للمعلمات. يجب أن تكون المعالجات قادرة على استدعاء ParametersSpec لتكوين معامها باستخدام قيم المعلمات التي تم حلها في وقت بدء سير العمل. يجب أن تقوم تنفيذ ParametersSpec بما يلي: قبول تكوينات المعلمات التي تحتوي على عناصر نائبة للمعلمات (مثل `{model}`، `{temperature}`). ======= يجب أن تدعم الفئات الأساسية للمعالج استبدال المعلمات من خلال آلية ParametersSpec الحالية. يجب تحسين فئة ParametersSpec (الموجودة في نفس الوحدة كما ConsumerSpec و ProducerSpec) إذا لزم الأمر لدعم استبدال القوالب للمعلمات. يجب أن تكون المعالجات قادرة على استدعاء ParametersSpec لتكوين معامها باستخدام قيم المعلمات التي تم حلها في وقت بدء التدفق. يجب أن تقوم تنفيذ ParametersSpec بما يلي: قبول تكوينات المعلمات التي تحتوي على عناصر نائب للمعلمات (مثل `{model}`، `{temperature}`). >>>>>>> 82edf2d (New md files from RunPod) دعم استبدال المعلمات في وقت التشغيل عند إنشاء المعالج. التحقق من أن القيم المستبدلة تتطابق مع الأنواع والقيود المتوقعة. توفير معالجة الأخطاء للإشارات المفقودة أو غير الصالحة للمعلمات. #### قواعد الاستبدال تستخدم المعلمات التنسيق `{parameter-name}` في معلمات المعالج. <<<<<<< HEAD تتطابق أسماء المعلمات في المعلمات مع المفاتيح في قسم `parameters` في سير العمل. ======= تتطابق أسماء المعلمات في المعلمات مع المفاتيح في قسم `parameters` في التدفق. >>>>>>> 82edf2d (New md files from RunPod) يحدث الاستبدال جنبًا إلى جنب مع استبدال `{id}` و `{class}`. تؤدي الإشارات غير الصالحة للمعلمات إلى أخطاء في وقت بدء التشغيل. يحدث التحقق من النوع بناءً على تعريف المعلمة المخزن مركزيًا. **هام**: يتم تخزين جميع قيم المعلمات وإرسالها كسلاسل. يتم تحويل الأرقام إلى سلاسل (على سبيل المثال، `0.7` تصبح `"0.7"`). يتم تحويل القيم المنطقية إلى سلاسل صغيرة (على سبيل المثال، `true` تصبح `"true"`). هذا مطلوب بواسطة مخطط Pulsar الذي يحدد `parameters = Map(String())`. مثال على الحل: ``` Flow parameter mapping: "model": "llm-model" Processor parameter: "model": "{model}" User provides: "model": "gemma3:8b" Final parameter: "model": "gemma3:8b" Example with type conversion: Parameter type default: 0.7 (number) Stored in flow: "0.7" (string) Substituted in processor: "0.7" (string) ``` ## استراتيجية الاختبار اختبارات الوحدة للتحقق من صحة مخططات المعلمات. اختبارات التكامل لاستبدال المعلمات في معلمات المعالج. <<<<<<< HEAD اختبارات شاملة لإطلاق العمليات التدفقية بقيم معلمات مختلفة. اختبارات واجهة المستخدم لإنشاء النموذج والتحقق من صحة المعلمات. اختبارات الأداء للعمليات التدفقية التي تحتوي على العديد من المعلمات. ======= اختبارات شاملة لإطلاق العمليات مع قيم معلمات مختلفة. اختبارات واجهة المستخدم لإنشاء النموذج والتحقق من صحة المعلمات. اختبارات الأداء للعمليات التي تحتوي على العديد من المعلمات. >>>>>>> 82edf2d (New md files from RunPod) حالات حافة: معلمات مفقودة، وأنواع غير صالحة، وإشارات غير معرفة للمعلمات. ## خطة الترحيل <<<<<<< HEAD 1. يجب أن يستمر النظام في دعم مخططات العمليات التدفقية التي لا تحتوي على معلمات. معلنة. 2. يجب أن يستمر النظام في دعم العمليات التدفقية التي لا يتم فيها تحديد أي معلمات: هذا يعمل للعمليات التدفقية التي لا تحتوي على معلمات، وللعمليات التدفقية التي تحتوي على معلمات ======= 1. يجب أن يستمر النظام في دعم نماذج العمليات بدون معلمات مُعرّفة. 2. يجب أن يستمر النظام في دعم العمليات بدون تحديد معلمات: هذا يعمل للعمليات التي لا تحتوي على معلمات، وللعمليات التي تحتوي على معلمات >>>>>>> 82edf2d (New md files from RunPod) (لديها قيم افتراضية). ## أسئلة مفتوحة <<<<<<< HEAD س: هل يجب أن تدعم المعلمات كائنات متداخلة معقدة أم يجب الالتزام بأنواع بسيطة؟ ج: سيتم ترميز قيم المعلمات كسلاسل نصية، لذلك من المحتمل أن نلتزم بالسلاسل النصية. س: هل يجب السماح بوضع عناصر نائب للمعلمات في أسماء قوائم الانتظار أم فقط في المعلمات؟ ج: فقط في المعلمات لإزالة عمليات الحقن والحالات الحافة الغريبة. س: كيف نتعامل مع التعارضات بين أسماء المعلمات والمتغيرات النظامية مثل `id` و `class`؟ ج: من غير المسموح بتحديد المعرف (id) والفئة (class) عند إطلاق عملية تدفقية. س: هل يجب أن ندعم المعلمات المحسوبة (المشتقة من معلمات أخرى)؟ ج: مجرد استبدال السلاسل النصية لإزالة عمليات الحقن والحالات الحافة الغريبة. ======= س: هل يجب أن تدعم المعلمات كائنات متداخلة معقدة أم تقتصر على الأنواع البسيطة؟ ج: سيتم ترميز قيم المعلمات كسلاسل نصية، ومن المحتمل أن نلتزم بالسلاسل النصية. س: هل يجب السماح بوضع إشارات المعلمات في أسماء قوائم الانتظار أم فقط في المعلمات؟ ج: فقط في المعلمات لإزالة الحقن والحالات الحافة الغريبة. س: كيف نتعامل مع التعارضات بين أسماء المعلمات ومتغيرات النظام مثل `id` و `class`؟ ج: من غير المسموح بتحديد المعرف (id) والفئة (class) عند إطلاق عملية. س: هل يجب أن ندعم المعلمات المحسوبة (المشتقة من معلمات أخرى)؟ ج: مجرد استبدال السلاسل النصية لإزالة الحقن والحالات الحافة الغريبة. >>>>>>> 82edf2d (New md files from RunPod) ## المراجع مواصفات مخطط JSON: https://json-schema.org/ <<<<<<< HEAD مواصفات تعريف مخطط العمليات التدفقية: docs/tech-specs/flow-class-definition.md ======= مواصفات تعريف نموذج العملية: docs/tech-specs/flow-class-definition.md >>>>>>> 82edf2d (New md files from RunPod)