mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-12 14:52:11 +02:00
update more languages
Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
parent
835acaa70e
commit
16c2f12a54
249 changed files with 117186 additions and 186 deletions
|
|
@ -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)
|
||||
|
||||
## أسئلة مفتوحة
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue