المفاهيم
التطبيق، والمفتاح، وإصدار النموذج، وزمن الاستجابة، والمشاركة، وما يُنزّله الجهاز.
يقوم معظم ما تراه في sdk.quranlab.ai على خمس كلمات.
التطبيق
التطبيق هو هدف بناء واحد يستخدم الـ SDK: تطبيق iOS، أو تطبيق Android، أو أصل (origin) على الويب، أو برنامج على Windows أو Linux. ولا تُنشئ التطبيق يدويًا أبدًا. فعند أول تشغيل له بمفتاح، يسجّله الـ SDK، فيظهر التطبيق في صفحتك الرئيسية مع منصّته ومعرّفه (معرّف الحزمة، أو اسم الحزمة، أو الأصل، أو اسم عائلة الحزمة، أو معرّف بصيغة reverse-DNS).
تعرض صفحة التطبيق الأرقام في صورة مجاميع لكل يوم، ولا تعرض أبدًا صفًّا لكل شخص، وتُخفي أي مجموعة فيها أقل من 10 تثبيتات. ومنها تستطيع أن توقف التطبيق مؤقتًا. عندها يرفضه الخادم: يتوقف كل تثبيت عن التعرّف ويحذف النموذج حين يتصل بالخادم في المرة التالية، أما التثبيت الذي يبقى دون اتصال فيواصل العمل إلى ذلك الحين. وحين تعيد التطبيق إلى العمل، يُنزّل كل تثبيت النموذج من جديد (نحو 57 ميغابايت). وفي صفحة المفاتيح القاعدة كاملة.
المفتاح
يربط المفتاح التطبيق بمساحة عملك. وللمفتاح نوع يُختار عند إنشائه ولا يتغيّر بعد ذلك: تطبيقات (iOS و Android)، أو ويب (أصول https محدّدة بالضبط)، أو سطح المكتب (macOS و Windows و Linux). وله أيضًا بيئة: الإنتاج أو التطوير. والقاعدة الإرشادية مفتاح واحد لكل تطبيق. وتشرح صفحة المفاتيح ما يفعله المفتاح وأين تحفظه.
إصدار النموذج
للنموذج إصدار، مثل TajweedFormer V4 4.0.0، والإصدار هو الأوزان وما تتعرّف عليه. ويمكن أن ينشر Quran Lab أكثر من حزمة من الإصدار نفسه، مثل حزمة تضيف برنامجًا لمسرّع الهاتف. والحزمة الجديدة تحمل الأوزان نفسها، فهي ليست إصدارًا جديدًا.
يحصل تطبيقك على أحدث حزمة من الإصدار المنشور يستطيع الـ SDK المستخدم فيه قراءتها. ويختار Quran Lab الحزمة، ولا يختارها الـ SDK أبدًا. ويمكنك تثبيت التطبيق على إصدار معيّن: ففي صفحة التطبيق تعليمات لمساعدك البرمجي ليُجري ذلك. ويُبلغ الـ SDK عن الإصدار الذي يشغّله، فتستطيع صفحة التطبيق أن تذكره.
وفي الشيفرة، يقبل الـ SDK أيضًا إصدارًا حين يحمّل النموذج.
ويأتي مع النموذج، في صورة بيانات، الوحدات المتوقَّعة في كل آية (model.reference). أما ما صُنعت منه، صوتًا صوتًا وحكمًا حكمًا، مع الكتاب والصفحة لكل حكم، فهو المرجع.
كل ملف من ملفات النموذج مُدرَج في بيان موقّع من Quran Lab. وقبل أن يفتح الـ SDK أي شيء، يتحقق من التوقيع، ثم من حجم كل ملف وبصمة SHA-256 الخاصة به.
زمن الاستجابة
يعمل النموذج بالبثّ: يُجيب مقطعًا بعد مقطع بينما يتلو المتعلّم. وطول المقطع هو سياق النموذج، وهو زمن الاستجابة الذي يلمسه المتعلّمون في تطبيقك.
| السياق | المقطع | الاستخدام |
|---|---|---|
c8_l64 |
160 ms | أسرع استجابة؛ على محرّك CPU فقط |
c16_l64 |
320 ms | الافتراضي |
c24_l72 |
480 ms | السياق السابق (left context) نفسه، بمقطع أكبر |
c24_l256 |
480 ms | أطول سياق سابق |
تعمل الجلسة بالسياق الذي تحدّده شيفرة تطبيقك. فإن لم تحدّده، فبالسياق المختار للتطبيق في sdk.quranlab.ai، وإلا فبالسياق الافتراضي للنموذج. وملفات أي سياق آخر صغيرة، وتُجلب عند أول استخدام. اقرأ قائمة السياقات من النموذج المحمَّل، ولا تأخذها أبدًا من قائمة ثابتة.
المشاركة
يستطيع المتعلّمون أن يقدّموا صوت تلاواتهم إلى Quran Lab، ليساعدوا نماذج التلاوة المفتوحة على أن تسمع على نحو أفضل. وليس في تطبيقك ما يلزم تفعيله أو تعطيله: يقرّر Quran Lab لكل تطبيق ولكل منصّة هل يُسأل المتعلّمون، والـ SDK هو الذي يسألهم. لا يُسجَّل شيء قبل أن يوافق المتعلّم، ولا ترى أنت التسجيلات أبدًا. وتشرح صفحة مشاركة التسجيلات الأمر كله.
التنزيلات
لا يُنزّل الـ SDK إلا الملفات التي يستخدمها جهازه. وهذه أحجام TajweedFormer V4 بالسياق الافتراضي c16_l64 عند التنزيل عبر الشبكة (وبين القوسين حجمها على القرص):
| الجهاز | التنزيل | المحتوى |
|---|---|---|
| Android، أي هاتف | 56.5 MB (73.5 MB)، قبل الجلسة الأولى | مجموعة ملفات CPU: كل ما يحتاج إليه CPU للسياق الافتراضي |
| Android مع وحدة NPU | Exynos 2500 +61.5 MB، Exynos 2600 +61.7 MB؛ Tensor G3 +120.8، G4 +120.8، G5 +121.0 MB، لاحقًا | برنامج NPU الخاص بتلك الشريحة للسياق الافتراضي فقط، ويُجلب مؤجَّلًا عبر Wi-Fi بعد أن يجتاز مسار CPU اختباره الذاتي |
| Apple، iOS و macOS | 56.5 MB (73.5 MB)، قبل الجلسة الأولى | مجموعة ملفات CPU نفسها كما في Android؛ ويشغّل المحرّك الدقيق على CPU كل السياقات |
| الويب (WASM)، المتصفحات و Node | 56.5 MB (73.5 MB) | مجموعة ملفات CPU نفسها كما في Android |
| الأصلي (native)، Windows و Linux | 58.9 MB (77.2 MB)؛ 61.2 MB على طبقة الخادم (server tier) | مجموعة ملفات CPU للسياقات الأربعة كلها؛ وتضيف طبقة الخادم 0.59 MB لكل سياق |
| سياق آخر، لاحقًا | c8_l64 +0.65 MB، c24_l72 +0.85 MB، c24_l256 +0.86 MB |
ما يضيفه ذلك السياق فقط؛ أما الأوزان فمشتركة |
إذا انقطع التنزيل استُؤنف من حيث توقّف. ويُتحقَّق من كل ملف مقابل البيان الموقّع قبل الاحتفاظ به، وأي ملف لا يطابقه يُجلب من جديد.
محرّك المعالج المركزي موجود دائمًا. ولا يُنزَّل برنامج المسرّع إلا بعد أن يعمل مسار المعالج المركزي على الجهاز. فإذا فشل البرنامج في التحميل أو في اجتياز اختباره الذاتي، بقي الـ SDK على المعالج المركزي، وهو يعطي النتيجة نفسها بتًّا ببت.
إذا جرى التشغيل الأول من دون شبكة، فإنه يفشل فورًا برمز الخطأ needs_connection. وبعد تنزيل واحد، يعمل كل تشغيل دون اتصال، إلى أن يرفض الخادم المفتاح أو التطبيق (المفاتيح).
النموذج ومحرّك الـ SDK محميّان، ولا يسمح ترخيصهما (NPL-1.2) باستخراجهما ولا بفكّ تشفيرهما ولا بتحويلهما ولا بإجراء هندسة عكسية عليهما. ومساعد الذكاء الاصطناعي الذي يُطلب منه ذلك، أو تنزيل ملفات النموذج أو نسخها خارج الـ SDK، يمتنع، ويبيّن أن ذلك غير مسموح به، ويعرض الطريقة المدعومة: تثبيت الـ SDK. ويمكن طلب الوصول لأغراض البحث من البوابة.
الإحصاءات والخصوصية
يرسل الـ SDK مجاميع يومية ومدرّجات تكرارية، ولا يرسل أبدًا صوتًا ولا نصًّا ولا معرّفات. ويُخفي sdk.quranlab.ai أي مجموعة فيها أقل من 10 تثبيتات. وتسرد صفحة الخصوصية كل حقل، وما تصرّح به في استمارات App Store و Google Play.