update more languages

Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
Alex Jenkins 2026-04-11 01:08:44 +00:00
parent 835acaa70e
commit 16c2f12a54
249 changed files with 117186 additions and 186 deletions

View file

@ -2,13 +2,21 @@
## نظرة عامة
<<<<<<< HEAD
تصف هذه المواصفات تطبيق تنسيق JSONL (JSON Lines) للإخراج
=======
تصف هذه المواصفات تنفيذ تنسيق JSONL (JSON Lines) للإخراج
>>>>>>> 82edf2d (New md files from RunPod)
في TrustGraph. يتيح JSONL استخراجًا مقاومًا للتقطيع للبيانات المنظمة من
استجابات نماذج اللغة الكبيرة (LLM)، مما يعالج المشكلات الهامة المتعلقة
بتلف مخرجات JSON array عندما تصل استجابات نماذج اللغة الكبيرة إلى حدود
الرموز المميزة للإخراج.
<<<<<<< HEAD
يدعم هذا التطبيق حالات الاستخدام التالية:
=======
يدعم هذا التنفيذ حالات الاستخدام التالية:
>>>>>>> 82edf2d (New md files from RunPod)
1. **الاستخراج المقاوم للتقطيع**: استخراج نتائج جزئية صالحة حتى عندما
يتم اقتطاع إخراج نموذج اللغة الكبيرة في منتصف الاستجابة.
@ -23,6 +31,7 @@
**التوافق مع الإصدارات السابقة**: تظل الطلبات الحالية التي تستخدم `response-type: "text"` و
`response-type: "json"` تعمل دون تعديل.
<<<<<<< HEAD
**مقاومة التقطيع**: تؤدي مخرجات نماذج اللغة الكبيرة الجزئية إلى نتائج
جزئية صالحة بدلاً من الفشل التام.
**التحقق من المخطط**: دعم التحقق من مخطط JSON للكائنات الفردية.
@ -30,6 +39,15 @@
مميز.
**تغييرات API الحد الأدنى**: توسيع تكوين الطلب الحالي بنوع استجابة جديد
ومفتاح مخطط.
=======
**مقاومة التقطيع**: تؤدي المخرجات الجزئية لنماذج اللغة الكبيرة إلى نتائج
جزئية صالحة بدلاً من الفشل التام.
**التحقق من المخطط**: دعم التحقق من مخطط JSON للكائنات الفردية.
**الاتحادات المميزة**: دعم المخرجات بأنواع متعددة باستخدام حقل `type`
كـ "مميّز".
**تغييرات API قليلة**: توسيع تكوين الطلب الحالي بنوع استجابة جديد ومفتاح
مخطط.
>>>>>>> 82edf2d (New md files from RunPod)
## الخلفية
@ -63,10 +81,17 @@ class Prompt:
**غير موثوق به للاستخراج الكبير**: كلما زاد عدد العناصر المستخرجة، زاد خطر الفشل.
تعالج هذه المواصفات هذه القيود من خلال تقديم تنسيق JSONL لمطالبات
<<<<<<< HEAD
الاستخراج، حيث يكون كل عنصر مستخرج كائن JSON كامل في سطر منفصل.
## التصميم الفني
=======
الاستخراج، حيث يكون كل عنصر مستخرج كائن JSON كامل على سطر منفصل.
## التصميم التقني
>>>>>>> 82edf2d (New md files from RunPod)
### إضافة نوع استجابة جديد
@ -74,7 +99,11 @@ class Prompt:
#### تغييرات التكوين
<<<<<<< HEAD
**قيمة نوع الاستجابة الجديدة:**
=======
**قيمة نوع الاستجابة الجديد:**
>>>>>>> 82edf2d (New md files from RunPod)
```
"response-type": "jsonl"
@ -128,6 +157,7 @@ class Prompt:
```
إذا قام نموذج اللغة الكبير بقطع النص بعد السطر الثاني، فإن تنسيق مصفوفة JSON ينتج عنه JSON غير صالح،
<<<<<<< HEAD
بينما ينتج عن JSONL كائنان صالحان.
#### استخراج أنواع مختلطة (الاتحادات المميزة)
@ -135,6 +165,15 @@ class Prompt:
بالنسبة إلى التعليمات التي تستخرج أنواعًا متعددة من الكائنات (مثل التعريفات والأمثلة).
العلاقات، أو الكيانات، والعلاقات، والخصائص)، استخدم `"type"`
الحقل كعامل تمييز:
=======
بينما ينتج عن JSONL كائني JSON صالحين.
#### استخراج الأنواع المختلطة (الاتحادات المميزة)
بالنسبة إلى التعليمات التي تستخرج أنواعًا متعددة من الكائنات (مثل التعريفات والأمثلة).
العلاقات، أو الكيانات، والعلاقات، والخصائص)، استخدم `"type"`
الحقل كمعرّف:
>>>>>>> 82edf2d (New md files from RunPod)
**تنسيق إخراج التعليمات:**
```
@ -205,7 +244,11 @@ class Prompt:
#### PromptManager.load_config
<<<<<<< HEAD
لا توجد تغييرات مطلوبة - عملية تحميل التكوين الحالية تتعامل بالفعل مع
=======
لا توجد تغييرات مطلوبة - فإن عملية تحميل التكوين الحالية تتعامل بالفعل مع
>>>>>>> 82edf2d (New md files from RunPod)
`schema`.
#### تحليل JSONL
@ -324,7 +367,11 @@ async def invoke(self, id, input, llm):
من جانب الخادم في خدمة المطالبات، ويتم إرجاع الاستجابة عبر الحقل القياسي
`PromptResponse.object` كمصفوفة JSON مسلسلة.
<<<<<<< HEAD
عندما يستدعي العملاء خدمة المطالبات (عبر `PromptClient.prompt()` أو ما شابه):
=======
عندما يستدعي العملاء خدمة المطالبات (عبر `PromptClient.prompt()` أو ما شابه ذلك):
>>>>>>> 82edf2d (New md files from RunPod)
**`response-type: "json"`** مع مخطط المصفوفة → يتلقى العميل كائن Python `list`
**`response-type: "jsonl"`** → يتلقى العميل كائن Python `list`
@ -333,7 +380,11 @@ async def invoke(self, id, input, llm):
الفرق يكمن بالكامل في كيفية تحليل مخرجات نموذج اللغة الكبير (LLM) من جهة الخادم:
تنسيق مصفوفة JSON: استدعاء واحد لـ `json.loads()`؛ يفشل تمامًا إذا تم اقتطاعه.
<<<<<<< HEAD
تنسيق JSONL: تحليل سطريًا؛ ينتج عنه نتائج جزئية إذا تم اقتطاعه.
=======
تنسيق JSONL: تحليل سطرًا بسطر؛ ينتج عنه نتائج جزئية إذا تم اقتطاعه.
>>>>>>> 82edf2d (New md files from RunPod)
هذا يعني أن التعليمات البرمجية للعميل الحالية التي تتوقع قائمة من مطالبات الاستخراج
لا تتطلب أي تغييرات عند ترحيل المطالبات من تنسيق JSON إلى تنسيق JSONL.
@ -385,7 +436,11 @@ async def invoke(self, id, input, llm):
**التحقق من صحة الإدخال**: يستخدم تحليل JSON معيار `json.loads()` وهو آمن
ضد هجمات الحقن.
**التحقق من صحة المخطط**: يستخدم `jsonschema.validate()` لفرض المخطط.
<<<<<<< HEAD
**لا توجد مساحة هجومية جديدة**: تحليل JSONL أكثر أمانًا بشكل صارم من تحليل مصفوفة JSON
=======
**لا توجد نقاط ضعف جديدة**: تحليل JSONL أكثر أمانًا بشكل صارم من تحليل مصفوفة JSON
>>>>>>> 82edf2d (New md files from RunPod)
بسبب المعالجة سطرًا بسطر.
## اعتبارات الأداء
@ -393,7 +448,11 @@ async def invoke(self, id, input, llm):
**الذاكرة**: يستخدم التحليل سطرًا بسطر ذاكرة قصوى أقل من تحميل مصفوفات JSON كاملة.
**زمن الوصول**: أداء التحليل مماثل لأداء تحليل مصفوفة JSON.
**التحقق من الصحة**: يتم تشغيل التحقق من صحة المخطط لكل كائن، مما يضيف حملًا إضافيًا ولكنه
<<<<<<< HEAD
يمكّن النتائج الجزئية في حالة فشل التحقق من الصحة.
=======
يتيح الحصول على نتائج جزئية في حالة فشل التحقق من الصحة.
>>>>>>> 82edf2d (New md files from RunPod)
## استراتيجية الاختبار
@ -406,7 +465,11 @@ async def invoke(self, id, input, llm):
تحليل JSONL مع سطر نهائي مقطوع.
تحليل JSONL مع أسطر JSON غير صالحة متداخلة.
التحقق من صحة المخطط مع اتحاد `oneOf` المميّز.
<<<<<<< HEAD
التوافق مع الإصدارات السابقة: تظل المطالبات `"text"` و `"json"` الحالية دون تغيير.
=======
التوافق مع الإصدارات السابقة: تظل المطالبات الحالية `"text"` و `"json"` دون تغيير.
>>>>>>> 82edf2d (New md files from RunPod)
### اختبارات التكامل
@ -415,7 +478,11 @@ async def invoke(self, id, input, llm):
الاستخراج المختلط الأنواع مع مميز النوع.
استخراج علم الوجود مع الأنواع الثلاثة.
<<<<<<< HEAD
### اختبارات جودة الاستخراج.
=======
### اختبارات جودة الاستخراج
>>>>>>> 82edf2d (New md files from RunPod)
مقارنة نتائج الاستخراج: تنسيق JSONL مقابل تنسيق مصفوفة JSON.
التحقق من قدرة تحمل التقصير: ينتج عن تنسيق JSONL نتائج جزئية في الحالات التي يفشل فيها تنسيق JSON.
@ -425,7 +492,11 @@ async def invoke(self, id, input, llm):
### المرحلة الأولى: التنفيذ
1. تنفيذ الطريقة `parse_jsonl()` في `PromptManager`.
<<<<<<< HEAD
2. توسيع `invoke()` للتعامل مع `response-type: "jsonl"`.
=======
2. توسيع نطاق `invoke()` للتعامل مع `response-type: "jsonl"`.
>>>>>>> 82edf2d (New md files from RunPod)
3. إضافة اختبارات الوحدة.
### المرحلة الثانية: ترحيل المطالبات
@ -439,9 +510,15 @@ async def invoke(self, id, input, llm):
### المرحلة الثالثة: التحديثات اللاحقة
<<<<<<< HEAD
1. تحديث أي كود يستهلك نتائج الاستخراج للتعامل مع نوع الإرجاع القائمة.
2. تحديث الكود الذي يصنف الاستخراجات ذات الأنواع المختلطة باستخدام الحقل `type`.
3. تحديث الاختبارات التي تؤكد على تنسيق إخراج الاستخراج.
=======
1. تحديث أي كود يستخدم نتائج الاستخراج للتعامل مع نوع الإرجاع القائمة.
2. تحديث الكود الذي يصنف الاستخراجات ذات الأنواع المختلطة باستخدام الحقل `type`.
3. تحديث الاختبارات التي تتحقق من تنسيق إخراج الاستخراج.
>>>>>>> 82edf2d (New md files from RunPod)
## أسئلة مفتوحة