OstimGPT
روبوت محادثة قائم على Retrieval-Augmented Generation ومستضاف محليًا، يجيب عن الأسئلة من مصادر الجامعة.
نظام ترجمة آلية مستضاف محليًا لموقع جامعي على Odoo 18. طوّرت خدمة عميل Ollama قابلة لإعادة الاستخدام، ومنصة لمهام الترجمة مع التتبّع والتحليلات، ومسار تقسيم HTML يعيد تجميع المحتوى المترجَم مع حفظ بنية الصفحة، وصفحات لإعدادات التهيئة والأمان، وهندسة الـ Prompt، وتحديد معدل الطلبات، ودعمًا متعدد اللغات، إلى جانب الاختبارات والتوثيق التقني.
أضاف هذا المشروع ترجمة آلية إلى موقع جامعي على Odoo 18، تعمل بالكامل على نماذج ذكاء اصطناعي مستضافة محليًا عبر Ollama بدل واجهة API تجارية للترجمة.
ترجمة موقع ليست المشكلة نفسها التي هي ترجمة نص. فمحتوى الصفحة HTML: يحمل بنية وروابط وتنسيقًا وسمات يجب أن تنجو من الرحلة سليمة. وكان جوهر العمل مسارًا يقسّم HTML إلى Chunks قابلة للترجمة، ويترجمها، ثم يعيد تجميع النتائج دون الإضرار بالصفحة.
ساهمت بعميل النموذج القابل لإعادة الاستخدام، ومنصة المهام المحيطة به، ومسار التقسيم وإعادة التجميع، وواجهات التهيئة الإدارية، وهندسة الـ Prompt وتحديد معدل الطلبات اللذين جعلا النظام صالحًا للاستعمال عمليًا.
يخدم موقع الجامعة جمهورًا لا تجمعه لغة واحدة. وإبقاء موقع متعدد اللغات محدّثًا يدويًا يعني أن كل تغيير في المحتوى يصبح عدة تغييرات، وأن الترجمات تتقادم بين التحديثات.
كان مكتب تنسيق التحول الرقمي يدير موقع الجامعة على Odoo 18. وكان الهدف أن تصبح الترجمة شيئًا تؤديه المنصة بنفسها، على بنية الجامعة التحتية.
محتوى الموقع HTML مبنيّ، والنماذج اللغوية تعمل على النص. وإرسال صفحة كاملة إلى نموذج يعيد ترميزًا متضررًا؛ وإرسالها شذرات يفقد السياق اللازم للترجمة الجيدة. وكان على النظام أن يوفّق بين هاتين الحقيقتين، وأن يفعل ذلك تكرارًا وبصورة قابلة للمراقبة.
دوري في المشروع
طوّرت خدمة عميل Ollama قابلة لإعادة الاستخدام وبنيت فوقها منصة لمهام الترجمة، مع تتبّع للمهام وتحليلات. طوّرت مسار تقسيم HTML الذي يقسّم محتوى الصفحة إلى وحدات قابلة للترجمة، وخطوة إعادة التجميع التي تعيد ضمّ الأقسام المترجَمة مع حفظ بنية الصفحة. أنشأت صفحات إعدادات التهيئة والأمان، وطبّقت هندسة الـ Prompt على طلبات الترجمة، ونفّذت تحديد معدل الطلبات، وأضفت دعمًا متعدد اللغات. كما ساهمت بالاختبارات والتوثيق التقني.
سياق الفريق
طُوّر هذا النظام داخل فريق تطوير البرمجيات بالجامعة في مكتب تنسيق التحول الرقمي، وفق معايير Scrum وCMMI نفسها المتبعة في مشاريع المكتب الأخرى. ساهمت بالمكوّنات الموصوفة هنا؛ أما موقع Odoo المحيط بها ونشره ومحتواه فمسؤولية الجامعة والفريق الأوسع.
يتعامل المسار مع صفحة HTML بوصفها بنية بداخلها محتوى قابل للترجمة، لا كتلة نص. فتُحفظ البنية في الذهاب وتُستعاد في الإياب، ويُدار عمل النموذج البطيء بينهما بوصفه مهام متتبَّعة.
يدخل HTML الصفحة مسارَ تقسيم يقسّمه إلى وحدات قابلة للترجمة. وتُرسَل كل وحدة عبر خدمة عميل Ollama قابلة لإعادة الاستخدام إلى نموذج مستضاف محليًا، باستخدام Prompts مكتوبة لترجمة المحتوى مع ترك الترميز دون مساس، مع تطبيق تحديد المعدل بين المنصة والنموذج. ثم تُعاد الوحدات المترجَمة إلى بنية الصفحة الأصلية. ويجري التسلسل كله بوصفه مهمة متتبَّعة، مع تغذية تتبّع المهام والتحليلات للشاشات الإدارية، وتحكّم صفحات إعدادات التهيئة والأمان في السلوك.
خدمة واحدة يخاطب عبرها كل جزء من النظام النموذجَ المحلي.
يقسّم محتوى الصفحة إلى وحدات تناسب طلب النموذج دون فقدان السياق.
تُعاد الأقسام المترجَمة مع بقاء ترميز الصفحة وتنسيقها سليمين.
يُدار عمل الترجمة الطويل بوصفه مهام لا طلبات.
يستطيع المسؤولون رؤية ما جرى تشغيله وما حدث حينها.
يُعدَّل السلوك من صفحات إدارية لا في الشيفرة.
يبقى حجم الطلبات ضمن ما تستطيع سعة النموذج المحلي خدمته.
يتعامل المسار مع أكثر من لغة هدف واحدة.
تمرير صفحات HTML كاملة عبر نموذج لغوي يعيد ترميزًا متضررًا — وسوم ساقطة وسمات معاد كتابتها وبنية متبدّلة.
بنيت المسار ليقسّم HTML إلى Chunks ويعيد تجميع النتائج المترجَمة في البنية الأصلية، وصمّمت الـ Prompts بحيث تكون مهمة النموذج ترجمة المحتوى لا إعادة إنتاج الترميز.
الإفراط في التقسيم ينزع السياق الذي يحتاجه المترجم؛ والتقليل منه يتجاوز ما يحتمله طلب واحد.
اختيرت حدود الـ Chunks لتناسب طلب النموذج مع إبقاء الوحدات متماسكة بما يكفي لترجمة سليمة، وهو توازن لا قاعدة ثابتة.
ترجمة موقع كامل عمل بطيء وطويل التنفيذ لا يناسب شكل الطلب والاستجابة.
بنيت منصة مهام حول مسار الترجمة، مع تتبّع وتحليلات، ليصبح بالإمكان بدء العمل ومراقبته وتحليله بعد وقوعه.
سعة النموذج المحلي محدودة، والطلب غير المضبوط يُضعف كل ما يتشارك تلك السعة.
نفّذت تحديد معدل الطلبات بين المنصة والنموذج، وأظهرت الإعدادات ذات الصلة في صفحة تهيئة ليُضبط الحد دون تغيير في الشيفرة.
| القرار | البديل المطروح | المبرر |
|---|---|---|
| استخدام نماذج مستضافة محليًا عبر Ollama. | واجهة API تجارية للترجمة. | يبقى محتوى الموقع على بنية الجامعة التحتية، ولا توجد تكلفة لكل كلمة، ولا تبعية خارجية على النظام. والمقابل أن الإنتاجية وخيار النموذج محكومان بالعتاد المحلي — وهو تحديدًا سبب الحاجة إلى تحديد المعدل. |
| تقسيم HTML وإعادة تجميعه بدل ترجمة صفحات كاملة. | إرسال صفحات كاملة إلى النموذج. | يضيف التقسيم خطوة إعادة تجميع وحالاتٍ حديّة خاصة به، لكنه ما يُبقي بنية الصفحة سليمة ويُبقي كل طلب ضمن ما يحتمله النموذج بموثوقية. |
| إدارة الترجمة بوصفها مهام متتبَّعة. | الترجمة تزامنيًا عند الطلب. | تضيف المهام منصة يجب بناؤها وصيانتها، لكن العمل الطويل يحتاج أن يكون قابلًا للمراقبة والمراجعة بعد انتهائه. والطلب التزامني لا يمنحك أيًّا منهما. |
| تغليف الوصول إلى النموذج في خدمة عميل واحدة قابلة لإعادة الاستخدام. | استدعاء النموذج مباشرة من كل مستدعٍ. | العميل الواحد هو الموضع الذي يعيش فيه تحديد المعدل ومعالجة الـ Prompt وسلوك الأخطاء مرة واحدة. أما الاستدعاءات المباشرة فكانت ستنشر الثلاثة عبر قاعدة الشيفرة. |
صار موقع Odoo 18 قادرًا على ترجمة محتواه بنماذج مستضافة محليًا، مع حفظ بنية الصفحة عبر مسار التقسيم وإعادة التجميع.
ويجري عمل الترجمة بوصفه مهام متتبَّعة مع تحليلات، فيرى المسؤولون ما تُرجم وكيف اكتمل التشغيل.
وتتيح صفحات إعدادات التهيئة والأمان تعديل النظام دون تغيير في الشيفرة، ويُبقي تحديد المعدل الطلبَ ضمن سعة النموذج المحلي.
وقُدِّمت الاختبارات والتوثيق التقني بالتوازي مع التنفيذ.
ستُضاف لقطات الشاشة لاحقًا
هل لديك مشروع برمجي أو ذكاء اصطناعي أو RAG أو تطبيق ويب؟ لنتحدث عمّا تحتاجه ونحدد المنهج التقني المناسب.