بدأنا نشر الذكاء الاصطناعي لدينا بالناس، لا بالعمليات
TL;DR
أعطينا كل شخص في الشركة أداة ذكاء اصطناعي واحدة: أقل من 500 شخص، موزّعين على عدة دول في الاتحاد الأوروبي. بدأنا بالعمل اليومي لكل فرد بدلًا من أتمتة العمليات من الأعلى إلى الأسفل. الأداة هي LibreChat، مستضافة ذاتيًا، ومتصلة بـ Azure OpenAI في منطقة تابعة للاتحاد الأوروبي بحيث تبقى البيانات داخل الاتحاد، مع Redakt، كاشف بيانات PII الذي كتبت عنه سابقًا، داخل تدفّق الطلبات. تتناول هذه التدوينة سبب ترتيبنا للأمور بهذه الطريقة وما الذي يتكوّن منه الإعداد.
مساران، ولماذا بدأنا بالناس
إدخال الذكاء الاصطناعي إلى مؤسسة يسير على مسارين. الأول من الأعلى إلى الأسفل: تنظر الإدارة والأقسام في العمليات وتبحث عن المواضع التي يمكن للذكاء الاصطناعي أن يحسّنها. والثاني من الأسفل إلى الأعلى: مساعدة كل فرد على إنجاز عمله اليومي بكفاءة أكبر. تبدأ بالصياغة والتلخيص والترجمة وشقّ طريقك خلال مستند أو جدول بيانات، ثم تتدرّج إلى إنشاء وكلاء (agents) شخصيين يحسّنون سير عمل محدّد جدًا. الهدف الطموح هو أن نجعل الجميع بنّائين (builders)، أو على الأقل أن نمنحهم القدرة على ذلك.
مسار العمليات مهم، لكنه في كثير من المؤسسات، ومنها مؤسستنا، يعتمد جزء كبير منه على بيانات لم تُنظَّف بعد ولم تُربَط جيدًا، وهذا العمل يستغرق وقتًا. المشاريع التي تحتاج إلى تلك البيانات تنتظرها، بينما تمضي مشاريع أخرى قدمًا. أما المسار الفردي فليس لديه هذا الاعتماد، لذا يمكنه تقديم قيمة في وقت أقرب. وما يحتاجه أصغر: أداة قابلة للاستخدام يمتلكها الجميع، وبعض التوجيه حول كيفية استخدامها.
لذلك بدأنا بالناس. وقبل أن تستطيع مساعدة أي شخص في عمله اليومي بالذكاء الاصطناعي، يحتاج الناس إلى الوصول، وهو ما جعل الخطوة الأولى ملموسة: أن نعطي الجميع أداة واحدة يستطيعون جميعًا استخدامها، جيدة بما يكفي لتكون مفيدة، تعمل على بنية تحتية نتحكّم بها، مع بقاء البيانات داخل الاتحاد الأوروبي. وبقية هذه التدوينة عن كيف بنينا ذلك.
ما الذي استخدمناه
اخترنا LibreChat. وهو واجهة أمامية مفتوحة المصدر على غرار ChatGPT، ومعروف إلى حدّ معقول في أوساط الاستضافة الذاتية، رغم أن كثيرين ممن يعملون بالذكاء الاصطناعي لم يصادفوه قط.
بالنسبة لنشر على مستوى الشركة كلها، فهو يغطي الأشياء التي احتجناها:
- تسجيل دخول موحّد (SSO) عبر Azure Entra ID، بحيث يستخدم الوصول إعداد الهوية الموجود لدينا بدلًا من قائمة مستخدمين منفصلة.
- مستضاف ذاتيًا، بحيث يكون النشر ومسار البيانات ملكًا لنا.
- قابل للتوسيع، وهو ما يهمّ لما نريد إضافته لاحقًا.
نظرنا أيضًا في Open WebUI، الخيار الشائع الآخر في هذا المجال. كلاهما قادر. لكن LibreChat كان أخفّ قليلًا في التشغيل بالنسبة لاحتياجاتنا، فاستقررنا عليه.
البنية التقنية
النموذج هو GPT-5، يعمل على Azure OpenAI في Sweden Central، على نشر ضمن منطقة بيانات تابعة للاتحاد الأوروبي (EU data zone) يُبقي المعالجة داخل الاتحاد امتثالًا لـ GDPR. ويتولّى نموذج أصغر وأرخص المهام الخلفية مثل توليد عناوين المحادثات.
يكلّف GPT-5 نحو 1.25 دولار لكل مليون رمز (token) إدخال و10 دولارات لكل مليون رمز إخراج. ليس رخيصًا. وما يجعله صالحًا كأداة للجميع هو الفوترة حسب الاستخدام. تبلغ تراخيص المقعد الواحد نحو 20–30 يورو للشخص شهريًا، ومع بضع مئات من الأشخاص، يستخدمها معظمهم استخدامًا خفيفًا، فإن ذلك يعني قدرًا كبيرًا من الوصول المدفوع الذي يبقى دون استخدام. ومع الاستدلال (inference) حسب الاستخدام لا ندفع إلا مقابل ما يُستخدم فعلًا، لذا فإن الغالبية التي بالكاد تلمسه لا تكلّف شيئًا تقريبًا. وما زلنا نوفّر أدوات بنظام المقعد مثل Claude وCopilot لمن يعيشون داخلها، لكن هذا هو الطبقة الأساسية تحتها.
كشف بيانات PII عبر Redakt
Redakt هو خدمة كشف بيانات PII التي بنيتها وكتبت عنها سابقًا. وصلناه بأداة الدردشة الداخلية لدينا بحيث يقع بين عميل LibreChat وواجهة Azure للاستدلال (API)، ويفحص المحادثة وهي تمرّ. يعمل بشكل غير متزامن، لذا لا يضيف أي زمن استجابة إلى الدردشة.
في الوقت الحالي يكتفي بالتحذير. إذا كان أحدهم على وشك إرسال اسم أو عنوان أو غير ذلك من بيانات العملاء، يضع Redakt علامة عليها. ويمكن أيضًا ضبطه ليُطلق خطأً، وعندئذٍ يمنع تخصيصُنا المحادثةَ من الاكتمال على هذا الأساس، لكننا بدأنا بالتحذيرات بدلًا من الحجب.
فعلنا ذلك عن قصد. فالتحذير في اللحظة التي يلصق فيها أحدهم بيانات شخصية يتيح للناس تعديل عاداتهم أولًا بأنفسهم. والانتقال من التحذير إلى الحجب لاحقًا هو مجرد تغيير في الإعدادات، بعد أن يكون الناس قد اعتادوا الأداة.
كيف نوسّعه
لدى LibreChat طريقتان لإضافة القدرات، وكلتاهما مهمّتان لما نتجه به نحوه.
فيه ميزة agents مدمجة. وهي نسخة مبسّطة من الفكرة: إعداد مسمّى يجمع نموذجًا، وموجّه نظام (system prompt)، وأدوات، وملفات معرفة، يستطيع المستخدم أن يدردش معه. وهي محدودة مقارنةً بإطار وكلاء كامل، لكنها تكفي لأشياء مثل مساعد سياسات أو مساعد صياغة، دون كتابة أي شيفرة.
ولأي شيء يتجاوز ذلك، تبني الوكيل في إطار مثل Haystack أو LangGraph، وتعرضه خلف نقطة نهاية (endpoint) متوافقة مع OpenAI، ثم تضيف تلك النقطة إلى LibreChat. عندئذٍ يظهر الوكيل في الواجهة نفسها التي يستخدمها الجميع أصلًا. ويدعم LibreChat أيضًا خوادم MCP لربط الأدوات ومصادر البيانات. والتوثيق يغطي النطاق كاملًا.
أول شيء سنوصله هو Sherpa، وهو دليل لتبنّي الذكاء الاصطناعي أعمل عليه، لمساعدة الزملاء على اكتشاف كيفية استخدام الذكاء الاصطناعي في عملهم الخاص.
ما الذي يأتي تاليًا
مسار العمليات يتقدّم بالتوازي. جزء منه جارٍ بالفعل، والأجزاء التي تعتمد على بيانات أنظف وأفضل ترابطًا ستنفتح مع اكتمال ذلك العمل. أما المسار الفردي فهو في هذه الأثناء يقدّم قيمة بالفعل، وهو يتراكم: لا يتعلّم الناس مدى ما يمكنهم دفع أداة إليه إلا باستخدامها. ومساعدة الزملاء في المهام اليومية تبني تلك الألفة، وأملي أن تفتح استخدامات أرقى للذكاء الاصطناعي ما كانوا ليصلوا إليها لولا ذلك، وهو بالضبط ما وُجد من أجله جهد التدريب وأدوات مثل Sherpa.
أداة مشتركة وبعض التوجيه هو كل ما يحتاجه المسار الفردي للانطلاق. أما العمل الأكبر على مستوى العمليات فيسير بالتوازي إلى جانبه.