اذهب إلى المحتوى

حسام أحمد3

الأعضاء
  • المساهمات

    1
  • تاريخ الانضمام

  • تاريخ آخر زيارة

1 متابع

آخر الزوار

396 زيارة للملف الشخصي

إنجازات حسام أحمد3

عضو مساهم

عضو مساهم (2/3)

15

السمعة بالموقع

  1. تستعمل العديد من الشركات اليوم كلًا من وحدة المعالجة المركزية CPU ووحدة المعالجة الرسومية GPU لتحسين أداء طيف واسع من التطبيقات بداية من مراكز البيانات Data centers وصولًا إلى الأجهزة المحمولة وغيرها من الاستخدامات المفيدة، وسنشرح في هذا المقال كل وحدة معالجة وآلية عملها ونوضح أهم أوجه التشابه والاختلاف بينهما، وحالات الاستخدام المناسبة لكل منهما، لنساعدكم على تقرير الوحدة الأفضل لمشروعكم أو نشاطكم التجاري. تطور المعالجات الحاسوبية أصبحت وحدة المعالجة المركزية Central Processing Unit -أو CPU اختصارًا- مكونًا أساسيًا في أنظمة الحواسيب منذ بداية سبعينيات القرن الماضي، فتطورت من مجرد آلات بسيطة لإجراء الحسابات والمعالجات الرياضية إلى معالجات متعددة النواة وبالغة التعقيد. فكان إصدار إنتل لمعالجها 4004 في عام 1971علامة فارقة لبداية حقبة وحدات المعالجات المركزية الحديثة ومهد الطريق للتطورات المتسارعة في قدرات المعالجة، ومع مرور الزمن أصبحت وحدات المعالجة المركزية CPUs أكثر تخصصًا وتعقيدًا حيث ظهرت ابتكارات مثل خطوط أنابيب تجزئة تنفيذ التعليمات Instruction pipelining ومتنبئ التعليمات التفرعية Branch Predictor و تقنية خيوط المعالجة الفائقة Hyper-threading وقد دفعت هذه التقنيات بحدود المعالجة الحاسوبية العامة إلى الأمام. ثم ظهرت وحدة المعالجة الرسومية Graphics Processing Unit -أو GPU اختصارًا- في بداية التسعينيات لتلبي الطلب المتزايد على المعالجة الرسومية في ألعاب الفيديو ورسوميات الحواسيب. وعلى النقيض من وحدات المعالجات المركزية CPUs التي كانت مصممة لتنفيذ التعليمات على التسلسل sequential فقد صممت المعالجات الرسومية GPUs للتعامل مع الحسابات والعمليات على التوازي parallel من أجل تنفيذ المهام الرسومية المعقدة، وكان تقديم نيفيديا لمعالجها جيفورس GeForce 256 في عام 1999 بداية حقبة جديدة للعتاد المخصص للرسوميات القادر على تخفيف الحمل الحاسوبي عن وحدات المعالجات المركزية CPUs في مهام المعالجة الرسومية. صُممت وحدات المعالجة المركزية والرسومية في البداية لأغراض مختلفة، لكن في السنوات الأخيرة بدأت قدراتهما وأدوارهما تتداخل مع بعضها البعض، فأصبحت وحدات المعالجة المركزية CPUs مدمجة مع قدرات المعالجة على التوازي، وصارت وحدات المعالجة الرسومية GPUs أكثر شمولًا وتنوعًا وظهرت لها تطبيقات أخرى غير الرسوميات مثل حل المسائل العلمية المعقدة وتطبيقات تعلم الآلة، كما حظت المعالجات الرسومية بشعبية كبيرة في السنوات الأخيرة نتيجة أدائها المبهر في أداء مهام الذكاء الاصطناعي وبالتحديد قدرتها على المعالجة المتوازية parallel computing فكانت الأداة المثالية لتدريب شبكات التعلم العميق وإجراء العمليات الحسابية على المصفوفات الضخمة التي تلعب دورًا أساسيًا في العديد من خوارزميات الذكاء الاصطناعي، مما دفع إلى اكتشافات علمية متقدمة في مجالات بحثية وتطبيقية مختلفة مثل الرؤية الحاسوبية Computer Vision ومعالجة اللغات الطبيعية Natural Language Processing والذكاء الاصطناعي التوليدي Generative AI. ما هي وحدة المعالجة المركزية CPU وحدة المعالجة المركزية CPU هي المكون الرئيسي في أجهزة الحواسيب، فهي تقوم بأغلب العمليات والمعالجة، ويشار إليها في سياقات كثيرة بعقل الحاسوب، وتنفذ وحدة المعالجة المركزية CPU التعليمات والحسابات وتنظم الأنشطة المختلفة للعتاد الحاسوبي. وتسود اليوم معالجات متعددة الأنوية multi-core processors قادرة على تنفيذ العديد من المهام في نفس الوقت مستغلة قدرات المعالجة المتوازية والمعماريات المتقدمة. وقد تحتاج بعض الشركات لاستخدام أنظمة شديدة الاعتماد على استهلاك وحدة المعالجة المركزية CPU-intensive لإجراء تحليل متقدم للبيانات، مثل معالجة مجموعات من البيانات الكبيرة الخاصة بالعملاء لاكتشاف أنماط شرائهم، وتوقع اتجاهات السوق المستقبلية. آلية عمل وحدة المعالجة المركزية CPU تعمل وحدة المعالجة المركزية CPU من خلال حلقة من العمليات معروفة باسم دورة تنفيذ التعليمات وتتكون من ثلاث خطوات وهي الجلب Fetch و فك التشفير Decode ثم التنفيذ Execute، وتكون هذه الخطوات معًا أساس جميع عمليات وحدة المعالجة المركزية CPU. والآن لنستكشف المكونات الرئيسية والخطوات المرتبطة بمعالجة التعليمات وتنفيذها لنفهم كيفية عمل وحدة المعالجة المركزية CPU: وحدة التحكم Control unit تعد وحدة التحكم بمثابة مركز القيادة الخاص بوحدة المعالجة المركزية CPU، فهي تدير وتنسق كل العمليات الخاصة بوحدة المعالجة المركزية CPU. وحدة الحساب والمنطق ALU‎ تجري في وحدة الحساب والمنطق Arithmetic Logic Unit -أو ALU اختصارًا- كل العمليات الحسابية والمنطقية مثل الجمع والطرح والمقارنة، فهي تشكل أساس القدرات الحسابية لوحدة المعالجة المركزية CPU. السجلات Registers هي وحدات تخزين فائقة السرعة توجد بداخل شريحة وحدة المعالجة المركزية CPU، حيث تحتفظ هذه السجلات Registers بالبيانات التي تعمل عليها وحدة المعالجة المركزية CPU حاليًا، مما يسمح بسرعة الوصول لها والتعديل عليها. الذاكرة المخبئية Cache الذاكرة المخبئية Cache هي ذاكرة مؤقتة صغيرة الحجم مبنية بداخل وحدة المعالجة المركزية وهي تتميز بسرعتها وتستخدم لتخزين البيانات والتعليمات التي يُحتمل استخدامها بشكل متكرر لتسريع المعالجة، ولكنها أقل سرعة من السجلات Registers وأكبر منها في الحجم. الجلب Fetch تجلب وحدة المعالجة المركزية CPU في هذه الخطوة التعليمات من الذاكرة، ويحدد عداد البرنامج program counter موقع التعليمة الذي ستفذ حاليًا، فعداد البرنامج هو عبارة عن سجل مخصص لمتابعة وتعقب التعليمات المطلوب تنفيذها، ويحدّث نفسه تلقائيًا ليشير للتعليمة التالية. فك التشفير Decode تأتي هذه الخطوة بعد جلب fetching التعليمة حيث يجري تفسيرها بواسطة وحدة المعالجة المركزية CPU، وتعمل وحدة التحكم Control Unit على فك تشفير العمليات وتحديد ما هي العمليات التي ينبغي تنفيذها، وما هي البيانات التي تحتاجها هذه العملية. التنفيذ Execute تنفذ وحدة المعالجة المركزية CPU التعليمة، وقد يتطلب التنفيذ عمليات حسابية أو منطقية باستخدام وحدة الحساب والمنطق ALU، أو نقل بيانات خلال السجلات المختلفة، أو التفاعل مع أجزاء مختلفة من الحاسوب. التخزين Store إن كانت العملية المُنفذَّة تعيد نتيجة فسوف تحفظ هذه النتيجة في سجل register أو في الذاكرة، ويُحَدَّث عداد البرنامج program counter ليشير للتعليمة القادمة، لتبدأ نفس الحلقة في التكرار مجددًا. ما هي وحدة المعالجة الرسومية GPU تعد وحدة المعالجة الرسومية GPU دارة إلكترونية مخصصة ومصممة للتعديل على الذاكرة بسرعة، وتسريع إنشاء الصور في ذاكرة مخصصة لعرض ولإخراج المعلومات على أجهزة العرض تسمى frame buffer، وقد طُوّرت في البداية لأغراض عرض الرسوميات ثلاثية الأبعاد في ألعاب الفيديو، ثم تطورت لتصبح معالجات متوازية قووية قادرة على التعامل مع العمليات الحسابية المعقدة على التزامن. وتحتوي وحدات المعالجة الرسومية GPUs على آلاف من الأنوية cores الصغيرة وعالية الكفاءة المصممة للتعامل مع مهام متعددة على التوازي، مما يجعلها الخيار المثالي لمهام المعالجة المتوازية التي تتجاوز التطبيقات الرسومية. تستخدم الشركات اليوم قدرات وحدات المعالجة الرسومية GPUs لتطوير وتشغيل نماذج تعلم الآلة الضخمة على نطاق واسع، وهذا يتيح لها تحقيق تقدم متسارع في تخصيص وتشخيص تجربة أنظمة التوصية الخاصة بها، وتستخدم أيضًا في تطوير تقنيات المركبات ذاتية القيادة وفي خدمات الترجمة الفورية في الوقت الحقيقي وغيرها من التطبيقات الذكية. آلية عمل وحدة المعالجة الرسومية GPU تعمل وحدات المعالجة الرسومية GPUs بمبادئ مشابهة لتلك التي تتبعها وحدات المعالجة المركزية CPUs ولكنها مصممة ومحسنة لمهام المعالجة المتوازية، وهذا يجعلها الخيار الأنسب لعرض الرسوميات ولأنواع معينة من المهام. وسنشرح تاليًا آلية عمل وحدة المعالجة الرسومية GPU: المعالجات متعددة التدفق SMs‎ تكافئ المعالجات متعددة التدفق Streaming Multiprocessors -أو SMs اختصارًا- الأنوية cores المستخدمة في وحدات المعالجة المركزية ولكن يحتوي كل معالج متعدد التدفق SM على وحدات معالجة أصغر ومتعددة ما يكسبه القدرة على التعامل مع تدفق كبير من البيانات حيث تُمكّن هذه المعمارية وحدات المعالجة الرسومية GPUs من التعامل مع العديد من المهام بنفس الوقت. أنوية كودا CUDA Cores تقع هذه الأنوية بداخل وحدات معالجة التدفق SM، وهي المسؤولة عن المعالجة بداخلها، وهي أبسط من أنوية وحدة المعالجة المركزية CPU ولكنها توجد بأعداد أكبر بكثير، حيث قد يوجد في وحدة المعالجة الرسومية GPU آلاف منها. وحدات رسم الخامة TMUs‎ تعمل وحدة رسم الخامة Texture Mapping Unit أو TMU اختصارًا على رسم الخامة أو السطح الخارجي للنماذج ثلاثية الأبعاد بسرعة كبيرة، وهي وظيفة فريدة توجد فقط في وحدات المعالجة الرسومية GPUs وليست موجودة في وحدات المعالجة المركزية CPUs. ذاكرة الفيديو VRAM‎ تتشابه ذاكرة الفيديو Video Memory في الوظيفة مع ذاكرة الوصول العشوائي الخاصة بوحدة المعالجة المركزية CPU، ولكنها محسنَّة لمهام المعالجة الرسومية، وهي في الغالب أسرع وتمتلك معدل نقل بيانات أكبر من الذي تملكه ذاكرة RAM. الجلب Fetch تمتلك وظيفة مماثلة لتلك الخطوة الخاصة بجلب التعليمات في وحدة المعالجة المركزية CPU، ولكنها مصممة بشكل أفضل لتنفيذ العديد من التعليمات المتشابهة على التوازي بذات الوقت. فك التشفير Decode تشابه هذه الوظيفة نظيرتها في وحدة المعالجة المركزية CPU والاختلاف بينهما هو تحسين هذه الوظيفة في GPU لتناسب مع المهام المتعلقة بمعالجة الرسوميات. التنفيذ Execute تختلف هذه الخطوة بشكلٍ جذري عن نظيرتها في وحدة المعالجة المركزية CPU، حيث تُنفِّذ وحدات المعالجة الرسومية GPUs العديد من التعليمات المتشابهة بشكل متزامن من خلال عدد كبير من أنوية كودا CUDA cores في عملية تسمى Single instruction Multiple Data -أو SIMD اختصارًا- والتي تعني إمكانية تنفيذ نفس التعليمة على عدة بيانات في نفس الوقت. التخزين Store تُحفظ النتائج عادة في ذاكرة الفيديو Video Random Access Memory -أو VRAM اختصارًا- ويسمح المستوى العالي من التوازي الذي توفره وحدات المعالجة الرسومية GPUs بتحقيق معدل نقل بيانات كبير جدًا من أجل تنفيذ المهام المتعلقة بالرسوميات. مقارنة بين وحدة المعالجة المركزية CPU ووحدة المعالجة الرسومية GPU تعد كلتا وحدتي المعالجة المركزية والرسومية مكونات ضرورية في أنظمة الحوسبة الحديثة، وقد صُمّمت كل وحدة معالجة منهما بأولويات ومسؤوليات مختلفة وهدف تصميمي مختلف، لذا من الضروري فهم الفروقات بينهما لتحديد المناسب لنا من بينهما. الوظيفة الأساسية صُمّمت وحدات المعالجة المركزية CPUs لتكون شاملة ومتعددة الأغراض وقادرة على التعامل مع طيف واسع من المهام بكفاءة عالية، فهي تتميز في المعالجة المتسلسلة sequential processing، كما أنها مُحسّنة لاتخاذ القرارات المعقدة، وتتحكم وحدة المعالجة المركزية CPU في العتاد الحاسوبي والتنسيق بين البرامج المختلفة لتشغيلها. بنما كانت وحدات المعالجة الرسومية GPUs متخصصة في البداية في عرض الرسوميات graphics rendering، ولكنها تطورت مع الوقت لتصبح معالجات فائقة لها القدرة على المعالجة المتوازية parallel processors. وهي اليوم تشغّل التعليمات تمامًا كوحدات المعالجة المركزية CPUs ولكنها محسنة للتعامل مع الكثير من العمليات الحسابية المتزامنة. فوحدات المعالجة المركزية CPU متنوعة القدرات وشاملة المهام، في حين أن وحدات المعالجة الرسومية تتميز بالتخصص والتفوق في تنفيذ المهام القابلة للتقسيم إلى مهام كثيرة جدًا والتي تتميز بكونها مهام متشابهة ويمكن حسابها بشكل مستقل عن بعضها البعض. المعالجة تُنفِّذ وحدات المعالجة المركزية CPUs العمليات بشكل متتابع أو متسلسل، حيث تُنفِّذ التعليمات المعقدة واحدة تلو الأخرى وتستخدم تقنيات مخصصة مثل التنبؤ بالتعليمات المتفرعة أو الشرطية branch prediction أو التنفيذ غير المراعي للترتيب Out-of-Order Execution الذي يسمح بتنفيذ التعليمات بترتيب مختلف عن ترتيبها الأصلي في البرنامج لتحسين عملية المعالجة المتسلسلة، حيث تشبه وحدات المعالجة المركزية CPUs المدير المنظم فهي تنسق وتتعامل مع مهام متنوعة وتتخذ القرارات المعقدة بسرعة. من ناحية أخرى، تعالج وحدات المعالجة الرسومية GPUs المهام بالتوازي، فتنفّذ العديد من التعليمات البسيطة بشكل متزامن عبر عدد ضخم من الأنوية، وتحتوي هذه الأنوية على عدد ضخم من الخيوط threads البسيطة التي يمكنها تنفيذ عمليات بسيطة للغاية ولكن عددها الضخم يمكِّنها من معالجة كمية بيانات أكبر بنفس الوقت، فبينما تشبه وحدة المعالجة المركزية CPU المدير، تشبه وحدة المعالجة الرسومية GPU خط التجميع في المصانع حيث يوكل لكل عامل أو آلة جزء معين من العمل، وبهذا يمكن لهذه الوحدة معالجة كميات ضخمة من البيانات المتشابهة في وقت واحد. تصميم الهيكلية تمتلك وحدات المعالجة المركزية CPUs في الغالب من 2 إلى 64 نواة معقدة التركيب ومزودة بذاكرة مخبئية Caches ووحدات تحكم Control units مخصصة ومعقدة، حيث صممت هذه المكونات لتحقق أقل معدل تأخير في الاستجابة low latency، فتستطيع كل نواة التعامل مع مهام متنوعة بشكل مستقل، فتولي هذه الهيكلية أهمية للتنوع في القدرات وسرعة الاستجابة لعدد واسع ومتنوع من المهام. بينما تجمع وحدات المعالجة الرسومية GPUs مئات أو آلاف الأنوية البسيطة فيما يعرف بمعالجات متعددة التدفق streaming multiprocessors أي يمكنها معالجة عدة تدفقات من البيانات في وقت واحد، وعلى عكس وحدات المعالجة المركزية CPUs فإن أنوية وحدات المعالجة الرسومية GPUs تتشارك في وحدات التحكم والذاكرات المخبئية بداخل كل معالج متعدد، وتختلف هذه المعمارية عن وحدات المعالجة المركزية CPUs بحيث تسمع لوحدات المعالجة الرسومية GPUs بمعالجة كميات ضخمة من البيانات من خلال عمليات متشابهة عليها، فهي لا تعتمد أنوية معقدة كما في وحدات المعالجة المركزية بل تستخدم أنوية بسيطة وصغيرة تكمن قوتها وتفوقها بقدرتها في العمل على التوازي على عدد كبير من البيانات. حالات الاستخدام تبرز أهمية وحدات المعالجة المركزية CPUs في المهام التي تطلب اتخاذ قرارات معقدة، وتنفيذ عمليات متنوعة، أو تغيرات متكررة في تدفق تنفيذ العمليات. فتشغل هذه الوحدات أنظمة التشغيل والمتصفحات. وتعد الخيار الأول لمهام مثل إدارة قواعد البيانات وتشغيل برامج الإنتاجية والتنسيق بين عمليات النظام المختلفة. في حين تبرز أهمية وحدات المعالجة الرسومية GPUs في الحالات التي تتضمن إجراء العديد من العمليات الحسابية في نفس الوقت عبر عدد كبير من البيانات المتجانسة أي البيانات المتشابهة أو المتطابقة من حيث الهيكل أو النوع، فهي تتشارك مع وحدات المعالجة المركزية CPUs في القدرة على القيام بالعمليات الحسابية لكنها تتفوق بشكل جليّ في المهام التي تطلب عرض رسومات ثلاثية الأبعاد وكثيرة التفاصيل، أو في تدريب نماذج تعلم الآلة أو تنفيذ عمليات محاكاة لظواهر علمية تتطلب حسابات ضخمة، ففي كل هذه التطبيقات تتفوق وحدات المعالجة الرسومية GPUs على وحدات المعالجة المركزية CPUs عشرات المرات وربما مئات المرات من حيث الأداء، مما يعطيها دورًا لا غنى عنه في مجالات مثل رسوميات الحاسوب، والذكاء الاصطناعي والحوسبة عالية الأداء. دمج وحدة المعالجة المركزية CPU مع وحدة المعالجة الرسومية GPU تستخدم الأنظمة الحاسوبية الحديثة كلًا من وحدة المعالجة المركزية CPU ووحدة المعالجة الرسومية GPU لتحسين التطبيقات والمهام. ويعرف هذا النهج بالحوسبة الهجينة، حيث تسمح هذه الطريقة لكل معالج بالتركيز على الأمور التي يتفوق فيهل، فتتعامل وحدات المعالجة المركزية CPUs مع المهام المعقدة المتسلسلة، وتتولى وحدات المعالجة الرسومية GPUs الحسابات المتوازية، ويعزز هذه الدمج في التقنيات أداء الأنظمة ويساعد في العديد من المجالات بداية من المحاكاة العلمية والذكاء الاصطناعي وصولًا إلى إنشاء المحتوى، ولنستعرض بعض الأمثلة على حالات يمكننا فيها دمج CPU مع GPU. لنفترض أن شركة ناشئة تطور نظامًا لاكتشاف الكائنات في الوقت الحقيقي من أجل المركبات ذاتية القيادة، فيمكن للشركة في هذه الحالة أن تستخدم وحدة المعالجة المركزية CPU في معالجة البيانات المتدفقة من المستشعرات واتخاذ قرارات سريعة، بينما تستخدم وحدة المعالجة الرسومية GPU في تشغيل نظام من الشبكات العصبية الاصطناعية Artificial Neural Networks المعقدة للتعرف على الكائنات في البيئة المحيطة بالمركبة. مثال آخر، لنفترض أن شركة تقنيات مالية تريد تطوير منصة تداول وتتوقع ورود طلبات تداول كثيرة في نفس الوقت، فيمكنها أن تستخدم وحدات المعالجة المركزية CPUs لإدارة عملية التداول وتشغيل الخوارزميات المعقدة، بينما تستفيد من وحدات المعالجة الرسومية GPUs في تحليل بيانات السوق بسرعة وتقييم المخاطر التسويقية من خلال عمليات حسابية تنفذ على التوازي. أخيرًا، لنفترض أن لدينا استوديو تطوير ألعاب ونريد صناعة لعبة عالم مفتوح متعددة الشخصيات واللاعبين، فيمكننا في هذه الحالة استخدام وحدات المعالجة المركزية CPUs في تنفيذ منطق اللعب وإضافة سلوك الذكاء الاصطناعي للعبة، بينما نعتمد على وحدات المعالجة الرسومية GPUs في عرض الرسومات المعقدة ثلاثية الأبعاد ومحاكاة الظواهر الطبيعية ومحاكاة الفيزياء لإنشاء تجربة لعب مبهرة بصريًا. ترجمة وبتصرف لمقالة ?What is the Difference Between CPU and GPU. اقرأ أيضًا تعدد المهام Multitasking في الحواسيب وحدة المعالجة المركزية تعرف على وحدة المعالجة المركزية وعملياتها في معمارية الحاسوب استكشف مصطلحات الذكاء الاصطناعي التوليدي توليد النصوص باستخدام النماذج اللغوية الكبيرة LLMs
  2. أصبحت أدوات الذكاء الاصطناعي من الأساسيات التي لا غنى عنها للمبرمجين اليوم، حيث تساعد هذه الأدوات في زيادة الإنتاجية، والتخلص من المهام التكرارية، والتفرغ لحل المشكلات البرمجية الأكثر أهمية، وقد اخترنا لكم في هذه المقالة واحدة من أدوات الذكاء الاصطناعي القوية والمفيدة لأي مبرمج وهي المساعد الذكي GitHub Copilot الذي أصبح يوفر خطة استخدام مجانية من خلال دمجه مع محرر الأكواد Visual Studio Code، حيث سنوضح أهم الميزات التي يوفرها هذا المساعد الذكي، ونوضح حالات استخدامه المختلفة لكتابة أكواد محسنة وموثقة جيدًا واكتشاف الأخطاء وحلها بكفاءة من داخل المحرر مباشرة دون الحاجة لنسخ فقرات الكود ولصقها في نماذج الذكاء الاصطناعي الخارجية. المتطلبات نحتاج قبل بدء استكشاف المساعد البرمجي GitHub Copilot إلى التأكد من تجهيز بيئة عملنا بإعداد الأمور التالية: تنزيل محرر الأكواد فيجوال ستوديو كود VS Code إنشاء حساب على منصة GitHub تنزيل إضافة GitHub Copilot و GitHub Copilot Chat لمحرر الأكواد VS Code ملاحظة: قد تكون الإضافات المطلوبة محمّلة بالفعل في محرر الأكواد، وفي هذا الحالة سنتخطى خطوة تنزيلها. خطوات ربط GitHub Copilot بمحرر أكواد VS code يمكننا من خلال محرر الأكواد VS code الاستفادة من تجربة وصول محدودة لاستخدام GitHub Copilot حيث تُمنح لنا خمسون محادثة لاستخدامها في الاستفسار من المساعد البرمجي و 2000 مرة لإكمال الكود البرمجي تجدد شهريًا، وسنتطرق في نهاية المقال لكيفية الحصول على الخطة المميزة pro بالمجان للطلبة والمعلمين والمساهمين في المشاريع مفتوحة المصدر بما يتوافق مع بعض الشروط التي تضعها منصة GitHub. بمجرد أن نفتح محرر أكواد VS code سنجد أيقونة بها شعار Github Copilot، نضغط عليها أو نفتح القائمة المنسدلة حيث سنجد خيار باسم Use AI features with Copilot for Free وباختياره تفتح نافذة جانبية ترحيبية وتطالبنا بالموافقة على الشروط والأحكام من خلال الضغط على زر Use Copilot for Free، وننصح بالاطلاع عليها قبل الموافقة. كي نتمكن من فتح نافذة الحوار مع المساعد البرمجي يمكننا استخدام الأيقونة أو اختصار الوصول السريع من لوحة المفاتيح Ctrl+ALT+I. وفي حال لم نتمكن من العثور على هذه الأيقونة أو وجدناها غير مفعلة فعلينا تسجيل الدخول إلى حساب Github الخاص بنا وربطه بمحرر الأكواد، من خلال أيقونة الحسابات Accounts الموجودة أسفل يسار الصفحة في محرر الأكواد فوق أيقونة الإعدادات، فمن خلالها نصادق على وصول محرر الأكواد VS code لحسابنا على Github والذي تحتاجه إضافة Github Copilot للعمل. اختيار نموذج الذكاء الاصطناعي يوفر Github Copilot لمستخدميه في الخطة المجانية إمكانية اختيار نموذج الذكاء الاصطناعي المشغِّل لمساعد الذكاء الاصطناعي، حيث يتاح حاليًا نموذجان فقط هما GPT 4o و Claude 3.5 sonnet. بينما تتيح الخطط المميزة المدفوعة الوصول إلى نماذج أقوى مثل OpenAI o1 و OpenAI o1-mini. ملاحظة: قد تتغير هذه النماذج بمرور الوقت وتطور إلى نماذج أخرى، من الأفضل حاليًا استخدام GPT4o أو Claude Sonnet 3.5 في تعديل ملفات الكود، بينما يفضل استخدام o1 لفهم وشرح الكود، وقد يختلف الأمر حسب حالة الاستخدام التي نتعامل معها لذا يمكن التبديل بين النماذج المتاحة ومقارنة نتائجها لنقرر الأنسب حسب كل حالة. حالات استخدام Github Copilot ضمن محرر الأكواد بعد ربط أداة الذكاء الاصطناعي بمحرر الأكواد، يمكننا الاستفادة من هذه الأداة في العديد من حالات الاستخدام العملية التي تسهل عملنا البرمجي وتزيد إنتاجيتنا. لنسعرض في الفقرات التالية أهم الحالات التي يمكننا الاستفادة منها من دمج مساعد الذكاء الاصطناعي GitHub Copilot مع محرر الأكواد. اقتراح إكمال الكود البرمجي لننشئ مجلدًا جديدًا و نفتحه في المحرر VS code، ثم ننشئ ملفًا باسم binary_search.py لنكتب خوارزمية البحث الثنائي وهي خوازرمية بحث مشهورة بكفاءتها، لنجرب أولًا كتابة تعريف دالة تستقبل مجموعة من الأرقام في مصفوفة Array، ونرى كيف سيقترح علينا المساعد البرمجي الكود المناسب للبحث ضمنها. بمجرد أن نكتب تعريف الدالة البرمجية سنلاحظ ظهور كود بلون رمادي خافت، هذا الكود هو اقتراح المساعد البرمجي ويمكننا الوقوف عليه بالمؤشر ورؤية شريط به بعض عناصر التحكم، فمثلًا قد نرى 1/2 والتي تعني أن هذا هو أحد اقتراحين، ويمكن أن نتجاهل الاقتراحات بمتابعة الكتابة أو يمكننا قبول الاقتراحات بالضغط على زر Accept أو على مفتاح Tab على لوحة المفاتيح، وكذلك يمكننا التحكم بمقدار ما نريد قبوله من الاقتراح باستمرار الضغط على زر Ctrl مع أحد أزرار الأسهم. يمكننا أيضًا كتابة تعليق يصف ما نريد وبمجرد النزول سطرًا سيقترح المساعد البرمجي كود ينفذ التعليق. تعديل عدة ملفات بأوامر مكتوبة وصوتية يتميز مساعد Github Copilot عن باقي أدوات الذكاء الاصطناعي الخارجية في وصوله للسياق البرمجي وقاعدة الأكواد التي نعمل عليها، وقدرته على التعديل على الملفات في الوقت الفعلي، ولا يقتصر الأمر على تعديل ملف واحد فيمكننا تعديل عدة ملفات بذات الوقت. لنجرب ميزة تعديل عدة ملفات معًا من خلال تطبيق خوارزميات ترتيب مشهورة سنكتبها في نفس ملف binary_sort كما في الصورة التالية: يمكننا بالطبع توليد هذه الدوال بمساعدة Github Copilot، كما نلاحظ هنا فإن اسم الملف لا يعبر عن الخوارزمية المطبقة -وهذا خطأ مقصود- لنرى كيف سيتعامل معه المساعد في خطوة لاحقة. لنفتح الآن نافذة الحوار ونكتب الموجّه prompt المناسب لطلب تعديل الملفات ويمكن استخدام أيقونة الميكروفون لتوجيه أمر صوتي. سيقترح Github Copilot التعديلات المناسبة وسيظهر لنا الاختلافات بين الملفات القديمة والتي أنشئت حديثًا، سنرى الأكواد التي حذفت مظللة بلون أحمر والتي أضيفت بلون أخضر، ولكن لن تطبق أو تضاف هذه التعديلات حتى نقبلها بالضغط على زر Accept. تحسين الكود البرمجي يمكننا مناقشة المساعد البرمجي Github Copilot في آلية كتابة كودنا البرمجي وكيفية تحسينه أو حل مشكلاته من خلال نافذة الحوار والتي تعد واحدة طرق متعددة للتواصل مع المساعد البرمجي، حيث يمكننا التواصل معه أيضًا من خلال محرر الأكواد بشكل مباشر وتفاعلي، أو من خلال سطر الأوامر أو الطرفية terminal المدمجة بمحرر أكواد VS code، أو من خلال واجهة VS code المحسنة لنجعل تجربة الاستخدام أكثر سلاسة. بملاحظة المثال السابق في تعديل الملفات سنجد عدة مشاكل واضحة، تحتاج لتصحيح بشري، ولهذا من المهم جدًا أن لاتسلم بصحة الكود المولد من أدوات الذكاء الاصطناعي دون مراجعته وتعديله، فأداة Github Copilot شأنها شأن أي أداة ذكاء اصطناعي آخرى فهي مفيدة لزيادة إنتاجيتك إن كنت بالفعل على دراية بالكود والمنطق المراد تنفيذه. تتمثل الأخطاء التي قام بها المساعد الذكي في حذف الدوال الأخرى من الملف الأول فقط، وبالتالي سنحتاج تصحيح هذا الخطأ بالإضافة لتحديث وتصحيح تسمية الملف الأول binary_sort إلى binary_seach فهو ليس خوارزمية ترتيب إنما خوارزمية بحث وهو خطأ مقصود نريد أن نختبر قدرته على اكتشافه. سنجد أن المساعد اكتشف المشكلات بالفعل ووضحها لنا في قائمة مرقمة، كما في الصورة التالية، ويمكننا أن نطلب منه تطبيقها. سيطبق المساعد الذكي هذه التعديلات، ولكن بتصفح الملفات نلاحظ أنه يقترح علينا كمُراجِع للكود code reviewing تعديل أو تصحيح بعض الأشياء، وهذه قد تكون ميزة مفيدة لاكتشاف الأخطاء أو المشاكل. يمكننا النقاش أيضًا حول تطبيق خوارزمية معينة وكيفية تحسينها كما في المثال التالي. كتبنا بداية الكود التالي بلغة بايثون والذي يتضمن تنفيذ لخوارزميتي الترتيب بالإدراج Insertion Sort والترتيب بالدمج Merge Sort من أجل ترتيب العناصر داخل قائمة وذلك قبل المناقشة والتحسين: def insertion_sort(arr): for i in range(1, len(arr)): key = arr[i] j = i - 1 while j >= 0 and arr[j] > key: arr[j+1] = arr[j] j -= 1 arr[j+1] = key def merge_sort(arr): if len(arr) > 1: mid = len(arr) // 2 left_half = arr[:mid] right_half = arr[mid:] merge_sort(left_half) merge_sort(right_half) i = j = k = 0 while i < len(left_half) and j < len(right_half): if left_half[i] < right_half[j]: arr[k] = left_half[i] i += 1 else: arr[k] = right_half[j] j += 1 k += 1 while i < len(left_half): arr[k] = left_half[i] i += 1 k += 1 while j < len(right_half): arr[k] = right_half[j] j += 1 k += 1 وفيما يلي الكود بعد التحسين واستخدام أسلوب يدمج بين خوارزميتي الترتيب لجمع ميزاتهما معًا: # This file contains implementation of merge sort algorithm. def insertion_sort(arr): for i in range(1, len(arr)): key = arr[i] j = i - 1 while j >= 0 and arr[j] > key: arr[j+1] = arr[j] j -= 1 arr[j+1] = key def merge_sort(arr, threshold=10): if len(arr) <= threshold: insertion_sort(arr) return arr if len(arr) > 1: mid = len(arr) // 2 left_half = arr[:mid] right_half = arr[mid:] merge_sort(left_half, threshold) merge_sort(right_half, threshold) i = j = k = 0 while i < len(left_half) and j < len(right_half): if left_half[i] < right_half[j]: arr[k] = left_half[i] i += 1 else: arr[k] = right_half[j] j += 1 k += 1 while i < len(left_half): arr[k] = left_half[i] i += 1 k += 1 while j < len(right_half): arr[k] = right_half[j] j += 1 k += 1 return arr # test the merge_sort function with some test cases sample = [5, 2, 9, 1, 5, 6] merge_sort(sample) print(sample) تخصيص تجربة الاستخدام قد نرغب في بعض الأحيان بأن يتبع المساعد البرمجي أسلوبًا معينًا نستخدمه في كتابة أكوادنا ولذلك نكثر في تفصيل التعليمات وتوضيحها له، ولكن هناك طريقة أفضل حيث يمكن أن نوضح للمساعد البرمجي أسلوبًا معينًا نطبقه على كامل المشروع ضمن ملف تعليمات بحيث لا نكون مضطرين لتوضيح تعليمات التخصيص في كل أمر نطلبه منه. للقيام بذلك سننشئ مجلدًا باسم github. ثم نضيف له ملفًا باسم copilot-instructions.md حيث سنكتب في هذا الملف التعليمات اللازمة والأسلوب الذي نحب كتابة الكود به كي يتبعها مساعدنا البرمجي. لاحظ المثال التالي حيث نوضح بداية كيف سيكتب لنا Github Copilot الجمل الشرطية بصيغة مختصرة تسمى العامل الثلاثي Ternary operator، ثم نوضح أسلوب توثيق الكود البرمجي الذي نرغب باستخدامه. لنختبر المخرجات بعض إضافة هذا التعديل. نلاحظ أن توثيق الكود بهذه الطريقة سيمكننا من معرفة معلومات عن الدالة عند تحديدها أو استخدامها في أي مكان آخر كما في المثال التالي. مراجعة وتدقيق الكود يمكننا استخدام Github Copilot لتدقيق ومراجعة الكود أو تلخيص التغيرات قبل طلب سحب Pull request الكود لمستودع الأكواد على Github فهذا يقلل الأخطاء البرمجية ويحسن جودة الأكواد المرفوعة. سنتبع الخطوات التالية لاستخدام هذه الميزة : نتوجه لمستودع الأكواد على Github ونطلب سحب Pull جديد أو نستخدم طلب موجود بالفعل نفتح قائمة Reviewers ونختار منها Github Copilot سيراجع المساعد الكود ويدققه لنا ثم يقدم اقتراحاته يمكننا التعامل مع التعليقات والمراجعات التي يوفرها Github Copilot كالمراجعة البشرية بقبولها أو رفضها سنجرب هذه الميزة عن طريق إنشاء مستودع أكواد Repository جديد على منصة Github ونضيف ملف بايثون math_utils.py يحتوي على دالة برمجية لقسمة رقمين، ولكن بها خطأ حيث لم نأخذ بعين الاعتبار الحالة التي يكون المقسوم عليه صفر، وسنفترض أن أحد المساهمين لاحظ هذه المشكلة وقام بطلب اشتقاق Fork لمستودع الأكواد ليصلح المشكلة، وبعد ذلك طلب سحب الملف Pull Request إلى المستودع الأصلي. في حال كنت صاحب مستودع الأكواد، فلا حاجة لاشتقاق المستودع Forking حيث يمكن إنشاء تفريعة Branch ثم طلب سحبها Pull Request. لنصحح الدالة بإضافة حالة شرطية عند كون المقسوم عليه صفرًا ونطبع رسالة الخطأ لتنبيه المستخدم. ثم نطلب سحب Pull هذا التفريع Branch الذي يحتوي التصحيح للفرع الأصلي والرئيسي. نلاحظ أنه Github Copilot قد لا يظهر لدينا في قائمة Reviewers ولكن يمكننا استخدامه لتلخيص طلب السحب Pull Request وهذا ما سنقوم به، حيث أن هذه الميزة لاتزال تجريبية وليست متاحة لدى الجميع. استخدام GitHub Copilot كخبير برمجي يتميز Github Copilot بميزة أخرى تجعله من أدوات الذكاء الاصطناعي البرمجية الفريدة، حيث يمكنه أن يعمل كخبير متخصص نستدعيه عند الوقوع في مشكلة أو عندما نرغب في معرفة آلية تنفيذ شيء ما، وهذا من خلال واجهة الحوار حيث يمكننا استدعاء الخبير من خلال رمز @ الذي يتيح قائمة من الخبراء الافتراضيين لنسألهم، مثلًا vscode@ يمكننا أن نسأله عن أي شيء يخص محرر الأكواد. نرى في هذا المثال كيف طلبنا من الخبير أن يوضح لنا كيفية تغير مظهر وتنسيق محرر الأكواد، فأخرج لنا زرًا عندما نضغط عليه يقودنا لقائمة اختيارات يمكننا من خلالها اختيار المظهر الذي نريده. @vscode how to change the Theme? لا يتوقف الأمر عند محرر الأكواد فيوجد أكثر من خبير، مثل خبير سطر الأوامر Terminal، لنفترض أننا نريد أن ننشئ في مجلد للمحاضرات Lectures، عشرة مجلدات فرعية منه وبكل منها ملف نصي فارغ برقم المحاضرة، والتي سنملؤها لاحقًا بملاحظات عن هذه المحاضرة، يمكن بالطبع محاولة فعل هذا بشكل يدوي لكن قد يستغرق الأمر وقتًا طويلًا لذا من الأفضل استخدام سطر الأوامر لتنفيذ هذه العملية بمساعدة Github Copilot. @terminal I want to create 10 folders names Lecture{i}, i the number of lecture, and for each lecture it would contain a text file named as lecture{i}_notes.txt لنفتح واجهة سطر الأوامر من خلال أحد الأزار السريعة من نافذة الحوار أو من قائمة View ثم نختار Terminal لنتمكن من وضع الأمر المولد وتشغيله، نلاحظ أن الأمر مكتوب باستخدام Powershell لأننا في حالتنا نستخدم نظام تشغيل ويندوز Windows ولكن يمكن أن نطلب استخدام Bash في حال استخدام نظام لينكس، وكما نرى فقد استطاع الأمر إنشاء الملفات التي طلبناها دون أية مشكلات، وهذه الميزة مفيدة للغاية عندما نرغب في تنفيذ بعض الأوامر من الطرفية ولكننا لا نتذكر الكلمات المفتاحية أو طريقة كتابة الأمر. حالات استخدام إضافية لمساعد Github Copilot استعرضنا في الفقرات السابقة أبرز حالات استخدام مساعد Github Copilot في محرر الأكواد، لكن في الواقع تتخطى حالات استخدام مساعد Github Copilot ملفات الكود العادية التي نتعامل معها في تخصصات البرمجة الشائعة كتطوير الواجهات الأمامية أو الخلفية، لتصل إلى البيئات المخصصة لمهندسي البيانات وتعلم الآلة المتمثلة في jupyter notebook، ولتجربة هذه الميزات سنستخدم مجموعة بيانات بسيطة وهي مجموعة بيانات لبعض ركاب سفينة تايتنك الغارقة والتي يمكنك العثور عليها في موقع كاجل Kaggle. لنعرض بضعة صفوف من مجموعة البيانات import pandas ad pd # حمل مجموعة بيانات تيتانيك titanic_df = pd.read_csv('titanic.csv') # اطبع الصفوف الأولى من البيانات titanic_df.head() باختيار زر التوليد Generate يمكننا طرح أسئلة أو توجيه أوامر بشكل كتابي أو من خلال الصوت ثم الموافقة على الاقتراح المولد أو طلب تعديله ليناسب حالة الاستخدام. فور الموافقة على الاقتراح بالضغط على قبول وتشغيل Accept & Run سنجد الرسم البياني التالي كمخرج. يوحي الرسم البياني بمعلومة هامة بخصوص نسب النجاة، فكما نرى نسبة النجاة في النساء أكبر، ونسبة الهلاك في الرجال أكبر، قد يكون هذا عائدًا بنسبة كبيرة للأولوية المعطاة للنساء والأطفال في قوارب النجاة ولكن هل يمكن للمساعد البرمجي فهم الرسومات البيانية وتلخيص الملاحظات الخاصة بها، لنختبر هذا. كما نلاحظ في السؤال الأول استطاع مساعدنا الذكي أن يستنتج ما يدل عليه الرسم البياني من نسبة نجاة أعلى للنساء، وكذلك بعد سؤاله عن سبب هذه قد استطاع توضيح السبب، وكما نلاحظ أيضًا فعند سؤاله باللغة العربية سيجيب باللغة العربية. لنوضح ميزة أخرى من خلال استخدام خلية كود يمكننا استخدام الرمز :q وطرح سؤال ثم سيجيب عنه المساعد البرمجي في نفس الخلية برمز مشابه به الإجابة :a كما في الصورة التالية. titanic_df.head(3) q: what does SibSp mean? الحصول على الخطة المميزة من Github Copilot مجانًا يمكن للطلبة أو المعلمين أو المساهمين في مشاريع مفتوحة المصدر الحصول على الخطة المميزة من Github Copilot بالمجان، فبالنسبة للطلبة يمكنهم رفع ما يثبت هذا من خلال هذه الصفحة التابعة لمنصة Github، أما المعلمون فيمكنهم من خلال هذه الرابط معرفة المميزات التي توفرها المنصة للمعلمين. يختلف الأمر قليلًا بالنسبة للمساهمين في المشاريع مفتوحة المصدر حيث ينبغي أن يصلوا لبعض الشروط التي تحددها المنصة ولا توجد طريقة للتقديم بشكل مباشر إنما ترسل إشعارات من خلال منصة Github للمساهمين الذين تجدهم مستحقين للخطة المميزة. بمجرد الحصول على الخطة المميزة كطالب برفع الإثباتات المطلوبة مثل الإيميل الجامعي وبطاقة الطالب التعريفية، سيعالج الطلب في بضعة أيام، وفي حال قبوله ستفتح ميزات متعددة لا تقتصر على الوصول لمساعد Github Copilot فقط، وإنما لمزايا أخرى يمكنك الاطلاع عليها من هنا، ولتفعيل الحساب المميز يجب تسجيل الخروج من حساب Github المحفوظ على محرر أكواد VS code وتسجيل الدخول إلى الحساب الذي جرى تفعيل الخطة المميزة عليها. للتأكد من تفعيل النسخة المميزة Pro يمكن مراجعة النماذج المتاحة للاستخدام، من خلال واجهة الحوار. الخاتمة تعرفنا في هذه المقالة عن أبرز الميزات التي توفرها أداة الذكاء الاصطناعي كوبايلوت Github Copilot للمبرمجين والمطورين عند دمجها في محرر الأكواد فيجوال ستوديو كود، حيث يمكنها مراجعة وتحسين الأكواد التي نعمل عليها، أو إكمال وتوقع الأكواد التي نريد كتابتها وغيرها من الفوائد الأخرى التي تساعدنا في توفير وقتنا وتعزيز إنتاجيتنا كمطورين، وتطرقنا في ختام المقال لكيفية الحصول على الخطة المميزة Pro بالمجان والتي تسمح لنا بالوصول لمزيد من المميزات والنماذج القوية، هل جربتم دمج هذه الأداة مع محرر الأكواد؟ شاركونا تجربتكم في التعليقات أسفل المقال. اقرأ أيضًا تعرف على منصة تنسرفلو TensorFlow للذكاء الاصطناعي فهم نظام التحكم بالإصدارات Git وأهمية استخدامه في مشاريع بايثون الإشراف على مشاريع البرمجيات مفتوحة المصدر عبر غيت هب GitHub الدليل المرجعي للعمل على نظام غيت Git
  3. تعد تنسرفلو TensorFlow أحد الأدوات الأساسية في جعبة مطوري نماذج الذكاء الاصطناعي، فهي توفر بيئة متكاملة تساعد على تدريب نماذج الذكاء الاصطناعي وتشغيلها واستخدامها في الاستدلال والتنبؤ القرارات المستقبلية بمرونة وكفاءة، سنتعرف في هذه المقالة على أداة تنسرفلو TensorFlow ومميزاتها في تطوير تطبيقات الذكاء الاصطناعي وتعلم الآلة. ما هي تنسرفلو TensorFlow تنسرفلو TensorFlow هي منصة مفتوحة المصدر توفر للمطورين وعلماء البيانات الأدوات التي يحتاجونها لبناء نماذج تعلم الآلة، بداية من معالجة البيانات وتجهيزها، إلى التدريب وحتى التشغيل، وتدعم تنسرفلو العديد من لغات البرمجة عن طريق مكتبات مخصصة لكل لغة مثل بايثون و جافاسكريبت وسي و جافا وغيرها من اللغات، وإن كانت لغة بايثون هي اللغة الأكثر استخدامًا والأكثر دعمًا. طورت شركة جوجل منصة تنسرفلو TensorFlow عن طريق فريقها Google Brain في عام 2015 كي تكون بديلًا مفتوح المصدر للنظام السابق الذي كان يُستخدم في تدريب خوارزميات تعلم الآلة والمعروف باسم ديست بليف DistBelief، ومن أبرز مميزات تنسرفلو TensorFlow دعم مبدأ توزيع التدريب على عدة أجهزة لتعزيز كفاءة الأداء، وسهولة تعلمها، وكونها منصة مفتوحة المصدر مما يسمح للجميع بالمساهمة في تحسينها واستخدامها في مختلف المشاريع. كما تتميز تنسرفلو TensorFlow بقدرتها على استغلال مختلف العتاد الحاسوبي مثل وحدة المعالجة المركزية CPU ووحدة المعالجة الرسومية GPU ومسرعات التدريب المختلفة، وهذا يجلعها تتفوق على بعض المكتبات التقليدية مثل ساي كيت ليرن Scikit learn الشهيرة التي توفر العديد من خوارزميات تعلم الآلة التقليدية ولكنها لا تدعم استخدام وحدات المعالجة الرسومية GPU، ناهيك عن التدريب الموزع، فمن غير الممكن تدريب نماذج ذكاء اصطناعي واسعة النطاق باستخدام مكتبات لا تدعم هذه الإمكانيات المتقدمة مثل التدريب الموزع أو المسرعات. معنى Tensors تُشتق تسمية تنسرفلو TensorFlow من العمليات التي تنفذها الشبكات العصبية على بيانات متعددة الأبعاد تعرف باسم تنسورات Tensors حيث تتدفق هذه البيانات Flow عبر الشبكات العصبية. لذا من الضروري توضيح معنى كلمة تنسور Tensor أو ما يعرف أيضًا باسم مُوتِّر فهو هيكل بيانات فالتنسور Tensor هو مفهوم أكثر شمولًا من المصفوفات Matrices والمتجهات Vectors وحتى القيم المفردة أو المضاعفات Scalars. المضاعف Scalar: عدد مفرد مثل العدد 5 وهو يُعد موترًا من الرتبة صفر. ونسميه مضاعف ضربه في موتر آخر سيضاعف القيم داخله المتجه Vector: مجموعة من الأرقام منظمة في صف واحد أو عمود واحد من القيم، ويُعد موترًا من الرتبة الأولى المصفوفة Matrix: مجموعة من الأرقام منظمة في صفوف وأعمدة، وتُعد المصفوفة موتر من الرتبة الثانية ويمكن للتنسورات أن تمتد إلى رتب Ranks أعلى، فكلما علت الرتبة كلما احتوى التنسور على بيانات متعددة الأبعاد تُستخدم في النماذج المعقدة على سبيل المثال يمكن استخدام تنسور Tensor من الرتبة الرابعة لتمثيل دفعة بيانات batch مكونة من مجموعة من الصور كما يلي: عدد الصورة في الدفعة: 4 صور ارتفاع الصورة: 64 بكسل عرض الصورة: 64 بكسل قنوات الألوان: ثلاثة هي الأحمر، الأخضر، الأزرق وبالتالي يمكننا التعبير عن هذه المعلومات باستخدام تنسور Tensor من 4 أبعاد، حيث يعبر البعد الأول عن ترتيب الصورة في الدفعة، ويعبر البعد الثاني عن الارتفاع، والثالث عن العرض، والرابع عن عدد قنوات الألوان كما في الصورة التالية: وبالتالي يمكن استخدام هذا التنسور Tensor لتعريف مدخلات الشبكات العصبية الالتفافية CNN التي تتعامل مع الصور، فهو يمكننا من معرفة عدد الصورة المدخلة بالدفعة وأبعادها وعدد قنوات الألوان بسهولة. استخدامات تنسرفلو TensorFlow شاع استخدام منصة تنسرفلو TensorFlow في مختلف مجالات الذكاء الاصطناعي، مثل تعلم الآلة وتحليل البيانات وتصنيف الصور والتعرف على الكائنات بالصور ومعالجة اللغات الطبيعية وتطبيقات الذكاء الاصطناعي التوليدي Generative AI. على سبيل المثال اعتمدت منصة X على تنسرفلو TensorFlow لترتيب التغريدات حسب الأهمية والصلة، فقد يتابع صاحب حساب مئات بل آلاف الأشخاص لذلك يصبح ترتيب التغريدات أمرًا محوريًا في تجربة الاستخدام، كما استخدمت باي بال PayPal خوارزميات مطورة بتنسرفلو TensorFlow لتستطيع كشف المعاملات الاحتيالية ومنعها. النظام المتكامل لتنسرفلو TensorFlow Ecosystem توفر تنسرفلو TensorFlow نظام بيئي متكامل لمطوري الذكاء الاصطناعي إو إطار شامل يوفر كل ما يلزم لتطوير نماذج الذكاء الاصطناعي وتشغيلها على مختلف الأجهزة سواء الحواسيب الشخصية أو الخوادم الخاصة أو الخوادم السحابية، إلى جانب استخدام نماذج مسبقة التدريب من خلال مكتبة متنوعة من النماذج وهو يوفر أدوات للتعامل مع كل من المراحل التالية: تدريب النموذج Training توزيع التدريب Distribution strategy التشغيل Deployment الاستدلال Inference لنشرح كل مرحلة من هذه المراحل بمزيد من التفصيل. التدريب Training تدريب النموذج هو الخطوة الأولى في بناء أي تطبيق ذكاء اصطناعي، ويتطلب الوصول لخطوة التدريب معالجة البيانات preprocessing حيث توفر تنسرفلو العديد من الأدوات لمعالجة البيانات وإعدادها لتدريب النماذج، كما توفر طريقة سهلة لبناء وتدريب الشبكات العصبية الاصطناعية Artificial Neural Networks من خلال مكتبة كيراس keras وهي مكتبة مختصة داخل الإطار الشامل لتنسرفلو TensorFlow. توزيع التدريب Distribution strategy يوفر إطار عمل تنسرفلو ميزة توزيع مهمة تدريب النموذج على عدة أجهزة من خلال الوحدة tf.distribute فبدلاً من تدريب النموذج على جهاز واحد فقط، يمكننا تقسيم عملية التدريب كي تنجز عبر معالجات متعددة. من الأفضل العمل في وضع شبكة العقد الحسابية Computational Graph mode لأنه مُصمم خصيصًا ليعمل بشكل أكثر كفاءة مع التدريب الموزع. أما إذا كنا نرغب في التجربة والتعديل للوصول إلى نموذج قابل للتطبيق على نطاق واسع، فيمكننا استخدام وضع التنفيذ الفوري Eager execution mode. هنالك العديد من التفاصيل المتقدمة التي علينا الانتباه لها عند تحديد استراتيجية توزيع التدريب، مثل كيفية مشاركة معاملات النموذج عبر الأجهزة المختلفة وكيفية توزيع المهام، ولكن من الأفضل للمبتدئين البدء بتعلم التدريب على جهاز واحد أولاً للسهولة. وبمجرد إتقان مهمة تطوير نموذج فعّال على جهاز واحد، يمكن العمل على توزيع التدريب على نطاق أوسع لتسريعه وتحسين أداءه. التشغيل Deployment يعد الانتقال من مرحلة تطوير وتدريب النموذج إلى مرحلة تشغيل النموذج وطرحه للمستخدمين تحديًا للكثيرين، فنحن بحاجة لعتاد حاسوبي يستضيف النموذج ويستقبل طلبات المستخدمين، ويمكننا توفيره من خلال موفري الخدمات السحابية Cloud provider، حيث يمكنن استئجار موارد حاسوبية لتشغيل النموذج الخاص بنا، وكما ذكرنا سابقًا فإن تنسرفلو TensorFlow هو إطار عمل متكامل لا يتوقف دوره عند تطوير النموذج فحسب، فيمكننا استخدام TensorFlow Serving لإدارة النماذج التي نحتاج لتشغيلها ونجري تحديث مستمر لها كلما توفرت لنا بيانات جديدة لتدريب النموذج عليها، وغيرها من المميزات العديدة الأخرى. الاستدلال Inference ما نعنيه باستدلال نموذج الذكاء الاصطناعي التنبؤ والتوقع المستقبلي باستخدام البيانات المعطاة، برمجيًا يمكن الاستدلال باستخدام الدالة model.predict في مكتبة Keras المدمجة ضمن TensorFlow فهذه الدالة البرمجية تأخذ البيانات كمدخلات، وتعطينا التوقع المنتظر بناء عليها، يتعرض النموذج أثناء التشغيل لآلاف أو ربما ملايين الطلبات من المستخدمين من أجل الاستدلال بناء على بعض البيانات المعطاة وينتظرون نتيجة سريعة لطلباتهم، لذا تعد سرعة استدلال النموذج عاملًا مهمًا في نجاح تشغيله. تساعدنا تنسرفلو TensorFlow في تحسين سرعة الاستدلال بعدة أدوات مثل: تحسين العمليات الحسابية باستخدام شبكة العقد الحسابية Computational graph تحسين تشغيل النماذج على مختلف أنواع العتاد كوحدات المعالجة المركزية CPUs، أو وحدات معالجة الرسومات GPUs، أو وحدات معالجة الموترات Tensor Processing Units TPUs استخدام المعالجة على التوازي Parallelism وهي طريقة لتقسيم الحسابات على أكثر من جهاز تقسيم الطلبات لدفعات Batching لتحسين استخدام سعة شبكات الانترنت Throughput فمع ملايين من الطلبات بنفس الوقت مرفقة بالبيانات قد تصبح سعة الشبكة غير قادرة على التعامل مع كل الطلبات ومعالجتها بسرعة كافية لذا علينا تقسيمها لدفعات أصغر النسخة الخفيفة من تنسرفلو TensorFlow light في بعض الحالات، قد نحتاج لتشغيل النماذج على أجهزة محدودة الإمكانيات كالأجهزة المحمولة. على سبيل المثال، تُعد تطبيقات التعرف على البصمة أو الوجه باستخدام كاميرا الهاتف نماذج ذكاء اصطناعي مخصصة للعمل على الهواتف محدودة الموارد. أو نحتاج لاستخدام نماذج الذكاء الاصطناعي غلى الشرائح الإلكترونية في مجالات إنترنت الأشياء IoT والروبوتات بهدف التعرف على الأشخاص أو التحكم في الآلات أو التنقل بشكل آلي دون الحاجة لتوجيه مباشر. لكن هذه المهام لن تكون ممكنة من دون القدرة على تشغيل النماذج على أجهزة منخفضة الموارد، وهنا يأتي دور النسخة الخفيفة من تنسرفلو TensorFlow Lite، وهي إطار عمل مفتوح المصدر للتعلم العميق يفيدنا في تقليص حجم النماذج وجعلها أسرع، دون التأثير الكبير على دقة التوقعات. كيف نستخدم TensorFlow مع مختلف لغات البرمجة تدعم تنسرفلو TensorFlow تشغيل النماذج في لغات برمجة متعددة كما ذكرنا سابقًا وتعد لغة بايثون Python هي اللغة الأساسية والأكثر استخدامًا لتطوير النماذج وبناء الحلول باستخدام تنسرفلو TensorFlow. لكن يمكننا استخدام تنسرفلو مع مختلف لغات البرمجة من خلال حفظ النموذج بصيغة موحدة تتيح التعامل معه في لغات مختلفة مثل C و Go و Java وغيرها. كما تحظى تطبيقات الويب Web Applications بدعم خاص في منصة تنسرفلو، إذ يمكننا تشغيل وتطوير نماذجنا باستخدام JavaScript، مما يتيح لنا تطوير تطبيقات الذكاء الاصطناعي وتشغيلها مباشرة على المتصفح من خلال المكتبة TensorFlow.js. مستودع النماذج مسبقة التدريب TensorFlow Hub توفر TensorFlow مكتبة واسعة من النماذج مسبقة التدريب Pre-trained عبر مستودعها TensorFlow Hub، حيث يمكننا استخدام هذه النماذج وتشغيلها مباشرة دون الحاجة لتطويرها من الصفر. تتميز هذه النماذج بتوفير ميزة الصقل fine-tuning وتخصيصها باستخدام بيانات مخصصة للمشكلة التي نسعى لحلها. وما يجعل هذه النماذج ذات قيمة كبيرة هو أنها تحتوي على معرفة مسبقة اكتسبتها من تدريبها على مجموعات بيانات ضخمة. لذا، يعد صقلها حلاً مثاليًا في العديد من التطبيقات، حيث يمكننا الحصول على نتائج دقيقة وفعالة بسرعة كبيرة بالاعتماد عليها. التمثيل المرئي للبيانات Visualization في تنسرفلو يحتاج مطور نماذج الذكاء الاصطناعي إلى مراقبة النماذج وملاحظة تطور أدائها مع مرور الوقت، لذا سيفيدهم تعزيز مشاريع الذكاء الاصطناعي برسومات بيانية لتحقيق هذا الهدف. توفر تنسرفلو TensorFlow هذه الإمكانية من خلال أداة تسمى Tensorboard توفر رسومات بيانية ومخططات توضيحية لتوضح معنى الأرقام ودلالتها، وتسهل اكتشاف الأنماط ونقاط الاهتمام. توفر Tensorboard إمكانية عرض العديد من الرسومات البيانية المفيدة مثل: رسم بياني لدقة النموذج accuracy وتغيرها بمرور الوقت رسم شبكة العٌقد الحسابية Computational graphs توفير رسومات بيانية لدراسة توزيع الأوزان والمعاملات التي تتغير مع الوقت عرض الصور والنصوص والصوتيات دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن طريقة استخدام تنسرفلو TensorFlow تحتاج منصة تنسرفلو TensorFlow إلى إجراء العديد من العمليات الحسابية على البيانات الممثلة في التنسورات Tensors. وبالتالي، تصبح مهمة تنسرفلو هي تحسين هذه العمليات الحسابية التي تتدفق إليها التنسورات، بهدف استغلال الموارد الحاسوبية المتاحة بأفضل طريقة ممكنة. فبعض الخوارزميات قد تستغرق أيامًا أو حتى أشهر لإتمام تدريبها بسبب حجم البيانات الهائل التي تتدفق خلالها في العمليات الحسابية المعقدة. لنتعرف على طريقة القيام بالتمثيل الرياضي للعمليات الحسابية التي علينا القيام بها أثناء تدريب النموذج أو استدلاله. التعامل مع شبكة العقد الحسابية Computational graph شبكة العٌقد الحسابية Computational graph هي الوسيلة التي تستخدمها تنسرفلو TensorFlow لتمثيل العمليات والخوارزميات التي تنفذها، يمكننا التفكير بها على أنها خطة مرسومة لتنفيذ الخوارزميات، إذ تتكون الشبكة من عدة عقد متصلة تتدفق خلالها التنسورات أو البيانات في اتجاه واحد، وتمثل العقدة عملية حسابية مثل الضرب أو الجمع أو غيرها من العمليات. يكتب المطور الأكواد البرمجية بلغة برمجة مثل بايثون، ثم يأتي دور تنسرفلو TensorFlow بتجهيز شبكة العٌقد الحسابية computational graph التي تتضمن جميع الخطوات لتنفيذ هذه الأكواد، ولتحسينها يجري تبسيط الخطوات المتكررة التي يمكن اختزالها، أو التخلص من الخطوات التي يمكن حذفها لتوفير الموارد الحاسوبية. كما تستخدم تنسرفلو طريقة تسمى الحساب المسبق للثوابت Constant folding، تتعامل هذه الطريقة مع المتغيرات المعلومة أو التي يمكن حساب قيمتها بشكلٍ مباشر، فتحولها إلي قيمة ثابتة أثناء بناء شبكة العٌقد الحسابية Computational graph، حيث لا نحتاج لحساب هذه القيم وقت التنفيذ. على سبيل المثال إذا كان a=2 ، b=3 و c=a+b فيمكننا إيجاد قيمة المتغير c=5 وعدم إجراء العملية الحسابية أينما وجد هذا المتغير مجددًا وقت التنفيذ، فهذا المتغير لا يعتمد سوى على ثوابت معلومة. كما تعتمد أيضًا على عملية إعادة استخدام الحدود المتكررة Common Subexpression Elimination لتبسيط شبكة العٌقد الحسابية Computational graph بحساب العمليات التي تتكرر مرة واحدة وتستخدم الناتج أينما وجد تكرار للعملية الحسابية. على سبيل المثال: إذا كان a=x+y، و b=x+y فإن a=b لذا نقوم بالعملية x+y مرة واحدة ونعوض عنها عندما نجد a أو b. أخيرًا يمكننا استخدام متغيرات أقل دقة في تنسرفلو TensorFlow كأن نستخدم متغير من نوع float16 بدلًا من float32 لتسريع الحسابات وتقليل استهلاك الموارد، ويجدر الذكر أن هذه الميزة لا تعمل إلا مع وحدات المعالجة الرسومية GPUs. لاحظ المثال التالي: import tensorflow as tf # قم بتعريف رقم عشري number = 123.456 # حدد حجم المتغير الذي تريد أن تحفظ الرقم به ليكون 32 float32 = tf.constant(number, dtype=tf.float32) # حدد حجم المتغير الذي تريد أن تحفظ الرقم به ليكون 16 float16 = tf.constant(number, dtype=tf.float16) # لنرى الاختلاف في الدقة بين الرقمين print("float32: ", float32.numpy()) print("float16: ", float16.numpy()) # حجم التخزين print("Size of float32: ", float32.numpy().nbytes, "bytes") print("Size of float16: ", float16.numpy().nbytes, "bytes") ''' output float32: 123.456 float16: 123.44 Size of float32: 4 bytes Size of float16: 2 bytes ''' قد يصل عدد المتغيرات والمعاملات في نماذج الذكاء الاصطناعي لملايين بل مليارات في بعض الأحيان، لذا من الضروري الاعتماد على تغيير دقة المتغيرات لتسريع عملية التدريب وتقليص حجم النماذج، فأداء النموذج قد يتأثر بنسبة جيدة من هذا التغير. ملاحظة: تجدر الإشارة إلى أن استخدام أسلوب تغيير دقة المتغيرات يستخدم في تقليص حجم نماذج الذكاء الاصطناعي لتعمل على الحافة on Edge أي على الأجهزة محدودة الموارد، مثل الأجهزة المحمولة أو الشرائح الحاسوبية البسيطة، التي قد لا تتسع إلا لبضعة آلاف من البايتات. استخدام شبكة العقد الحسابية لتنفيذ العمليات تفيدنا شبكة العٌقد الحسابية Computational graphs في جعل عملية تدريب النماذج أكثر مرونة وكفاءة عبر عدة منصات وأجهزة حاسوبية مختلفة، فهي محسنة لتتعامل مع العتاد الحاسوبي بشكل أفضل، كما يمكن نقل شبكة العقد الحسابية بعد تدريب النموذج ليصبح قابلًا للاستخدام على منصات وأجهزة متنوعة ولغات برمجة مختلفة فهي مجرد قالب لتنفيذ مجموعة من الأوامر التي تعطي نتيجة أو توقع في النهاية. كانت هذه الطريقة هي الوحيدة في الإصدار الأول من تنسرفلو TensorFlow 1.x ، ولكنها عانت من بعض العيوب، فقد كان علينا كمطورين كتابة الأكواد البرمجية بشكل مثالي دون أن نرى نتائج الخطوات الوسيطة، ثم ننتظر تحويل الأكواد المثالية إلي شبكة عقد حسابية محسنة، وهذا يستغرق الكثير من الوقت، بالطبع لن نحصل على النتيجة التي نرجوها من أول محاولة، فالبرمجة عملية تحسن تكرارية وتراكمية، وخاصة عند تطوير نماذج الذكاء الاصطناعي التي تحتاج إلى تجربة العديد من المعاملات حتى نجد التوليفة المناسبة من تلك المعاملات. لاحظ الكود التالي الذي يوضح كيفية تعريف دالة ConcreteFunction في تنسرفلو وكيفية تحديد المدخلات والمخرجات للعمليات الحسابية حيث سنحول العمليات البرمجية البسيطة مثل الجمع بين متغيرين إلى شبكة عُقد حسابية يمكن تنفيذها بكفاءة على أجهزة مختلفة. import tensorflow as tf @tf.function # لجعل تنسرفلو يستخدم شبكة العٌقد الحسابية def add_numbers(a, b): return a + b # نعرف ثابتين a = tf.constant(5) b = tf.constant(3) # لنقم بعملية الجمع بطريقة شبكة العٌقد الحسابية result = add_numbers(a, b) # لنحصل على الخطوات التي قام بها تنسرفلو graph_steps = add_numbers.get_concrete_function(a, b) print("الخطوات") print(graph_steps) print("الخطوات بشكل مفصـل ومبسـط") for op in graph_steps.graph.get_operations(): print(op.name) الخطــوات ConcreteFunction Input Parameters: a (POSITIONAL_OR_KEYWORD): TensorSpec(shape=(), dtype=tf.int32, name=None) b (POSITIONAL_OR_KEYWORD): TensorSpec(shape=(), dtype=tf.int32, name=None) Output Type: TensorSpec(shape=(), dtype=tf.int32, name=None) Captures: None الخطـوات بشكـــل مفصـل ومبسـط a b a d d I d e n t i t y تقنية التنفيذ الفوري للعمليات الحسابية Eager execution كانت عملية تطوير النماذج غير تفاعلية في الإصدار الأول من تنسرفلو TensorFlow 1.x، كما ذكرنا في الفقرة السابقة، حيث كان المطورون يكتبون الأكواد ثم ينتظرون لفترة طويلة لتحويل الأكواد إلى شبكة عُقد حسابية محسّنة، هذا جعل من الصعب اكتشاف الأخطاء وتحسين الأداء في الوقت الفعلي. لهذا السبب، وجدت طريقة التنفيذ الفوري للعمليات الحسابية Eager Execution في TensorFlow 2.x لتجعل عملية التطوير أكثر تفاعلية وسهولة. حيث يمكننا من خلال التنفيذ الفوري Eager Execution بناء العمليات الحسابية بشكل مباشر. على سبيل المثال، عندما نجمع رقمين، سنحصل على النتيجة على الفور دون الحاجة للانتظار لإكمال البرمجة أو إنشاء شبكة العُقد الحسابية. وبالتالي تسهل علينا هذه الطريقة اكتشاف الأخطاء، واختبار التعديلات، وتحسين أداء النموذج بشكل فوري وتفاعلي. لاحظ الكود التالي لاستخدام التنفيذ الفوري Eager Execution في تنسرفلو: import tensorflow as tf # Eager Mode مفعل بشكل افتراضي a = tf.constant(5) b = tf.constant(3) c = a + b print("ناتج العملية الفورية:", c.numpy()) # ناتج العملية الفورية: 8 الخاتمة وصلنا لختام مقالنا الذي شرحنا فيه بالتفصيل إطار العمل الشهير تنسرفلو TensorFlow، وأوضحنا العديد من الأدوات والتقنيات التي تُمكّن المطورين من تطوير نماذج الذكاء الاصطناعي عبر مختلف المراحل، من التدريب وحتى التشغيل. كما قمنا بتطبيق أمثلة عملية بسيطة توضح كيفية استخدام هذه الأدوات بشكل تفصيلي، بدءًا من بناء الشبكات الحسابية حتى التنفيذ الفوري للعمليات الحسابية. ننصح بتجربة هذه المنصة والاستفادة من أدواتها لتحسين وتبسيط عملية تطوير تطبيقات الذكاء الاصطناعي. اقرأ أيضًا ما هي منصة Hugging Face للذكاء الاصطناعي تعلم الذكاء الاصطناعي كل ما تود معرفته عن دراسة الذكاء الاصطناعي بناء شبكة عصبية للتعرف على الأرقام المكتوبة بخط اليد باستخدام مكتبة TensorFlow تعرف على أهم مشاريع الذكاء الاصطناعي تعرف على مكتبة المحوّلات Transformers من منصة Hugging Face
  4. يمر أغلب مهندسي الذكاء الاصطناعي و تعلم الآلة أثناء تعلمهم للعديد من الخوارزميات الأساسية والتقليدية في تعلم الآلة بمكتبة ساي كيت ليرن Scikit Learn التي توفر هذه الخوارزميات وتوثيقًا جيدًا لها، في هذه المقالة سوف نستكشف هذه المكتبة القوية واستخداماتها ومميزاتها، وما الخوارزميات التي يوفرها، ونستعرض بعض الأمثلة العملية على حالات الاستخدام. ما هي مكتبة ساي كيت ليرن Scikit Learn تعد ساي كيت ليرن Scikit Learn أحد أشهر مكتبات أو أطر عمل لغة بايثون وأكثرها استعمالًا خاصة في مجالات علوم البيانات وتعلم الآلة، فهي توفر مجموعة من خوارزميات الذكاء الاصطناعي المبنية بكفاءة، وتتيح لنا استخدامها بسلاسة حيث تمتلك جميع خوارزميات التعلم المبنية بها طريقة شبه موحدة للتعامل معها، فاستخدام خوارزمية أخرى لنفس الغرض يتطلب ببساطة تغيير سطر واحد من الكود، وتوفر هذه المكتبة إمكانيات كبيرة عند بناء النماذج ومعالجة البيانات وتجهيزها، وحفظ النماذج في صيغة يمكن إعادة استخدامها لاحقًا. مميزات مكتبة ساي كيت ليرن Scikit Learn تسهل مكتبة ساي كيت ليرن Scikit Learn تطوير نماذج تعلم الآلة على المبتدئين والراغبين باختبار الأمور بسرعة، وتوفر لهم العديد من المميزات التي سنسردها ونتعرف عليها مثل: التوثيق الجيد: تتميز المكتبة بوجود توثيق مفصل وأمثلة استخدام كثيرة تساعدنا في البدء بتطوير واستخدام الخوارزميات المختلفة ومعرفة المعاملات التي يمكن ضبطها لتغير أداء النموذج وطريقة تدريبها القيم الافتراضية لمعاملات التحكم : لا داعي للقلق إن كنا نتعلم خوارزمية جديدة ونرغب في تجربتها دون الدخول في جميع التفاصيل وتأثيرات ضبط قيم معاملات التحكم أوالمعاملات الفائقة hyperparameters حيث تضبط المكتبة أغلب العوامل بقيم افتراضية مناسبة لأغلب الاستخدامات، لذا يمكننا التركيز على العوامل الأهم وفهمها بشكل أفضل أدوات للمفاضلة بين النماذج: مع تنوع الخوارزميات المبنية في المكتبة التي يمكنها القيام بنفس المهمة بطرق مختلفة يكون من الصعب على المبتدئ تقرير أي الخوارزميات هو الأفضل للمهمة التي يحاول إنجازها، لذلك توفر لنا المكتبة أدوات للمقارنة بين الخوارزميات المختلفة وعوامل التحكم المختلفة بسلاسة مكتبة غنية بالخوارزميات والأدوات: توفر المكتبة أغلب خوارزميات تعلم الآلة التقليدية، مما يغنينا عن عناء بناء هذه الخوارزميات من الصفر، إذ تتوفر عشرات الخوارزميات التي يمكن تطبيقها من خلال سطور معدودة من الكود، فيمكننا التركيز على تحسين معالجة البيانات وتحسين جودتها واختيار النموذج الأنسب للمشكلة التي لدينا التوافق مع المكتبات الأخرى: تعمل المكتبة بشكل سلس مع المكتبات الأخرى مثل باندا Pandas و نمباي NumPy التي توفر هياكل بيانات وعمليات تسهل اكتشاف أنماط البيانات وتحليلها ومعالجتها لتصبح جاهزة للنموذج الذي نحتاج لتدريبه معالجة البيانات باستخدام ساي كيت ليرن توفر ساي كيت ليرن Scikit Learn العديد من الأدوات الجيدة لمعالجة البيانات وتجهيزها لتدريب النماذج عليها، وكما نعرف تٌعد البيانات وجودتها العامل الأهم في تحسين دقة توقعات النماذج المستخدمة، لذلك هنالك بعض الخطوات التي نحتاج للقيام بها لمعالجة البيانات فمثلًا إذا كانت هناك قيم غير رقمية فنحن بحاجة لتحويلها إلى أرقام فنماذج تعلم الآلة هي نماذج رياضية ولن نستطيع القيام بعمليات حسابية على النصوص أو الصور بشكلها الأصلي. أمثلة على معالجة البيانات الترميز Encoding: هو عملية تبديل بعض البيانات بأرقام يسهل إجراء عمليات رياضية عليها، مع إمكانية إرجاعها لأصلها، يمكن ترميز البيانات في مكتبة Scikit Learn باستخدام الكود التالي: from sklearn.preprocessing import LabelEncoder # ترميز البيانات الوصفية city = ["القاهرة", "الرياض", "دمشق", "القاهرة"] # نعرف المٌرمز الذي يعوض عن اسمٍ برقم يعبر عنه encoder = LabelEncoder() # تقوم هذه الدالة بتجهيز المٌرمز # حيث سيمكننا أن نستخدمه أكثر من مرة بعد هذه الخطوة لترميز البيانات المدخلة له بناءً على أول بيانات أعطت له encoder.fit(city) # الآن يمكننا استخدامه على أي بيانات أخرى لترميزها city_encoded = encoder.transform(city) print(city_encoded) # Output: [1 0 2 1] print(encoder.transform(["الرياض"])) # Output: [0] # عكس الترميز print(encoder.inverse_transform(city_encoded)) # Output: ['القاهرة' 'الرياض' 'دمشق' 'القاهرة'] print(encoder.inverse_transform([2, 1, 0, 0, 1])) # Output: ['دمشق' 'القاهرة' 'الرياض' 'الرياض' 'القاهرة'](city_encoded) التعامل مع القيم المفقودة : قد تتضمن البيانات بعض القيم المفقودة ويمكن التعامل معها في مكتبة Scikit Learn بسهولة من خلال حذف الصفوف التي تحتوي قيمًا مفقودة إن كانت قليلة للغاية، أو التعويض عنها باستخدام المعلومات الإحصائية كالمتوسط الحسابي للقيم، أو بناء نموذج لتوقعها بحسب القيم الموجودة بالفعل. خوارزميات تعلم الآلة في مكتبة Scikit Learn تتضمن مكتبة Scikit Learn العديد من خوارزميات تعلم الآلة التي تساعدنا على تنفيذ مهام متنوعة، وفيما يلي نبذة عن أهم هذه الخوارزميات: أولًا: خوارزميات التعلم الخاضع للإشراف التعلم الخاضع للإشراف Supervised Learning هو نوع من التعلم الآلي يصف المهام التي تكون فيها البيانات المراد توقعها معلوم مخرجاتها الممكنة مسبقًا وتوجد بيانات تحتوي على ملاحظات سابقة تتضمن الوسوم Labels المراد تعليم النموذج توقعها، وسنوضح تاليًا أبرز الخوازرميات التي تندرج تحت هذه النوع. خوارزميات توقع الانحدار Regression توقع الانحدار هو نوع من المهام التي يمكننا القيام بها باستخدام خوارزميات مضمنة في ساي كيت ليرن Scikit Learn، يتوقع هذا النوع من الخوارزميات الحصول على أمثلة سابقة يتعلم منها العلاقة بين المدخلات المعطاة والوسم المراد توقعه، والذي يكون قيمة عددية مستمرة continuous مثل توقع درجة الحرارة أو توقع أسعار المنازل. أمثلة على خوارزميات توقع الانحدار: توقع الانحدار الخطي Linear Regression توقع الانحدار بالدوال متعددة الحدود Polynomial Regression خوزارزميات التصنيف Classification يصنف البشر كل شيء حولهم من الحيوانات والجمادات إلى أنواع الأفلام والروايات، وتتوفر خوارزميات تستطيع محاكاة البشر وتتعلم تصنيف الأشياء المختلفة بإعطاء نماذج وملاحظات سابقة لتصنيفات قام بها البشر من قبل حتي تستطيع الآلة تعلم التصنيف، يمكن الاستفادة من التصنيف في أتمتة العديد من المهام المرجو فيها تصنيف عدد ضخم من العناصر في وقت قليل بالتالي توفير الوقت وزيادة الكفاءة، عملية التصنيف تخرج لنا قيمًا منفصلة discrete. من الأمثلة على استخدام هذه الخوارزميات توقع حالة الطقس هل هو مشمس أم غائم أم ماطر أم حار ...إلخ. وتصنيف الصور، وتوقع تقييمات الأفلام. أمثلة على خوارزميات التصنيف الانحدار اللوجستي Logistic Regression مٌصنّف الجار الأقرب Nearest Neighbors Classification شجرة القرار Decision Tree خوارزميات تجميع النماذج Models Ensemble تتيح لنا ساي كيت ليرن Scikit Learn القدرة على دمج أكثر من نموذج تعلم آلة ليشكلوا نموذجًا أقوى، يمكن تشبيه الأمر بلجنة أو فريق من الأصدقاء كل منهم خبير في مجال معين وعند جمع خبرتهم معًا يغطون على نقاط الضعف الخاصة بهم. يمكن تجميع النماذج باستخدام التصويت Voting حيث نجري تدريب لعدد من النماذج ثم نأخذ بتوقع الأغلبية في حالة كون المشكلة تصنيفية، أما أن كانت المشكلة توقع انحدار يمكن أن تأخذ متوسط التوقعات، لنلاحظ الكود التالي: from sklearn.ensemble import VotingClassifier # التصنيف اللوجيستي model1 = LogisticRegression() # شجرة القرارات model2 = tree.DecisionTreeClassifier() # مٌصنف أقرب الجيران model3 = KNeighborsClassifier(n_neighbors=3) # تجميع لتوقعات النماذج باستخدام التصويت model = VotingClassifier(estimators=[('lr', model1), ('dt', model2), ('knn', model3)], voting='hard') # تدريب النموذج # لاحظ أن مدخلات هذه الدالة هي الخواص المطلوب من النموذج تعلم الأنماط بها # بالإضافة إلى الوسم المٌراد توقعه # تمثل هذه المدخلات التجارب المٌراد للنموذج التعلم منها # يمكنك أن تستخدم هذه الدالة في تدريب أي نموذج في ساي كيت ليرن model.fit(X_train, y_train) # استخدام النموذج في التوقع # البيانات المدخلة للنموذج لم يرها من قبل # ولكنها تحتوي نفس الخواص والأعمدة التي تم تدريب النموذج عليها # نرغب في تدريب النموذج على التعميم لبيانات لم يرها من قبل y_pred = model.predict(X_test) جمعنا في الكود أعلاه عدد من النماذج الضعيفة ومحدودة المعرفة حيث يتدرب كل نموذج على جزء من البيانات، وجمعنا معرفتهم معًا للخروج بتوقع واحد مثال على هذا النوع هو خوارزمية الغابة العشوائية Random Forest وهي تجميع لنماذج من شجرة القرارات Decision Tree البسيطة. تقلل هذه الطريقة من فرص حفظ النموذج للبيانات وتمنحه مرونة أكثر لتعلم الأنماط الحقيقية التي تمكنه من توقع الإجابات الصحيحة عند تعرضه لبيانات جديدة عند تشغيل النموذج. خوارزميات التعلم غير الخاضع للإشراف التعلم غير الخاضع للإشراف Unsupervised Learning هو نوع من تعلم الآلة تكون فيه البيانات غير موسومة، ومهمة النموذج تعلم الأنماط بين البيانات ليكتشف الفروقات بينها، مثلًا إن كانت المدخلات صور فتكون المهمة معرفة أي الصور يمكن اعتبارها تابعة لنفس الشيء دون إعطاء وسم للبيانات في عملية التدريب، ما يعرفه النموذج هو الخواص المُراد للنموذج التعلم منها فقط للتميز بين الصور بناء عليها، وسنوضح تاليًا أبرز الخوازرميات التي تندرج تحت هذه النوع. خوزارميات العنقدة أو التصنيف العنقودي Clustering لا نوفر للنموذج في هذه الحالة التصنيفات والوسوم المتوقع انتماء البيانات لها على غرار التصنيف العادي، ففي العنقدة Clustering على النموذج أن يكتشف هذا بنفسه من خلال تعلم الأنماط الموجودة بالبيانات للتمييز بينها. تستخدم خوزارميات العنقدة في أنظمة التوصية Recommendation systems لتقديم اقتراحات شخصية للمستخدمين تناسب اهتماماتهم، أو فصل عناصر الصورة Image segmentation من خلال تحديد البكسلات التي تنتمي لنفس العنصر Object في الصورة بالتالي تفريقها عن باقي العناصر. أمثلة على خوارزميات العنقدة: العنقدة حول عدد من نقاط التمركز k-means العنقدة الهرمية Hierarchical clustering خوارزميات اختزال البيانات نحتاج لاختزال البيانات Data Reduction في كثير من الحالات بسبب محدودية القدرة الحاسوبية وعدم تأثير كل هذه البيانات بشكل ملحوظ على أداء النموذج، ونجري اختزال البيانات عادة من خلال تقليل أبعادها بدمج بعض الأعمدة أو الخواص بدون خسارة المعلومات الهامة قدر الإمكان، فمثلًا يمكننا تقليل أبعاد الصورة مع الاحتفاظ بملامحها ودقتها قدر الإمكان، أو تقليل عدد الأعمدة من 100 إلى 10 مع احتفاظ الأعمدة العشرة بأغلبية المعلومات التي تؤثر على التوقعات. من أمثلة خوارزميات اختزال البيانات خوارزمية تحليل العنصر الأساسي Principal Component Analysis التي تمكننا من اختزال عدد الأعمدة أو الأبعاد بالبيانات مع الاحتفاظ بأكبر قدر ممكن من المعلومات. # تساعدنا هذه المكتبة على صنع هياكل بيانات مصفوفة # والقيام بالعديد من العمليات الحسابية import numpy as np # هذه الخوارزمية التي سنستخدمها لاختزال البيانات from sklearn.decomposition import PCA # في البداية لنصنع بيانات عشوائية لنقوم بالتجربة # يضمن لنا هذا السطر ثبات القيم العشوائية عند إعادة تشغيل هذا الكود np.random.seed(0) # نعرف مصفوفة عشوائية التوليد، تتكون من 10 صفوف و100 عمود X = np.random.rand(10, 100) # لنعرف الخوارزمية التي استوردناها pca = PCA(n_components=10) # نضع هنا عدد الأعمدة التي نرغب أن تصبح البيانات عليها # لنقم بتشغيل الخوارزمية على البيانات التي معنا x_pca = pca.fit_transform(X) # هذا السطر يقوم بتدريب الخوارزمية على اختزال البيانات وفي نفس الوقت يقوم باختزال البيانات المدخلة # لنرى النتائج print("حجم البيانات قبل الاختزال", X.shape) print("حجم البيانات بعد الاختزال", x_pca.shape) ''' المـــــــــخــرجـــــــــــــات ------------------------------------- حجم البيانات قبل الاختزال (10, 100) حجم البيانات بعد الاختزال (10, 10) ''' خوارزميات كشف الشذوذ كشف الشذوذ Anomaly Detection هو عملية ملاحظة الغير مألوف والخارج عن الأغلبية في البيانات. يستخدم في حالات عددية مثل اكتشاف المعاملات الاحتيالية في البنوك، واكتشاف الأنماط غير المعتادة في تدفق الشبكات مما قد يساعد على منع هجمات إغراق الشبكة بالطلبات، واكتشاف المنتجات المعيبة في خطوط الإنتاج واكتشاف الأنماط غير المعتادة للمؤشرات الحيوية لجسم الإنسان التي تستخدمها تطبيقات الساعات الذكية التي تجمع هذه المؤشرات. من الخوارزميات التي تطبق كشف الشذوذ خوارزمية غابة العزل Isolation Forest، وفيما يلي مثال على طريقة استخدامها: # استيراد نموذج كشف كشف الشذوذ from sklearn.ensemble import IsolationForest # سنستخدمها لتوليد بعض البيانات import numpy as np # نولد البيانات لتجربة النموذج X = np.array([[10, 10], [12, 12], [8, 8], [9, 9], [200, 200]]) # يمكنك ملاحظة أن النقطة الأخيرة شاذة عن باقي النقاط # لنقم بتعريف وتدريب النموذج clf = IsolationForest(contamination=0.2) # %يفترض هذا المعامل أن نسبة شذوذ 20 # لاحظ أن التدريب يتم بدون استخدام وسوم حيث أن هذا النموذج غير خاضع للإشراف clf.fit(X) # في حالة اكتشاف شذوذ سيتم وسمه بسالب واحد لتميزه predictions = clf.predict(X) print(predictions) # Output: [ 1 1 1 1 -1] خوارزميات التعلم الخاضع لإشراف جزئي يستخدم التعلم الخاضع لإشراف جزئي Semi-supervised Learning بيانات تتكون من خليط من البيانات الموسومة Labeled data والبيانات غير الموسومة Unlabeled data أثناء التدريب، يمكن أن يصبح هذا الأسلوب مفيدًا للغاية عندما يكون من الصعب الحصول على بيانات موسومة كافية أو يحتاج الحصول عليها إلى وقت ومجهود ضخم. يستخدم عادة في ترشيح المحتوى في أنظمة التوصية فبعض البيانات قد تكون متوفرة بشكل صريح مثل تقييمات المستخدم للمنتجات والتي يمكن الاستدلال بها لاقتراح المزيد من العناصر، ولكن يمكن أيضًا الاستفادة من المعلومات غير الموسومة والمعروفة ضمنية من خلال تفاعلات المستخدم. كما يستخدم في تدريب نماذج التعلم على الصور ومقاطع الفيديو حيث يمكن وسم بعض الصور أو العناصر فيها بشكل بشري لكن لا يمكن حصر جميع العناصر المختلفة التي قد تكون بداخل صورة ووسمها لذا سنستفيد من دمج الجزء الموسوم من البيانات مع الجزء غير الموسوم في توفير كمية أكبر من البيانات لتدريب نماذج أكثر دقة، وسنوضح تاليًا أبرز الخوازرميات التي تندرج تحت هذه النوع. خوراززميات التعلم الذاتي Self Training يمكننا استخدام التعلم الذاتي Self Training في ساي كيت ليرن Scikit Learn لتحويل أي نموذج تصنيف تقليدي إلى نموذج يمكنه التدريب على البيانات الموسومة وغير الموسومة معًا، شريطة أن يكون النموذج قادرًا على توقع التصنيفات كاحتمالات، ونحتاج لاستخدام نموذج يسمى SelfTrainingClassifier لتحويل النماذج العادية لنماذج خاضعة لإشراف جزئي، لاحظ الكود التالي: from sklearn.tree import DecisionTreeClassifier from sklearn.semi_supervised import SelfTrainingClassifier # نعرف أي مصنف ليكون نموذج الأساس base_classifier = DecisionTreeClassifier() # نقوم بإحاطة نموذج الأساس ليصبح قادرًا على التعلم الذاتي self_training_model = SelfTrainingClassifier(base_classifier) # نقوم بتدريب النموذج مثل أي نموذج تقليدي self_training_model.fit(X_train, y_train) ملاحظة: عند تجهيزنا لبيانات التدريب نحتاج لوسم البيانات غير الموسومة بقيمة 1- حيث أننا لا نستطيع أن نمرر البيانات خلال النموذج وهي غير موسومة. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن اختيار النموذج المناسب قد يبدو اختيار النموذج المناسب في مكتبة ساي كيت ليرن معقدًا، إذ يمكن استخدام أكثر من خوارزمية لحل نفس المشكلة. ولكل خوارزمية معاملات تحكم مختلفة، لذلك يجب علينا استخدام أدوات تساعدنا في مقارنة النماذج وقياس أدائها. فيما يلي بعض المعايير الرئيسية التي يمكن استخدامها: الدقة Accuracy: عدد التوقعات الصحيحة التي توقعها النموذج مقسومًا على إجمالي البيانات. كلما كانت النسبة أعلى، كان النموذج أفضل خطأ المتوسط التربيعي Mean Squared Error: الفرق بين القيمة الفعلية التي نريد التنبؤ بها والقيمة التي توقعها النموذج، ثم تربيع هذا الفرق. وهو يساعد في تحديد مدى دقة التوقعات بحث مصفوفة المعاملات GridSearch: يستخدم لاختبار عدد من المعاملات أو إعدادات النماذج المختلفة دفعة واحدة والعثور على أفضل مجموعة معاملات تحقق أفضل أداء. تستهلك هذه الطريقة وقتًا وموارد حاسوبية كبيرة خاصة إذا كانت المعاملات كثيرة جدًا مقارنة بين ساي كيت ليرن Scikit Learn و تنسورفلو TensorFlow يكمن الفرق الرئيسي بين تنسورفلو TensorFlow وبين ساي كيت ليرن Scikit Learn في تخصص الاستخدام، حيث أن ساي كيت ليرن مكتبة متخصصة بخوارزميات تعلم الآلة التقليدية Traditional Machine Learning بينما تنسورفلو TensorFlow إطار عمل شامل لتطوير وتشغيل نماذج التعلم العميق Deep Learning المبنية على الشبكات العصبية الاصطناعية. وعلى الرغم من إمكانية تدريب شبكات عصبية اصطناعية باستخدام ساي كيت ليرن فهي ليست محسنة لأجل هذا الغرض، إذ لا تستطيع المكتبة الاستفادة من وحدات المعالجة الرسومية GPUs التي تستطيع تسريع تدريب النماذج العميقة بشكل أفضل من وحدات المعالجة المركزية CPUs، بينما لا يقف دعم تنسورفلو TensorFlow عند استخدام GPU واحد، حيث يمكن توزيع التدريب على عدة أجهزة على التوازي وهو شيء صعب التحقيق باستخدام ساي كيت ليرن. الخلاصة تعرفنا في هذه المقالة على مكتبة الذكاء الاصطناعي الشهيرة ساي كيت ليرن Scikit Learn وأبرز مميزاتها ووضحنا بعض التطبيقات الواسعة لخوارزميات التعلم المبنية بها، وكذلك تعرفنا على الفرق بينها وبين إطار العمل تنسورفلو TensorFlow.ننصح بتعلم استخدام هذه المكتبة وتجربتها في بناء وتطبيق نماذج تعلم آلة مخصصة، فهي توفر أدوات قوية ومرنة تمكنكم من تنفيذ حلول مبتكرة في مختلف مجالات الذكاء الاصطناعي. اقرأ أيضًا الذكاء الاصطناعي: دليلك الشامل بناء مصنف بالاعتماد على طرق تعلم الآلة بلغة البايثون باستخدام مكتبة Scikit-Learn العمل مع ملفات CSV وبيانات JSON باستخدام لغة بايثون استخدام التدريب الموزع ومكتبة Accelerate لتسريع تدريب نماذج الذكاء الاصطناعي
  5. تتدرب نماذج التعلم الآلي على مجموعات من البيانات الضخمة حيث توسم نقاط الاهتمام في البيانات -أي الأجزاء المهمة في التي نريد التركيز عليها والتعلم منها- لإعطائها معنى وسياق. نتعمق في هذه المقالة في وصف طرق بناء أنظمة وسم البيانات data labeling من الصفر مركزين على تدفق البيانات في النظام وكيفية تأمينها وضمان جودتها. ما معنى وسم البيانات ينتج الذكاء المتأصل في الذكاء الاصطناعي من تعرضه لكميات من البيانات التي تتدرب عليها نماذج تعلم الآلة، ومع التقدم الحالي في النماذج اللغوية الضخمة مثل GPT-4 وجيمناي Gemini التي يمكنها معالجة تريليونات الوحدات اللغوية الصغيرة التي تسمى tokens، ولا تتكون هذه البيانات المستخدمة في التدريب من معلومات أولية مستخلصة من الإنترنت فقط فهي تتضمن أيضًا وسومًا حتى يكون التدريب فعالًا. وسم البيانات data labeling هو عملية تحويل البيانات الأولية والمعلومات غير المعالجة إلى بيانات موسومة أو بيانات معنونة لإضافة سياق ومعنى واضح لها، وتحسّن هذه العملية من دقة تدريب النموذج، فأنت توضح وتشير إلى ما ترغب للنظام أن يتعرف عليه، وتتضمن الأمثلة على وسم البيانات مهام مثل تحليل المشاعر في النصوص حيث توسم النصوص في هذه الحالة بمشاعر معينة مثل إيجابي أو سلبي أو محايد، ومهام التعرف على الكائنات في الصور إذ يوسم كل كائن في الصورة بتصنيف معين. وكذلك تستخدم في تنصيص الكلام المنطوق في الملفات الصوتية، أو وسم الأفعال في مشاهد الفيديو. تلعب جودة البيانات دورًا هائلًا في تدريب البيانات، فالمدخلات الرديئة تؤدي إلى مخرجات رديئة فلا يمكننا توقع أداء مبهر من نموذج لم يُدرّب إلا على بيانات رديئة الجودة، فالنماذج التي تتدرب على بيانات بها أخطاء وتناقض في الوسوم ستواجه صعوبة في محاولة التأقلم مع البيانات الجديدة التي لم تراها في التدريب وربما تكون متحيزة في توقعاتها مسببة أخطاء في المخرجات، ويمكن أن يؤدي تراكم البيانات الرديئة في المراحل المختلفة إلى تأثير مركب مما يؤثر على كل الخطوات والنماذج التي تعتمد عليها. يهدف هذا المقال لتوضيح طرق تعزيز جودة البيانات واكتساب أفضلية تنافسية في كافة مراحل وسم البيانات. وللسهولة سنركز على المنصات والأدوات التي تستخدم في عملية وسم البيانات ونقارن بين مميزات ومحدوديات كل تقنية وأداة، وبعد ذلك ننتقل إلى اعتبارات أخرى لا تقل أهمية مثل تقليل التحيز، وحماية الخصوصية، وزيادة دقة وسم البيانات. دور وسم البيانات في سير عمل تطبيقات تعلم الآلة يقسم تدريب نماذج تعلم الآلة إلى ثلاثة تصنيفات عامة وهي التعلم الخاضع للإشراف Supervised learning والتعلم غير الخاضع لإشراف Unsupervised learning والتعلم المعزز Reinforcement learning. يعتمد التعلم الخاضع للإشراف على البيانات الموسومة labeled training data، والتي تحتوي نقاط الاهتمام في البيانات بها على وسوم بالتوقع أو العنوان الصحيح، فيتعلم النموذج أن يربط بين خواص المدخلات والوسوم أو التسميات الصحيحة المرتبطة بها مما يعطيه القدرة على تخمين وسوم البيانات الجديدة التي لم يتدرب عليها من قبل ولا يعرف ما وسمها الحقيقي، من جهة أخرى يحلل التعلم غير الخاضع للإشراف البيانات غير الموسومة بحثًا عن الأنماط المخفية أو التجميعات الموجودة في البيانات، وأما في التعلم المعزز فتكون عملية التدريب بالتجربة والخطأ ويمكننا التدخل في مرحلة التقييم والمراجعة لتوجيه عملية التعلم. تُدرّب معظم نماذج التعلم الآلي باستخدام أسلوب التعلم الخاضع للإشراف supervised learning. ونظرًا لأهمية البيانات عالية الجودة فينبغي اعتبارها في كل خطوة من عملية التدريب لذلك يلعب وسم البيانات دورًا حيويًا في هذه العملية. إن تحضير وجمع البيانات هي العملية التي تسبق وسم البيانات، حيث تُجمع البيانات الأولية أو الخام من مصادر متنوعة مثل المستشعرات الإلكترونية sensors، وقواعد البيانات، وسجلات العمليات logs، وواجهات برمجة التطبيقات APIs، وفي الغالب لا تخضع هذه البيانات لهيكل أو تنسيق ثابت وقد تحتوي على تناقضات وشوائب مثل قيم مفقودة أو قيم شاذة outliers أي قيما غير مألوفة وتختلف بشكل كبير عن باقي البيانات، أو قيم متكررة، لذا في عملية المعالجة تُنظّف البيانات وتُنسَّق وتُحوّل لتكون جاهزة لوسمها labeling، وتستخدم استراتيجيات عديدة للتعامل مع معالجة البيانات مثل حذف الصفوف المكررة، أو حذف الصفوف التي تحتوي على قيم مفقودة أو التعويض عن هذه القيم باستخدام نماذج تخمين إحصائية، كما يمكننا إحصائيًا اكتشاف القيم الشاذة outliers ومعالجتها. تلي معالجة البيانات في الخطوات عملية وسم البيانات لتوفير المعلومات التي يحتاجها نموذج التعلم الآلي كي يتعلم، وتختلف استراتيجيات وسم البيانات باختلاف نوع هذه البيانات والغرض من النموذج، فوسم الصور يتطلب أساليب مختلفة عن وسم النصوص، وعلى الرغم من وجود أدوات وسم آلية ولكن التدخل البشري يحسن بشكل كبير من عملية الوسم خاصة عندما يتعلق الأمر بالدقة أو تفادي التحيز الذي قد يوجد في الأدوات الآلية، وبعد أن توسم البيانات تاتي مرحلة تأكيد الجودة والتي تضمن الدقة والتناسق واكتمال الوسوم، ويعمل فريق تأكيد الجودة على توظيف أسلوب الوسم المزدوج إذ يقوم أكثر من شخص بوسم عينة من البيانات بشكل مستقل ويقارنون نتائجهم لحل أي اختلاف في الآراء. الخطوة التالية هي خضوع النموذج للتدريب باستخدام البيانات الموسومة ليتعلم الأنماط والعلاقات بين المدخلات والوسوم المرتبطة بها، حيث تعدل معاملات النموذج في عملية تكرارية من التخمين وتقييم الخطأ حتى تتحسن الدقة بالنسبة للوسوم المعلومة، ولتقييم فعالية النموذج يختبر على بيانات موسومة لم يرها من قبل، وتقاس صحة تخميناته وتوقعاته باستخدام معايير رقمية مثل نسبة الصواب accuracy والدقة precision والاستذكار Recall أو الحساسية sensitivity، فإذا كان أداء النموذج ضعيفًا تُعدل بعض الأشياء قبل إعادة التدريب مثل تحسين جودة بيانات التدريب بتقليل الضوضاء بالبيانات data noise أو تقليل التحيز وتحسين عملية وسم البيانات، وفي النهاية بعد إعادة التدريب وتحسين النموذج يصبح جاهزًا للتشغيل deployment ويمكنه التفاعل مع البيانات في العالم الحقيقي. وأخيرًا من المهم مراقبة أداء النموذج لكشف وتحديد أي مشكلات قد تتطلب تحديث النموذج أو إعادة تدريبه. تحديد أنواع وطرق وسم البيانات تَسبق عملية تحديد نوع البيانات مرحلةَ تصميم وبناء معمارية وسم البيانات، حيث توجد البيانات في تنسيقات وهياكل متنوعة تشمل النصوص والصور ومقاطع الفيديو والملفات الصوتية، وكل نوع من البيانات يأتي بمجموعة من التحديات المميزة التي تتطلب طريقة خاصة في التعامل معها لتحقيق تناسق ودقة في عملية وسم البيانات، بالإضافة لذلك فبعض البرمجيات المستخدمة في وسم البيانات تتضمن أدوات مصممة للتعامل مع أنواع معينة من البيانات، وكذلك تتخصص فرق الوسم في وسم نوع محدد من البيانات، لذلك يعتمد اختيار البرمجيات والفريق المناسب بشكلٍ كبير على المشروع. على سبيل المثال، قد تطلب عملية وسم بيانات للرؤية الحاسوبية computer vision تصنيف الصور الرقمية ومقاطع الفيديو وإنشاء مستطيلات التحديد bounding boxes لعنونة الكائنات الموجودة داخلها. وتحتوي مجموعة بيانات وايمو المفتوحة waymo's open dataset مثلًا على مجموعة بيانات موسومة لمهام الرؤية الحاسوبية computer vision للسيارات ذاتية القيادة، وقد وُسمت هذه البيانات بجهود مجموعة من الأفراد عبر الإنترنت مع مساهمات واسمين فرديين. ومن التطبيقات الأخرى للرؤية الحاسوبية computer vision التصوير الطبي، والاستطلاع الجوي، والمراقبة، والتأمين، والواقع المعزز augmented reality. ويمكن وسم النصوص ومعالجتها باستخدام خوارزميات معالجة اللغات الطبيعية Natural Language processing بمجموعة متنوعة من الطرق، تشمل تحليل المشاعر sentiment analysis من النصوص مثل المشاعر الإيجابية والسلبية، واستخلاص الكلمات المفتاحية مثل العبارات ذات الصلة، وكذلك التعرف على الكيانات الموجودة في النص مثل الأشخاص والأماكن والتواريخ، يمكن أيضًا تصنيف النصوص القصيرة. على سبيل المثال، يمكن تحديد فيما إذا كانت رسالة بريد إلكتروني رسالة مزعجة spam أم لا، ويمكن التعرف على لغة النص كالعربية أو الانجليزية، وتستخدم نماذج معالجة اللغات الطبيعية في تطبيقات مثل أنظمة المحادثة chatbots والمساعدات البرمجية coding assistants والمترجمات translators ومحركات البحث search engines. كما تستخدم البيانات الصوتية في تطبيقات متنوعة تشمل تصنيف الصوتيات، والتعرف على الصوت، والتعرف على الكلام، والتحليل الصوتي، ويمكن وسم الملفات الصوتية للتعرف على كلمات معينة مثل "يا سيري" أو "Hey Siri"، وحتى تصنيف أنواع مختلفة من الأصوات، أو تحويل الكلام المنطوق إلى كلمات مكتوبة. إن العديد من نماذج التعلم الآلي هي نماذج متعددة multimodal أي أنها نماذج قادرة على تفسير والتعامل مع البيانات من مصادر مختلفة بشكل متزامن، فيمكن للسيارات ذاتية القيادة جمع معلومات بصرية مثل إشارات المرور والمارين في الطريق وتجمع بيانات صوتية مثل صوت أبواق السيارات، مما يتطلب وسمًا متعددًا multimodal labeling حيث يقوم الواسمون البشريون بجمع ووسم أنواع مختلفة من البيانات بطريقة تراعي العلاقات والتفاعلات بين تلك الأنواع. من المهم اختيار الطريقة الأنسب لوسم البيانات قبل الشروع في بناء النظام الخاص بنا، وقد كان الوسم البشري للبيانات سابقًا هو الطريقة المتبعة، ولكن مع التقدم الهائل في التعلم الآلي ازدادت إمكانيات الأتمتة مما جعل العملية أكثر كفاءة وأقل تكلفةً، ولكن تجدر الإشارة أنه وعلى الرغم من تحسن دقة أدوات الوسم الآلية فإنها لاتزال غير قادرة على مواكبة الدقة والاعتمادية التي يوفرها البشر. لذا يلجأ المختصون عادة لأسلوب مختلط يتضمن مشاركة البشر والبرامج الآلية في عملية وسم البيانات، حيث تستخدم برامج آلية لتوليد الوسوم الأولية ثم تجري مراجعتها وتدقيقها وتصحيحها بواسطة الواسم البشري، وتضاف الوسوم المصححة إلى مجموعة بيانات التدريب لتحسين دقة وأداء البرنامج الآلي، وهذا يضمن الحفاظ على مستوى جيد من الدقة والتناسق وهو أكثر الاستراتيجيات شيوعًا في وسم البيانات. اختيار مكونات نظام وسم البيانات تبدأ عملية وسم البيانات بخطوة تجميع البيانات وتخزينها، حيث تجمع البيانات إما بشكل يدوي باستخدام أساليب مثل المقابلات الشخصية والاستبيانات واستطلاعات الرأي أو بشكل آلي مثل استخلاص البيانات من الإنترنت web scraping. في حال عدم امتلاكك للموارد الكافية لجمع البيانات على نطاق واسع فيمكن الاعتمدا على مجموعات البيانات مفتوحة المصدر المتوفرة على منصات مثل كاجل Kaggle أو مستودع مجموعات البيانات الخاص بجامعة كاليفورنيا ايفرين UCI repository أو بحث جوجل لمجموعات البيانات Google dataset search أو جت هاب GitHub فكلها مصادر جيدة، بالإضافة لمصادر البيانات المصنعة باستخدام نماذج رياضية لتحاكي البيئات الحقيقة، ولتخزين هذه البيانات يمكنك تأجير مساحات تخزينية من مزودي خدمات سحابية مثل جوجل أو مايكروسوفت حتى تتوسع حسب احتياجاتك، فبشكل نظري يمكنهم توفير مساحة تخزين غير محدودة مع توفير ميزات مدمجة تزيد من التأمين، ولكن إذا كنت تعمل مع بيانات شديدة السرية وتحتاج للامتثال لقوانين وأنظمة معينة مثل مثل قانون حماية البيانات العامة GDPR فحلول التخزين المحلية هي الخيار المناسب. يمكنك أن تبدأ في وسم البيانات فور أن تنتهي من تجميعها، وتعتمد عملية الوسم بشكل رئيسي على نوع البيانات، ولكن في العموم تحدد كل نقاط الاهتمام في البيانات وتصنف باستراتيجية إبقاء الإنسان مشاركًا في العملية، وتوجد العديد من المنصات المتاحة التي تبسط هذه العملية المعقدة، وبعضها مفتوح المصدر مثل Doccano و LabelStudio و CVAT ومنصات تجارية مثل scale data engine و labelbox و Supervisely. تُراجَع الوسوم بعد إنشائها بواسطة فريق ضمان الجودة لضمان الدقة والتناسق وحل أي تناقضات موجودة في الوسوم أو اختلافات في تقرير الوسم من خلال الطرق اليدوية مثل تقرير الأغلبية أو اللجوء للمعايير أو استشارة خبراء في هذا التخصص، ويمكن تخفيف التناقضات بطرق آلية مثل استخدام نماذج إحصائية مثل Dawid-Skene لجمع الوسوم المختلفة من عدة مصادر في وسم واحد معتمد أكثر، فور الاتفاق على الوسوم بواسطة ذوي الصلة تعد الحقائق مطلقة يمكن استخدامها لتدريب نماذج التعلم الآلي، بعد التأكد من أن الوسوم دقيقة ومتسقة، تصبح هذه الوسوم حقائق ثابتة يمكن استخدامها لتدريب نماذج تعلم الآلة. هنالك أيضًا أدوات مفتوحة المصدر وأخرى تجارية تساعدنا في مراجعة الوسوم والتحقق من الجودة وتدقيق البيانات، قد تكون الأدوات التجارية أكثر تطورًا وتوفر ميزات إضافية مثل التدقيق الآلي، ونظام إدارة المراجعات، والموافقة عليها أو رفضها وأدوات تعقب لمعايير الجودة. مقارنة بين أدوات وسم البيانات تُعد الأدوات مفتوحة المصدر نقطة بداية جيدة، فعلى الرغم من محدودية وظائفها وميزاتها مقارنة بالأدوات التجارية فإن غياب رسوم الترخيص يمثل ميزة مهمة للمشاريع الصغيرة، وتقدم الأدوات التجارية وسم أولي مدعوم بالذكاء الاصطناعي ويمكن تعويض هذه الميزة في الأدوات مفتوحة المصدر عن طريق دمجها مع نموذج تعلم آلي خارجي. الاسم أنواع البيانات المدعومة إدارة سير العمل تأكيد الجودة دعم التخزين السحابي ملاحظات إضافية استديو الوسم النسخة العامة Label Studio Community Edition نصوص، صور، صوتيات، مقاطع فيديو، بيانات زمنية نعم لا التخزين السحابي لجوجل، التخزين السحابي لمايكروسوفت أزور تحتوي النسخة المجانية على مجموعة واسعة من الميزات، ولكن النسخة المدفوعة الخاصة بالشركات أكثر احترافية سي في أيه تي CVAT صور ومقاطع فيديو نعم نعم التخزين السحابي لجوجل، التخزين السحابي لمايكروسوفت أزور يدعم LiDAR وهو نظام لقياس المسافات ووسم المجسمات المكعبة ثلاثية الأبعاد 3D Cuboid، بالإضافة إلى وسم الأوضاع المختلفة لهيكل مبسط من نقاط مفصلية في جسد الإنسان ويمكن استخدامه لتخمين وقفته أو حركته دوكانو Doccano نصوص وصور وملفات صوتية نعم لا التخزين السحابي لجوجل مصمم لوسم النصوص ڤيا VIA (VGG Image Annotator) صور وملفات صوتية ومقاطع فيديو لا لا لا يعتمد على المتصفح ميك سينس MakeSense.AI صور لا لا لا يعتمد على المتصفح توفر المنصات مفتوحة المصدر العديد من الميزات المطلوبة لمشاريع وسم البيانات ولكن المشاريع المعقدة لتعلم الآلة تتطلب ميزات متقدمة مثل الأتمتة والقابلية للتوسع وتتاح هذه الميزات الإضافية في المنصات التجارية، بالإضافة لمزايا تأمينية والدعم الفني ومزايا مٌسّاعدة في عملية الوسم باستخدام نماذج التعلم الآلي وشاشة التقارير والرسومات البيانية التحليلية كل هذه الميزات تجعل المنصات التجارية تستحق الزيادة في التكلفة. الاسم أنواع البيانات المدعومة إدارة سير العمل تأكيد الجودة دعم التخزين السحابي ملاحظات إضافية Lablbox نصوص، صور، مقاطع فيديو، ملفات صوتية، HTML نعم نعم التخزين السحابي لجوجل، التخزين السحابي لمايكروسوفت أزور توفر المنصة فرقًا متخصصة في الوسم وفي المجالات المرتبطة بالبيانات من خلال خدمة Boost Supervisely صور، مقاطع فيديو، بيانات ثلاثية الأبعاد مجمعة من عدة مستشعرات 3D sensor fusion، الصور الطبية بصيغة DICOM نعم نعم التخزين السحابي لجوجل، التخزين السحابي لميكروسوفت أزور بيئة متكاملة مفتوحة للدمج مع مئات التطبيقات المبنية على محرك التطبيقات الخاص بهم، يدعم LiDAR و RADAR وهي أنظمة لقياس البعد واكتشاف الأجسام بالإضافة إلى الصور الطبية متعددة الشرائح أو المستويات Scale AI Data Engine النصوص، الصور، ملفات الصوت، مقاطع الفيديو، البيانات ثلاثية الأبعاد المجمعة من عدة مستشعرات 3D sensor fusion، الخرائط نعم نعم التخزين السحابي لجوجل، التخزين السحابي لمايكروسوفت أزور يوفر أدوات متخصصة في قطاعات وصناعات محددة SuperAnnotate النصوص، الصور، الملفات الصوتية، مقاطع الفيديو، PDF ،HTML نعم نعم التخزين السحابي لجوجل، التخزين السحابي لميكروسوفت أزور يوفر فرق وسم متعددة اللغات وخبراء متخصصين في مجالات مختلفة وإذا كنا بحاجة لميزات خاصة لا تتوفر في الأدوات المتاحة فيمكننا في هذه الحالة بناء منصة وسم محلية نقرر من خلالها ما هي البيانات التي سندعمها وما هي تنسيقاتها ونحديد أنوع الوسوم المستخدمة، كما يمكننا تصميم وبناء ميزات مثل الوسم الأولي ومراجعة الوسوم وتأكيد الجودة وأدوات لإدارة سير العمل، ولكن تكلفة بناء وتشغيل منصة تضاهي المنصات التجارية تكلفة باهظة لأغلب الشركات. يعتمد الاختيار في النهاية على عدة عوامل، مثلًا إن لم تكن الأدوات المتاحة من خلال الأطراف الخارجية تناسب متطلبات المشروع أو إذا كانت البيانات سرية فحينها سيكون بناء منصة مخصصة محليًا هو الحل الأمثل، بينما يمكن لمشاريع أخرى أن تستفيد من نظام مختلط فالمهام الأساسية للوسم تُنفَّذ بواسطة الأدوات التجارية بينما الميزات المخصصة يمكن تطويرها محليًا ودمجها مع المنصات الخارجية. ضمان الجودة والأمان في أنظمة وسم البيانات يشمل نظام وسم البيانات العديد من المكونات التي تجعله معقدًا فهو يتعامل مع كميات هائلة من البيانات ومستويات مختلفة من البنية التحتية الحاسوبية وسياسات مختلفة وأنظمة سير عمل متعددة الطبقات والمستويات، كل هذا يجعل من عملية تشغيل هذه المكونات معًا بشكل سلسل مهمة مليئة بالتحديات وقد تؤثر على جودة وسم البيانات وفعاليته بالإضافة لمخاطر الأمان والخصوصية الموجودة في كل المراحل التي تمر بها العملية. تحسين دقة وسم البيانات تسرع الأتمتة من عملية الوسم ولكن الاعتماد المفرط على الأدوات المؤتمتة لوسم البيانات يمكن أن يقلل من دقة العملية التي تتطلب وعيًا بالسياق والمجال أو قدرة على الحكم الموضوعي وهذه قدرات لا يستطيع حاليًا أي نظامٍ برمجي تقديمها، لذا من المهم وضع توجيه لعملية الوسم بشكل بشري واكتشاف الاخطاء ومعالجتها لضمان جودة وسم البيانات. كما يمكن تقليل الأخطاء في عملية الوسم بتوفير مجموعة من التوجيهات والإرشادات الشاملة، فمثلًا ينبغي أن تعرف كل التصنيفات الممكنة والتنسيقات المتعامل معها، وينبغي أن تكون هذه الإرشادات مفصلة خطوة بخطوة وتتضمن حلولًا للحالات المتطرفة أو الخاصة، كما ينبغي أن تتوفر مجموعة من الأمثلة التي توضح كيفية التعامل مع نقاط الاهتمام الواضحة وغير الواضحة في البيانات. يمكننا أيضًا تجميع آراء عدد من الواسمين المستقلين عن نفس نقطة الاهتمام في البيانات ومقارنة نتائجهم فهذا من شأنه أن يؤدي إلى درجة أعلى من الدقة. فالاتفاق بين الواسمين Inter-annotator-agreement أو ما يعرف بمعيار IAA اختصارًا هو معيار مستخدم لقياس درجة الاتفاق هذه، أي أن نقطة الاهتمام في البيانات التي تحصل على أرقام منخفضة لهذا المعيار تتطلب عملية مراجعة لتقرير الوسم الأنسب لها. كما يساهم تتبع واكتشاف الأخطاء بشكل كبير في تحسين دقة الوسوم، وكشف الأخطاء وهذا يمكن أن ينفذ آليًا باستخدام برامج مثل كلين لاب Cleanlab حيث تجري مقارنة للبيانات الموسومة باستخدام القواعد المعرفة مسبقًا لإكتشاف أي أخطاء أو اختلافات، فبالنسبة للصور يمكن اكتشاف التداخل بين مستطيلات التحديد bounding boxes آليًا، بينما في النصوص يمكن اكتشاف الوسوم المفقودة أو التنسيقات الخاطئة، وتجري مراجعة جميع الأخطاء بعد ذلك من قبل فريق ضمان الجودة، كما يمكن الاستعانة بالذكاء الاصطناعي الذي توفره العديد من المنصات التجارية لاكتشاف الأخطاء التي تحدد الأخطاء المحتملة باستخدام نماذج تعلم آلي مدربة مسبقًا على بيانات موسومة، بعد تحديد ومراجعة نقاط الاهتمام في البيانات وتقرير الوسم الأصح يضاف لبيانات التدريب الخاصة بالنموذج لتحسين دقته من خلال عملية التعلم. يوفر تتبع الأخطاء تقييمًا في غاية الأهمية ويُحسّن عملية الوسم من خلال التعلم المستمر الذي يجري بتتبع عدة معايير مفتاحية مثل دقة الوسم ودرجة الإجماع بين الواسمين، فإن كان هناك مهام معينة تكثر فيها أخطاء الواسمين فينبغي تحديد الأسباب المؤدية لهذه الأخطاء، وتوفر العديد من المنصات التجارية أدوات مبنية بها تساعد على المراقبة والتقييم من خلال الرسومات البيانية التفاعلية التي توضح سجل الوسم وتوزيع الأخطاء، ويمكن تحسين الأداء بتعديل المعايير والإرشادات لتوضيح كيفية التعامل مع الإرشادات غير الواضحة وتحسين القواعد التي تساعد في اكتشاف الأخطاء. التعامل مع التحيز وضمان العدالة تعتمد عملية وسم البيانات بشكل مكثف على الحكم والتفسير الشخصي، مما يشكل تحديًا على الواسمين ليقومو بوسم البيانات بشكل عادل وغير متحيز حتى عندما تكون البيانات غير واضحة، فمثلًا عند تصنيف النصوص يمكن أن تكون بعض العبارات والمشاعر مزاحًا أو سخرية ومن السهل أن يساء فهمها، ومثالٌ آخر في تصنيف تعابير الوجه التي يمكن أن يصنفها البعض على أنه وجه حزين والبعض الآخر يراه وجه يشعر بالملل، لذا فنسبية التصنيف أو الوسم تفتح الباب أمام التحيز أو الخطأ، ويمكن أن تكون مجموعة البيانات نفسها منحازة اعتمادًا على المصدر أو التركيب السكاني أو وجهة نظر جامعها ويمكن أن تكون غير ممثلة للمجتمع، وتدريب نماذج التعلم الآلي على بيانات منحازة يمكن أن يؤدي إلى توقعات خاطئة مثل تشخيص خاطئ للمرض بسبب تحيز البيانات الطبية المستخدمة للتدريب. لتقليل التحيز في عملية الوسم ينبغي أن يكون فريق الواسمين وفريق تأكيد الجودة من خلفيات متنوعة، فالوسم المزدوج والمتعدد يمكن أن يقلل من تأثير التحيز الناتج عن الأفراد، وعلى البيانات المستخدمة في التدريب أن تعكس العالم الحقيقي بتمثيل متوازن للتركيبة السكانية والجغرافية ويمكن جمع البيانات من مصادر واسعة التنوع وإضافة بيانات مخصوصة لمواجهة أي تحيز موجود في المصادر الأولية للبيانات، بالإضافة لذلك يمكنها أن تقلل طرق تعزيز وزيادة البيانات data augmentation مثل قلب الصور وإعادة صياغة النصوص من التحيز وتزيد تنوع البيانات بشكل مصطنع، فقلب الصورة مثلًا يُمكّن النموذج من تعلم التعرف على الكائنات بالصورة بغض النظر عن زاوية العرض مما يقلل التحيز لزاوية دوران الصورة، وإعادة صياغة النصوص تعرض النموذج لطرق أخرى للتعبير عن المعلومات مما يقلل التحيز تجاه صياغة أو كلمات معينة. كما يمكن أن تقلل الرقابة الخارجية من التحيز الموجود في عملية الوسم، وذلك من خلال دعوة فريق خارجي من المختصين بالمجال وعلماء البيانات وخبراء تعلم الآلة لتقييم سير العمل والإشراف على مراجعة وسم البيانات، وتقديم النصائح والاقتراحات التي تساعد على تحسين عملية الوسم وتقليل التحيز. خصوصية وأمان البيانات تتضمن مشروعات وسم البيانات في الغالب بيانات سرية أو خاصة لذا ينبغي أن تحتوي جميع المنصات على ميزات تضمن السرية والأمان للبيانات مثل التشفير والمصادقة المتعددة للتحكم بوصول المستخدمين. فمن أجل حماية خصوصية البيانات ينبغي أن يتم حذف البيانات الشخصية أو جعلها مجهولة الهوية، بالإضافة لذلك ينبغي تدريب كل فرد في فريق الوسم على أفضل ممارسات تأمين البيانات مثل استخدام كلمات مرور قوية وتفادي مشاركة البيانات غير المقصود. كما ينبغي أن تخضع منصات وسم البيانات للقوانين واللوائح المنظمة والتي تشمل اللائحة الشاملة لحماية البيانات GDPR وقانون كاليفورنيا لخصوصية المستخدم CCPA بالإضافة إلى قانون نقل التأمين الصحي والمساءلة HIPAA، وإخضاع المنصات التجارية للمراجعة والإشراف الخارجي والالتزام بمبادئ الثقة الخمسة وهي: الأمان والإتاحة والشفافية والموثوقية والخصوصية. مستقبل نظام وسم البيانات تحدث عملية وسم البيانات في الكواليس بالنسبة للمستخدم النهائي ولكنها ذات دور محوري في تطوير نماذج التعلم الآلي وأنظمة الذكاء الاصطناعي لذلك ينبغي أن يكون نظام الوسم قابلًا للتوسع ليواكب أي تغير في المتطلبات. تُحدَّث منصات الوسم التجارية ومفتوحة المصدر بانتظام لدعم الاحتياجات النامية لوسم البيانات، لذلك ينبغي على أنظمة الوسم المطورة محليًا أن تبني بطريقة تجعل تحديثها أمرًا سلسًا، فالتصميم المعتمد على الوحدات والمكونات القابلة للتبديل بدون التأثير على باقي النظام تٌسهّل عملية التحديث والتطوير، على سبيل المثال يمكن لتوفر ميزة دمج أنظمة وسم البيانات مع مكتبات وأطر عمل مفتوحة المصدر أن تضيف نوعًا من التكييف والتأقلم، حيث يمكن تحديثها وتطويرها باستمرار مع تطور المجال. كما توفر الحلول المبنية على خدمات الحوسبة السحابية ميزة ملحوظة للمشاريع الضخمة في وسم البيانات والتي لا يمكن أن توفرها الأنظمة المُدارة ذاتيًا، فالمنصات السحابية قابلة للتوسع آليًا في تخزينها وفي قدراتها الحاسوبية مما يقلل من الحاجة للتطويرات المكلفة في البنية التحتية. وينبغي أيضًا توسيع قدرة فريق العمل المسؤول عن وسم البيانات مع نمو حجم مجموعات البيانات، وتدريب الواسمين الجدد بسرعة على وسم البيانات بدقة وبفعالية. والتمتع بالمرونة في سد الاحتياجات في قوة العمل باستخدام خدمات الوسم المُدارة أو التعاون مع واسمين مستقلين، وينبغي أن تكون عملية التدريب والضم للفريق قابلة للتوسع في المكان واللغة وأوقات العمل. الخلاصة تعرفنا في مقال اليوم على أسس وسم البيانات لنماذج تعلم الآلة ووجدنا أن المفتاح الرئيسي لتحسين أداء ودقة نموذج التعلم الآلي هو جودة البيانات الموسومة التي ندرب النموذج عليها، وتوفير الأنظمة المختلطة التي تجمع بين البشر والأدوات المؤتمتة في وسم البيانات لتتيح للذكاء الاصطناعي تحسين الطريقة التي يعمل بها والحصول على نتائج أكثر كفاءة وفعالية. ترجمة وبتصرف لمقال Architecting Effective Data Labeling Systems for Machine Learning Pipelines لكاتبه Reza Fazeli اقرأ أيضًا معالجة الصور باستخدام لغة بايثون Python استكشف مصطلحات الذكاء الاصطناعي التوليدي تعرف على أفضل أطر عمل الذكاء الاصطناعي لمشاريع تعلم الآلة أفضل ممارسات هندسة المُوجِّهات Prompt Engineering: نصائح وحيل وأدوات
  6. نوضح في هذا المقال مجموعة من النصائح المفيدة للمطورين للاستفادة المثلى من الذكاء الاصطناعي التوليدي الذي أعاد تشكيل الطريقة التي يكتب بها المطورون ومهندسو البرمجيات شيفراتهم البرمجية، واستطاعت هذه التقنية الحديثة التي غزت العالم من بضع سنوات فقط أن تنال شعبية كبيرة وتستخدم في العديد من المجالات. الذكاء الاصطناعي التوليدي ومستقبل البرمجيات كشف تقرير State of DevOps لعام 2023 أن 60% من المساهمين في الاستبيان استخدموا الذكاء الاصطناعي في تحليل البيانات وتوليد الأكواد البرمجية وتحسينها، بالإضافة لتعليم أنفسهم مهارات وتقنيات جديدة، ويكتشف المطورون طرقًا جديدة باستمرار لاستخدام هذه الأدوات التي تتطور بشكل متسارع. كما زعمت شركة Cognition Labs المتخصصة في تطوير تقنيات الذكاء الاصطناعي في ربيع عام 2024 أن منتجها يمكنه أن يستبدل المطورين ومهندسي البرمجيات في حل المشكلات البرمجية المطروحة على جت هاب Github issues بنسبة 13.86% وقد لا يبدو هذا الرقم مبهرًا للوهلة الأولى لكنه سيكون كذلك عندما تعرف أن أفضل أداء مسجل لهذه المهمة في عام 2023 لم يتجاوز نسبة حله 1.96%، ينبغي ملاحظة أن إمكانيات ديفين Devin AI تم تضخيمها لتبدو أكثر من الواقع فتحقيق النسبة المزعومة يتطلب إشراف بشري، كما ولم يستطيع تنفيذ المهام على مواقع العمل الحر، لذا حتى الآن لا يمكننا أن نعتبر ديفين Devin AI ذكاء اصطناعي يضاهي البشر في البرمجة، ولكن مع تطور الذكاء الاصطناعي يمكن أن نرى الأدوات المماثلة تتحسن. كما زعمت شركة Cognition Labs في ربيع 2024، منتجها ديفين Devin AI يمكنه أن يستبدل المطورين ومهندسي البرمجيات في حل المشكلات البرمجية المطروحة على جت هاب Github issues بنسبة 13.86% وقد لا يبدو هذا الرقم مبهرًا للوهلة الأولى لكنه سيكون كذلك عندما تعرف أن أفضل أداء مسجل لهذه المهمة في عام 2023 لم يتجاوز نسبة 1.96%، وتجدر الإشارة هنا لأن إمكانيات ديفين Devin AI لم تكن في الواقع كما زعمت الشركة فتحقيق هذه النسبة كان يتطلب إشرافًا بشريَّا، كما ولم يستطيع ديفن تنفيذ المهام على مواقع العمل الحر، لذا لا يمكننا حتى اللحظة اعتبار ديفين Devin AI ذكاء اصطناعي يضاهي البشر في البرمجة، ولكن مع تطور الذكاء الاصطناعي السريع يمكن أن يتحقق ذلك. هذا يدفعنا للتساؤل كيف يتأقلم مهندسو البرمجيات مع تقنيات وبرامج الذكاء الاصطناعي التي يمكنها كتابة برمجيات أخرى؟ ما الذي ستؤول له مسؤوليات مهندسي البرمجيات مع مرور الوقت في عالم تستحوذ فيه هذه التقنية بشكل تدريجي على كتابة الأكواد؟ هل سنستغني عن العنصر البشرية أم ستكون هناك حاجة دائمة لمهندس برمجيات متخصص يوجه السفينة؟ نناقش في الفقرات التالية كل هذه التساؤلات ونوضح آراء خبراء في المجالات التقنية المتنوعة مثل تطوير الويب وتطوير الواجهات الخلفية backend وتعلم الآلة والطريقة التي يستخدمون بها الذكاء الاصطناعي التوليدي لصقل مهاراتهم وتعزيز إنتاجيتهم في أعمالهم اليومية. ونسلط الضوء على النقاط التي يبرع بها الذكاء الاصطناعي التوليدي ونقاط الضعف التي يعاني منها، وكيف يمكن للمطورين الآخرين تحقيق الاستفادة القصوى من الذكاء الاصطناعي التوليدي في تعزيز إنتاجيتهم خلال عملية تطوير البرمجيات، وما هو مستقبل صناعة البرمجيات في ظل صعود تقنيات الذكاء الاصطناعي التوليدي. كيف يستخدم المطورون الذكاء الاصطناعي التوليدي من أشهر برامج الذكاء الاصطناعي التي يعتمد عليها المطورون في تطوير البرمجيات نذكر شات جي بي تي ChatGPT و جت هاب كوبايلوت Github Copilot، حيث يوفر شات جي بي تي ChatGPT للمستخدمين واجهة نصية تفاعلية يمكن للمستخدم من خلالها توجيه النماذج اللغوية الضخمة Large Language Model باستخدام الموجهات المناسبة فهذه النماذج لديها معرفة شاملة عن مواضيع متنوعة من بينها الأكواد البرمجية بمختلف لغات البرمجة وأطر عملها ومكتباتها، وتنبع هذه المعرفة من التدريب الذي خضعت له هذه النماذج فقد جرى تدريبها على كم هائل من البيانات مفتوحة المصدر المتوفرة على الإنترنت، ويدمج كوبايلوت Copilot مباشرة في بيئة التطوير المتكاملة IDE ليوفر للمطور قدرات متقدمة في إكمال الأكواد البرمجية واقتراح الأسطر القادمة لكتابتها، فقد تدرّب على كل الأكواد مفتوحة المصدر المتوفرة على Github، وجمع هاتين الأداتين معًا من شأنه مساعدة المطور في حل أي مشكلة تقنية يمكن أن تواجهه. الذكاء الاصطناعي في دور الخبير والمتدرب يعتمد المطورون بشكل متزايد على أدوات الذكاء الاصطناعي التوليدي لتحسين سير العمل وتبسيط العمليات البرمجية، حيث تُظهر هذه الأدوات مرونة وفعالية في تأدية دورين أساسيين الأول دور الخبير الذي يقدم الإرشاد والدعم الفني، والثاني دور المتدرب الذي ينجز المهام التكرارية والبسيطة. وفيما يلي دراسة حالة لمطورين خبراء بتخصصات مختلفة يوضح كل منهم كيف اعتمد على الذكاء الاصطناعي التوليدي لمساعدته في تأدية مهامه. الحالة الأولى مطور ويب كامل عند سؤال مطور ويب كامل full-stack web developer ومهندس ذكاء اصطناعي بخبرة تتجاوز 20 عامًا عن استخدام الذكاء الاصطناعي صرّح بما يلي: "أنا استخدم كوبايلوت copilot يوميًا، فهو يتنبأ بسطر الكود الذي أنوي كتابته أغلب المرات بدقة كبيرة. ويمكن للذكاء الاصطناعي أن يؤدي وظفتين، الأولى زميل خبير يساعد في العصف الذهني بمستوى يكافئ خبراتك وتفكيرك، والثانية كمطور مبتدئ يتولى المهام البسيطة والمتكررة في كتابة الكود". وقد وضح أنه استفاد من الواجهة البرمجية OpenAI API لما هو أبعد من مجرد التنبؤ بسطر الكود، حيث طوّر إضافة مفتوحة المصدر لتطبيق أوبسيدين Obsidian وهو تطبيق مشابه لنوشن Notion مع ميزات مختلفة، إذ تستعمل هذه الإضافة الواجهة البرمجية التي تشغل كلًا من شات جي بي تي ChatGPT و كوبايلوت Copilot، وتسمح للمستخدمين بإنشاء شخصيات مخصصة بالذكاء الاصطناعي والتفاعل معها. ويرى المطور أن مهام الذكاء الاصطناعي التوليدي الأكثر أهمية هي تلك التي تطلب وقتًا أطول لإكمالها يدويًا، ويمكن بسهولة التأكد من صحتها ودقتها في وقت قصير مثل تحويل الملف من تنسيق إلى آخر، كما يبرع جي بي تي GPT في توليد نصوص تلخص وظائف الأكواد البرمجية، مع ذلك مازلنا بحاجة لمطور خبير يمكنه فهم التفاصيل التقنية لهذا التلخيص. الحالة الثانية مطور تطبيقات iOS عند سؤال مطور تطبيقات جوال خبير عن استخدام الذكاء الاصطناعي في عمله أفاد بأنه لاحظ تحسنًا ملحوظًّا في سير عمله اليومي منذ أن دمج الذكاء الاصطناعي التوليدي به، فهو يستخدم شات جي بي تي ChatGPT وكوديوم Codeium وهو تطبيق ينافس Copilot لحل المشكلات البرمجية وصرح بما يلي: "يساعدني الذكاء الاصطناعي التوليدي في حل 80% من المشكلات البرمجية بسرعة وفي تفادي هذه المعرقلات في غضون ثواني، دون الحاجة لوقت طويل من الذهاب للبحث والعودة للتجربة من أجل إيجاد حل المشكلات المعقدة". فهو يرى أن هذه أدوات الذكاء الاصطناعي تلعب دور الخبير الموضوعي والمتدرب الذي لا يكل ولا يمل من تنفيذ المهام البسيطة والمتكررة، وتساعده في تفادي المهام المرهقة واليدوية عند كتابة الكود مثل الأنماط المتكررة في الكود أو إجراء تحسين هيكلية الكود البرمجي وإعادة تصميمه Refactoring أو هيكلة طلبات الواجهات البرمجية API بشكل صحيح، فقبل ظهور هذه الأدوات، كانت المشكلات غير المألوفة تشكل عائقًا كبيرًا أمام التقدم في المهام. ويظهر هذا التحدي بشكل خاص عند العمل على مشاريع تتطلب التعامل مع واجهات برمجية APIs أو أطر عمل غير مألوفة تحتاج لبذل جهد ذهني إضافي لفهم كيفية حل مشكلاتها. الحالة الثالثة مهندس تعلم آلة أشار مهندس تعلم آلة خبير لأهمية التأكد من صحة الأكواد المهمّة وخلوّها من الأخطاء قبل تشغيلها فهذه خطوة أساسية وضرورية جدًّا، ولن يكون من الحكمة مطلقًا نسخ الكود الذي يولده الذكاء الاصطناعي، ولصقه مباشرةً وافتراض أنه يعمل بشكل صحيح، فحتى لو تغاضينا مشكلة الهلوسة التي قد يعاني منها الذكاء الاصطناعي سيكون هناك في الغالب أسطر من الكود تحتاج للتعديل من طرف المطور البشري، فالذكاء الاصطناعي لا يمتلك السياق الكامل للمشروع ولا يدري ما هي أهدافه وتفاصيله. وأسدى نصيحة للمطورين الراغبين في تحقيق الاستفادة القصوى من الذكاء الاصطناعي التوليدي في كتابة الأكواد، بعدم إعطائه الكثير من المسؤوليات المهمة مرة واحدة، فهذه الأدوات تعمل جيدًا عندما نعطيها مهامًا محددة ومعرّفة بوضوح وتتبع أنماط الحل المتوقعة والشائعة، ففي حال أعطيناه مهام أكثر تعقيدًا أو مهام عامة غير محددة فهذا سيتسبب بجعله يعاني من الهلوسة ويعطي نتائج غير صحيحة. الذكاء الاصطناعي كمعلم شخصي وباحث يمكن استخدام الذكاء الاصطناعي التوليدي في تعلم أدوات ولغات برمجية جديدة، على سبيل المثال أشار مهندس تعلم الآلة أنه تمكن من تعلم أساسيات تيرافورم Terraform في غضون ساعة باستخدام GPT-4، وذلك من خلال كتابة موجهات لكتابة الأكواد البرمجية ثم شرحها، ثم طلب منه بعض التغيرات على الكود وتوفير العديد من المزايا والخواص والتحقق فيما إذا كانت قابلة للتطبيق، ويعقّب أنه وجد هذه الطريقة في التعلم أسرع وأكثر فعالية من محاولة اكتساب نفس القدر من المعلومات من خلال البحث في المتصفح أو قراءة الدروس التعليمية. وللتأكيد، تنجح هذه الطريقة مع المطورين الذين يمتلكون خبرة تقنية مسبقة ومعرفة بكيفية سير الأمور فقط، فهؤلاء يمكنهم اكتشاف الحالات التي يخطئ فيها النموذج. لكن ستبدأ هذه الأدوات في الفشل عندما نظن أنها ستكون دقيقة 100% لذا لا يمكننا أن نعتمد عليها بالمطلق وبثقة عمياء، وعندما نواجه مهام حساسة لا تتحمل أي نسبة خطأ فيجب علينا التحقق دومًا من صحة الكود بدمج طرق بحث المتصفح التقليدية ومخرجات الذكاء الاصطناعي للتأكد من صحة المعلومات من مصادر موثوقة. ويشدد المطورون الخبراء على ضرورة استخدام النسخ الأحدث من النماذج، فالنسخ الأحدث لها قدرة أفضل على فهم المنطق المعقد مقارنة بالنسخ القديمة فوفقًا لأوبن أيه آي OpenAI يوفر GPT-4 على سبيل المثال دقة أكبر متجاوزًا سلفه بمقدار 40%، ولذا يجب على من يرغب في استخدام أحد نماذج الذكاء الاصطناعي كمعلم شخصي أن يستخدم النسخ الأحدث فهو قادر على دعم الحقائق التي يولدها بالمصادر التي يمكنك تصفحها والتأكد منها مما يقلل من احتمال النتائج الخاطئة. يفيد استخدام الذكاء الاصطناعي التوليدي أيضًا لدراسة الواجهات البرمجية APIs الجديدة وفي العصف الذهني لإيجاد حلول للمشكلات التي تواجه المطورين، فعند استغلال قدرات النماذج اللغوية الضخمة بأقصى حد يمكن تقليل وقت البحث ليقارب الصفر بفضل نافذة السياق الضخمة لتلك النماذج. نافذة السياق Context Window هي حجم المعلومات التي يمكن للنموذج استيعابها والعمل عليها في لحظة معينة، فبينما يستطيع البشر التفكير في بضعة أمور مرتبطة بالسياق في نفس الوقت كحد أقصى، يمكن للنماذج اللغوية الضخمة معالجة عدد متزايد من الملفات المصدرية والوثائق في نفس الوقت، يمكن توضيح الفرق من خلال مثال قراءة كتاب فنحن البشر يمكننا أن نتصفح صفحتين في ذات الوقت بحد أقصى ويمكننا أن نعتبر أن هذا هو حجم نافذة السياق البشرية، ولكن بالنسبة للنماذج اللغوية الضخمة فهي تمتلك القدرة على رؤية كل صفحات الكتاب بشكل متزامن، لقد غير هذا بشكلٍ جزي طريقتنا في تحليل البيانات وإجراء البحوث. "بدأ ChatGPT بنافذة سياق تتسع 3000 كلمة، وقد وصل حاليًا باستخدام نموذج GPT-4 إلى دعم نافذة سياق تصل إلى 100 ألف كلمة، بينما يمتلك Gemini سعة استيعاب ما يصل إلى مليون كلمة، وهي سعة تجعل البحث عن كلمة أو جملة تطبيقًا فعليًا لمثال البحث عن إبرة في كومة قش، ويستطيع جيميناي التعامل مع هذه النافذة الضخمة من السياق بدقة عالية. كان بالإمكان سابقًا إعطاء النسخ الأولية من هذه الأدوات أجزاء ومقاطع من الكود كسياق من المشاريع التي تعمل عليها، وأصبح من الممكن لاحقًا إعطاؤها ملف اقرأني README مع الكود المصدري للمشروع بالكامل فأصبح إرفاق المشروع كاملًا كنافذة سياق قبل طرح الأسئلة أمرًا في غاية البساطة." نصائح لتحسين استخدام أدوات الذكاء الاصطناعي التوليدي يمكن للذكاء الاصطناعي التوليدي تعزيز إنتاجية المطورين في كتابة الأكواد والتعلم والبحث شريطة التعامل معه بشكل صحيح، فبدون سياق كافي، يصبح ChatGPT أقرب للهلوسة ولتوليد ردود غير مناسبة، وقد أظهرت دراسة تجريبية لخصائص إجابات ChatGPT على أسئلة Stack Overflow أن ردود GPT 3.5 في الأسئلة البرمجية تحتوي على معلومات خاطئة بنسبة 53%، ويمكن للسياق الخاطئ أن يكون أسوأ من عدم وجود سياق على الإطلاق، فإن قدمت حلًا ضعيفًا لمشكلة ما في الكود على أنها حل جيد سيفترض ChatGPT أن بإمكانه توليد الردود القادمة على بناء على هذا الأساس الضعيف. ولتحقيق الاستفادة القصوى من أدوات الذكاء الاصطناعي التوليدي، ينبغي أن نحدد له المهام بوضوح، ونقدم المعلومات التقنية ذات الصلة، وحدد الدور المطلوب منه والنتائج المتوقعة، كما يفيد توفير السياق للنموذج في تحسين في أداءه بشكل ملحوظ. لكن احذر من إعطاء معلومات خاصة أو حساسة للنماذج العامة، فمن الممكن أن تستخدم هذه البيانات للتدريب عليها وغالبًا ستفعل ذلك، وقد وجد الباحثون أن من الممكن استخراج مفاتيح واجهات برمجية ومعلومات خاصة باستخدام كوبايلوت Copilot و بعض النماذج الأخرى نتيجة لخطأ المطورين بتركهم تلك المعلومات والمفاتيح السرية غير مشفرة في تطبيقاتهم، ووفقًا لتقرير آي بي ام IBM عن تكلفة تسريبات البيانات فإن السبب الأكبر عالميًا لحدوث تسريبات للبيانات هي بيانات الاعتماد السرية التي تستخدم لتوثيق هوية المستخدم credentials والتي يتم تسريبها. استراتيجيات هندسة الموجهات لتوليد حلول أفضل تؤثر طرق استخدام الموجهات prompts مع الذكاء الاصطناعي التوليدي على جودة الردود المستلمة. لقد أصبحت هذه الطرق محورية للغاية لدرجة أنها أصبحت مجالًا فرعيًا للدراسة يُسمى هندسة الموجهات Prompt engineering، وهو يركز على كتابة وتحسين الموجهات بهدف توليد مخرجات عالية الجودة. تعتمد هندسة الموجهات على فكرة أن الذكاء الاصطناعي يستفيد بشكل أكبر من السياق وينتج إجابات أفضل عندما يعطى وصفًا دقيقًا ومحددًا للرد المطلوب. على سبيل المثال، بدلاً من توجيهه بطلب عام مثل "اكتب قائمة"، يمكننا كتابة مُوّجه أدق مثل: "اكتب قائمة مرقمة ورتب عناصرها حسب الأهمية". فهذه التوجيهات المحسّنة تساعد الذكاء الاصطناعي في فهم المطلوب بشكل أفضل وتوليد استجابات مفيدة. تطبق هندسة الموجهات العديد من الممارسات والحيل لتستخرج من النموذج أفضل الردود الممكنة، ومن هذه الطرق: تجربة تقنيات التعلم بصفر محاولة zero-shot وبمحاولة واحدة one-shot وببضعة محاولات few-show: فهذه لتحدد كيفية التعامل مع المهام دون تدريب مخصص أو مع تدريب محدود، فيمكنك أن لا توفر للنموذج أية أمثلة أو توفر له مثال واحد أو بضعة أمثلة للحصول على المطلوب، الفكرة هي توفير أقل سياق ممكن للنموذج مع التركيز على المعرفة المسبقة لدى النموذج وقدراته المنطقية دون الحاجة إلى تدريب مكثف توجيه النموذج من خلال تسلسل الأفكار Chain-of-thought prompting: فهذا الأسلوب يساعد الذكاء الاصطناعي في تقديم إجابات دقيقة من خلال شرح خطوات تفكيره بشكل منطقي قبل الوصول إلى الإجابة النهائية ويمكننا من فهم الكيفية التي توصل من خلالها لهذه الإجابات التوجيه التكرار وهو يعني ضرورة توجيه الذكاء الاصطناعي للمخرجات المطلوبة وتحسين نتائجه من خلال تعديل الموجهات بشكل متتابع وتكراري. التوجيه السلبي أي إخبار الذكاء الاصطناعي بما لا ينبغي عليه فعله، فمثلًا يمكننا توجيه لعدم توليد محتوى معين ومن المهم أيضًا إلى جانب ما سبق توجيه أنظمة الدردشة الآلية الذكية لجعل ردودها مختصرة فغالبية الردود التي يولدها GPT حشو لا فائدة منه، ويمكننا اختزالها عن طريق موجه prompt لتوليد ردود مختصرة، وينصح أيضاً بطلب تلخيص الموجهات والتعليمات التي طلبناها منها لتضمن أنه يدرك جيدًا ما تريده. وعند استخدام النماذج اللغوية الضخمة للمساعدة في تحسين الموجهات بنفسها من المفيد اختيار عينة لم يقم فيها النموذج بتنفيذ المطلوب كما نرغب والاستفسار منه عن سبب توليد هذا الرد، حيث يحسن هذا من صياغة الموجّهات في المرات التالية، ويمكنك في الواقع أن تطلب من النموذج اللغوي الضخم اقتراح التعديلات التي يمكن تنفيذها على الموجه للحصول على الردود التي تتوقعها. كما أن المهارات البشرية في التواصل لازالت مفيدة حتى عند التعامل مع الذكاء الاصطناعي، فالذكاء الاصطناعي يتعلم بقراءة النصوص البشرية، لذا الالتزام يمكن الالتزام ببعض القواعد المستخدمة في التواصل البشري فهي فعالة أيضًا من قبيل كن مهذبًا، أو كن واضحًا واحترافيًا. تواصل معه كأنك المدير. على سبيل المثال يمكن توجيه الذكاء الاصطناعي المتقمص لدور مراجع باستخدام نصوص الموجهات التالية الذي يوضح للذكاء الاصطناعي من هو وما المتوقع منه من خلال كتابة سلسلة الموجهات التالية: "أنت ذكاء اصطناعي يراجع الأكواد، ومصمم لتدقق وتراجع وتحسن ملفات الأكواد المصدرية، ودورك أن تتصرف كناقد يراجع الكود التي يوفرها المستخدم ويقترح التحسينات المطلوبة عليها، فأنت خبير في تحسين جودة ملف الكود بدون تغيير وظيفته. ينبغي أن تكون محترفًا في تعاملك مع المستخدم وأن تكون طريقة كلامك مهذبة ومهنية، وأن تكون مراجعتك بناءةً وتوفر شرحًا واضحًا للتحسينات المقترحة، وعليك منح أولوية للتعديلات التي تصلح الأخطاء، موضحًا أي هذه التعديلات اختياري وأيها غير اختياري. هدفك مساعدة المستخدم بتحسين جودة الكود الخاص بهم تحسينًا لا يمكنك بعده أن تجد أي شيء قابل للتطوير أبعد من ذلك، وعند وصولك لهذا المستوى وضح للمستخدم أنه لا يمكنك إيجاد شيء لتحسينه مشيرًا إلى جهوزية الكود للتشغيل أو الاستخدام. استلهم عملك من مبادئ أنماط التصميم البرمجية واعتمده كدليل أساسي في تصميم البرمجيات، عليك أن تجتهد في تطبيق ثلاثة مبادئ في الأكواد التي تراجعها وتحللها مشددًا على ضمان صحة الكود وتنسيقه الجيد وتصميمه المتقن. امنح أولوية لصحة الكود وللتحسينات، فضع دومًا التعديلات الأهم والأخطر أولًا قبل التعديلات الأقل أهمية. وقسم مراجعتك إلى ثلاثة أقسامٍ رئيسية وهي التنسيق والتصحيح والتحليل ويحتوي كل قسم على قائمة من التحسينات الممكنة تحت عنوان القسم. اتبع هذه التعليمات: ابدأ بمراجعة تنسيق الكود، مكتشفًا أي خطأ في المسافات أو محاذاة العناصر النصية للكود، فتحسن الكود من الناحية الجمالية وتجعله أسهل في القراءة تاليًا، ركز على صحة الكود وخلوه من الأخطاء النصية والوظيفية أخيرًا، أجري تحليل عالي المستوى للكود، باحثًا عن طرق لتحسين معالجة الأخطاء error handling والتعامل مع الحالات الخاصة بالإضافة لضمان جعل الكود موثقًا ويعمل بكفاءة وقابلاً للصيانة والتحديث يمكن القول أن هندسة الموجهات Prompt engineering فن أكثر من كونها علم، وهي تتطلب قدرًا معينًا من التجربة والمحاولة والخطأ للخروج بالمطلوب، إذ تفرض طبيعة تقنيات معالجة اللغات الطبيعية NLP عدم وجود حل واحد يناسب جميع المشكلات، تمامًا كما أن محادثتك مع أشخاص مختلفين تتطلب اختيارًا مختلفًا للكلمات، والموازنة بين الوضوح والتعقيد والإيجاز والإسهاب، فلكل هذا تأثير على فهم الآخرين لاحتياجاتك ولقصدك." مستقبل الذكاء الاصطناعي التوليدي في تطوير البرمجيات بعد تطور تقنيات الذكاء الاصطناعي التوليدي وأدواته ظهرت ادعاءات ومزاعم عديدة تفترض أن المهارات البرمجية ستصبح عديمة النفع، وأن الذكاء الاصطناعي سيلغي عمل المطورين ويكون قادرًا على بناء تطبيق كامل من الصفر، ولن تشكل معرفة المطورين وقدرتهم على كتابة الأكواد البرمجية أي فرق، وردًا على هذه المزاعم والافتراضات فإنه من الصعب حدوث هذا على الأقل في المدى القريب، فالذكاء الاصطناعي التوليدي لا يمكنه أن يكتب تطبيقًا مكتاملًا لنا، ولا زال يعاني من قصور في تصميم واجهات المستخدم، فلا يوجد حتى الآن أي أداة ذكاء اصطناعي حاليًا قادرة على تصميم واجهات تطبيق تتناسب مع الهوية البصرية الموجودة بالفعل. وهذا القصور ليس نتيجة لنقص المجهود في هذا المجال، فقد ظهرت منصة v0 التي تقدم خدماتها عبر السحابة كواحدة من الأدوات المتخصصة في عالم واجهات المستخدمين المولدة بالذكاء الاصطناعي، ولكنها مازالت مقتصرة على استخدام أكواد رياكت ومكوناتها الموجودة في شاد سي إن shadcn ui components، ويمكن أن تكون نتائجها النهائية مفيدة للنماذج الأولية من المشروع ولكنها تحتاج لمطور واجهة ماهر ليستطيع أن يبني واجهات تناسب الهوية البصرية، وعلى ما يبدو لازالت هذه التقنيات بحاجة لمزيد من التطوير قبل أن تنافس الخبرة البشرية. وقد أصبح تطوير البرمجيات كمنتج منتشرًا بكثرة اليوم، فالمطورون الآن مطالبون بفهم مشكلات العملاء واستخدام الأكواد لحلها بدلاً من مجرد كتابة الكود. وهذا التحول يعني أن الدور التقليدي للمطورين يتغير، ويجب عليهم التركيز على تحقيق أهداف الأعمال بدلاً من مجرد تنفيذ المهام البرمجية. وبالرغم أن هذه التحديات قد تكون صعبة للبعض، فإن تبني تقنيات مثل الذكاء الاصطناعي التوليدي يمكن أن يمنح المطورين ميزة تنافسية. الخلاصة يمكن أن نخلص من حالات الاستخدام والنقاشات الواردة في هذا المقال إلى أن الذكاء الاصطناعي سيظل بحاجة مستمرة للخبراء في توجيه واختبار مخرجاته، ولن يكون بديلاً كاملاً للمطورين المحترفين. لكن في الوقت ذاته، سيصبح أداة قوية لتعزيز إنتاجية المطورين، مما يستدعي الاستعداد لمخاطر استخدامه في تطوير البرمجيات بشكل آمن وفعال. فقد تُرك الحبل على الغارب لإنتاج الكثير من النماذج اللغوية الضخمة، ويبدو أن استخدام الذكاء الاصطناعي سيكون جزءًا أساسيًا في تطوير البرمجيات ولا يمكن تجاهله، لذا، يجب على المؤسسات المعنية تجهيز فرقها بأدوات جديدة لزيادة الإنتاجية ولتوضيح المخاطر الأمنية المرتبطة باستخدام الذكاء الاصطناعي في سير العمل. ترجمة -وبتصرف- لمقال Increase Developer Productivity With Generative AI: Tips From Leading Software Engineers لكاتبه Sam Sycamore اقرأ أيضًا مقدمة إلى الذكاء الاصطناعي التوليدي Generative AI كل ما تود معرفته عن دراسة الذكاء الاصطناعي استكشف مصطلحات الذكاء الاصطناعي التوليدي مستقبل الذكاء الاصطناعي
  7. استحوذ الذكاء الاصطناعي في السنوات الأخيرة على الساحة التقنية وأثر على كل الصناعات والقطاعات، بداية من المجالات الإبداعية وصولًا إلى القطاعات المالية، مدفوعًا بالتطور متسارع الخطى للنماذج اللغوية الضخمة Large Language models أو اختصارًا LLMs مثل GPT من شركة OpenAI وجيميناي Gemini من شركة جوجل، فصارت هذه النماذج جزءًا أساسيًا من الأدوات التي يستخدمها مهندسو البرمجيات. لا يستطيع الجيل الحالي من النماذج اللغوية الضخمة استبدال مهندسي البرمجيات بالطبع، ولكنه يمكنه مساعدتهم في مهام عديدة مثل تحليل الأكواد البرمجية، واكتشاف الأخطاء وتتبعها، وإجراء المهام البسيطة الروتينية. نحاول في هذه المقالة تبسيط تعقيدات استخدام النماذج اللغوية الضخمة واستخدامها في تطبيق عملي لتوليد كود بايثون قادر على التفاعل مع تطبيق خارجي. ما هي النماذج اللغوية الضخمة Large Language Models النماذج اللغوية الضخمة هي نماذج تعلم آلي دُربت على كميات ضخمة من البيانات النصية بهدف فهم وتوليد اللغة البشرية، يبنى النموذج اللغوي الضخم عادة باستخدام المحولات transformers والمحولات هي نوع من الشبكات العصبية الاصطناعية تُستخدم بشكل أساسي في معالجة اللغات الطبيعية مثل الترجمة أو الإجابة على الأسئلة وتستخدم أيضًا في تطبيقات مثل معالجة الصور. المميز في المحولات أنها تعتمد على آلية الانتباه الذاتي، مما يجعلها قادرة على التركيز على أجزاء معينة من المدخلات، وهي تقوم على آلية تسمى الانتباه الذاتي self-attention mechanism والتي تعني أن سلسلة المدخلات تعالج بشكل متزامن بدلًا من معالجتها كلمة كلمة، وهذا يتيح للنموذج تحليل جمل كاملة، ويحسن قدرتها على فهم السياق والمعاني الضمنية للكلمات، وفعالة في توليد نصوص قريبة جدًا من الأسلوب البشري. وكلما زاد عمق الشبكة العصبية الاصطناعية كلما أمكنها تعلم معاني أدق في اللغة، ويتطلب النموذج اللغوي الضخم الحديث كمية هائلة من بيانات التدريب وقد يحتوي مليارات المعاملات parameters وهي عناصر تتغير بالتدريب على البيانات ليتأقلم النموذج على المهمة المراد تعلمها، فزيادة عمق الشبكة يؤدي إلى تحسن في المهام مثل الربط بالأسباب reasoning، على سبيل المثال من أجل تدريب GPT-3 جُمعَت بيانات من المحتوى المنشور في الكتب والإنترنت بلغ حجمها 45 تيرابايت من النصوص المضغوطة، ويحتوي النموذج ما يقارب 175 مليار معامل كي يتمكن من تحقيق هذا المستوى من المعرفة. وقد ظهرت عدة نماذج لغوية ضخمة حققت تقدمًا ملحوظًا بالإضافة إلى GPT-3 و GPT-4، نذكر منها على سبيل المثال نموذج PaLM 2 من جوجل ونموذج LLaMa 2 من ميتا. ونظرًا لاحتواء بيانات تدريب هذه النماذج على أكواد برمجية بلغات مختلفة فقد أصبحت هذه النماذج اللغوية الضخمة قادرة على توليد الأكواد البرمجية لا المحتوى النصي فحسب، إذ تستطيع النماذج اللغوية الحديثة تحويل الأوامر أو الموجهات prompts المكتوبة باللغة الطبيعية إلى كود بمختلف اللغات والتقنيات، وعلى الرغم من ذلك لن تحقق الاستفادة المرجوة من هذه الميزات القوية إذا لم تمتلك الخبرة التقنية الكافية. فوائد ومحدويات الأكواد المولدة بنماذج اللغات الضخمة يتطلب حل المشكلات والمهام المعقدة في الغالب تدخل المطورين البشريين، لكن يمكن للنماذج اللغوية الضخمة أن تعمل كمساعدات ذكية للمطورين وتكتب الأكواد لمهام أقل تعقيدًا، وتسهل التعامل مع المهام التكرارية مما يعزز الإنتاجية ويقلل وقت التطوير في مراحل هندسة البرمجيات خصوصًا في المراحل الأولى من تطوير النماذج الأولية للبرمجيات، كما يمكن أن توفر النماذج اللغوية الضخمة مساعدة كبيرة في تصحيح الكود البرمجي وتشرحه وتساعدنا على إيجاد الأخطاء التي قد يصعب علينا ملاحظتها كبشر. يجدر التوضيح أن أي أكواد مولدة باستخدام النماذج اللغوية الضخمة تعتبر نقطة للبداية وليس منتجًا نهائيًا وينبغي دائمًا مراجعة الأكواد المولدة واختبارها. والوعي بمحدوديات نماذج اللغات الضخمة، فهي تفتقد لقدرات حل المشكلات والتفكير المنطقي والإبداعي الذي يميزنا كبشر، إضافة إلى احتمال عدم تعرض النماذج للتدريب الكافي الذي يؤهلها للتعامل مع مهام متخصصة مناسبة لنوع معين من المستخدمين أو أطر العمل غير مفتوحة المصدر، وبالتالي يمكن لهذه النماذج اللغوية الضخمة أن تساعد بشكل كبير ولكن سيبقى دور المطور البشري أساسيًا في عملية التطوير بالطبع. توليد كود برمجي باستخدام نموذج لغوي ضخم: استخدام الواجهة البرمجية للطقس من أهم مميزات التطبيقات الحديثة قدرتها على التعامل مع مصادر خارجية، إذ يمكن للمطورين إرسال طلبات لهذه المصادر الخارجية من خلال واجهة برمجة التطبيقات API وهي مجموعة من التعليمات أو البروتوكولات التي توفر طريقة موحدة لتواصل التطبيقات فيما بينها. وتتطلب كتابة الكود البرمجي الذي يستخدم واجهة برمجة التطبيقات قراءة متعمقة لتوثيقات هذه الواجهة، حيث تشرح التوثيقات كافة المتطلبات والتسميات المصطلح عليها، والوظائف والعمليات التي تدعمها، وتنسيق البيانات المرسلة والمستلمة والمتطلبات الأمنية. ويمكن للنموذج اللغوي الضخم تسريع هذه العملية في حال توفرت لديه المعلومات المطلوبة. حيث يمكن للنموذج اللغوي المساعدة بتوليد الكود البرمجي اللازم لإرسال طلب لواجهة برمجة التطبيقات. وفيما يلي نوضح كيف يمكننا توجيه ChatGPT ليولد كود بلغة البرمجة بايثون لطلب بيانات الطقس من خلال الواجهة البرمجية لتطبيق للطقس OpenWeather API، وسنوضح كيف يمكننا تفادي أخطاء استخدام دوال قديمة deprecated لم تعد مدعومة، وكيف يمكننا إرسال الطلب من خلال الواجهة البرمجية OpenAI API ونختبر تأثير المعاملات على سلوك وأداء النموذج. ملاحظة: انتبه إلى تكلفة استخدام الواجهة البرمجية للطقس OpenWeather API فهي مجانية لأول 1000 طلب فقط في اليوم الواحد. تحويل موجهات تشات جي بي تي لطلبات API يتطلب المثال الذي سنطبقه عرض درجة الحرارة الحالية ووصف حالة الطقس. دعنا نوضح كيف يمكن أن يساعدنا شات جي بي تي ChatGPT في كتابة الكود، سنكتب موجهًا prompt على النحو التالي: سيولد شات جي بي تي ChatGPT هذا الكود ردًا على الموجه السابق: import requests # استبدل "YOUR_API_KEY" بمفتاح OpenWeather API الخاص بك. api_key = "YOUR_API_KEY" api_url = "http://api.openweathermap.org/data/2.5/weather" # اسم المدينة التي ترغب في الحصول على معلومات الطقس لها. city_name = "London" # المعلمات المطلوبة لإرسال الطلب إلى واجهة API. params = { 'q': city_name, # اسم المدينة 'appid': api_key, # مفتاح API 'units': 'imperial' # استخدم metric للدرجة المئوية أو imperial للفهرنهايت } try: # إرسال طلب GET إلى واجهة API. response = requests.get(api_url, params=params) # التحقق مما إذا كان الطلب ناجحًا if response.status_code == 200: # قراءة وتحليل البيانات المستلمة بصيغة JSON. weather_data = response.json() print("بيانات الطقس لمدينة:", city_name) print("درجة الحرارة:", weather_data['main']['temp'], "°F") print("الوصف:", weather_data['weather'][0]["description"]) else: # طباعة رسالة خطأ إذا لم يكن الطلب ناجحًا. print("خطأ:", response.status_code, response.text) except Exception as e: # التعامل مع أي أخطاء أثناء تنفيذ الكود. print("حدث خطأ:", e) يمكن أن تلاحظ أنه على الرغم من عدم تحديد الموقع المطلوب للواجهة البرمجية الخاصة بالطقي، فإن الكود المولد يتضمن متغير يسمى city_name وهو مضبوط على قيمة افتراضية هي لندن ويمكن تعديها حسب الطلب، ولا تنسى بالطبع استبدال YOUR_API_KEY بالمفتاح الخاص بك لواجهة برمجة التطبيق للطقس OpenWeather API. كي نتمكن من اختبار الكود المولد، نحتاج لأن يكون مفسر interpreter لغة بايثون مثبت على جهازنا، بعد تثبيته يمكن تشغيل الكود محرر أكواد مثل فيجوال ستوديو كود Visual Studio Code أو باستخدام سطر الأوامر Terminal. إليك بيانات الطقس لمدينة لندن المستلمة من الواجهة البرمجية: بيانات الطقس لمدينة: London °F درجة الحرارة: 50.4 الوصف: overcast clouds سنحتاج غالبًا لتخزين البيانات التي حصلنا عليها من الواجهة البرمجية، وبالتالي سنحتاج لتحويل البيانات إلى تنسيق محدد مثل XML أو CSV أو استخدام أوامر لغة الاستعلام البنيوية SQL لحفظ البيانات في جداول قاعدة البيانات، لذا سنطلب من النموذج اللغوي مساعدتنا في هذه المهمة عن طريق توليد الكود المناسب لكل تنسيق، فمثلا يمكننا إضافة الجملة التالية للموجه السابق: سيعيد ChatGPT نفس الكود السابق، ولكن مع إضافة بعض جمل الاستيراد وتحديث تنسيق المخرجات: # استيراد المكتبات اللازمة import requests import json from datetime import datetime # رابط الواجهة البرمجية api_url = "http://api.openweathermap.org/data/2.5/weather" # إعداد المعاملات المطلوبة للطلب params = { 'q': 'الرياض', # اسم المدينة 'appid': 'مفتاح_API_الخاص_بك', # استبدل بمفتاح API الخاص بك 'units': 'imperial' # تحديد وحدة القياس (الفهرنهايت) } try: # إرسال طلب GET إلى الواجهة البرمجية response = requests.get(api_url, params=params) # التحقق من نجاح الطلب if response.status_code == 200: # تحويل الاستجابة إلى صيغة JSON weather_data = response.json() # استخراج البيانات المهمة city = params['q'] # اسم المدينة temperature = weather_data['main']['temp'] # درجة الحرارة weather_description = weather_data['weather'][0]['description'] # وصف الطقس update_date = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') # وقت التحديث # إنشاء أمر SQL لإدخال البيانات في قاعدة البيانات sql_command = f"INSERT INTO current_weather (city, temperature, weather_description, update_date) VALUES ('{city}', {temperature}, '{weather_description}', '{update_date}')" # طباعة أمر SQL print("أمر SQL للإدخال في قاعدة البيانات:") print(sql_command) else: # طباعة رسالة خطأ في حال فشل الطلب print("حدث خطأ في الطلب:", response.status_code, response.text) except Exception as e: # طباعة رسالة خطأ في حال حدوث استثناء print("حدث خطأ أثناء تنفيذ البرنامج:", e) وسيؤدي تنفيذ الكود السابق لتوليد الأمر التالي بلغة SQL: INSERT INTO current_weather (city, temperature, weather_description, update_date) VALUES ('London', 53.37, 'broken clouds', '2024-02-06 04:43:35') ولكن سنرى تحذيرًا ينبهنا إلى عدم استخدام الدالة ()utcnow حيث أنها مهملة deprecated ولن تكون متوفرة في إصدارات قادمة وهذا قد يتسبب في تعطل الكود الخاص بنا في التحديثات المستقبلية: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). وكي نمنع ChatGPT من استخدام دوال مهملة deprecated، سنضيف التوجيه التالي: بعد إضافة هذا السطر، سيبدل ChatGPT الدالة ()utcnow بدالة أخرى كما يلي: # استخدم الكائن timezone-aware لتحديث التاريخ update_date = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S') يعيد لنا هذا الكود مجددًا أمرًا بلغة SQL ويمكن اختباره في أي محرر استعلامات Query editors لنظام إدارة قواعد البيانات DBMS. وفي حال كنت تولد هذا الكود ضمن تطبيق ويب تقليدي فمن المتوقع تشغيل أمر SQL مباشرة بعد توليده من خلال الواجهة البرمجية وتحديث بيانات قاعدة البيانات في الزمن الحقيقي. استخدام الواجهة البرمجية OpenAI API بدلًا من شات ChatGPT تملك العديد من نماذج اللغات الضخمة واجهة برمجة تطبيقات API تمكّن المطور من التفاعل مع النماذج اللغوية الضخمة برمجيًا ودمجها بسلاسة داخل تطبيقاته، سنستفيد من هذه الواجهات البرمجية لإنشاء مساعد ذكي بشكل افتراضي، يوفر لنا هذا المساعد ميزات عديدة مثل إكمال الكود أو توليده من الصفر أو إعادة صياغته وتحسينه. ويمكن تحسين واجهات المستخدم وتخصيصها من خلال قوالب جاهزة من الموجهات Prompts templates، كما يتيح لنا دمج النماذج اللغوية الضخمة برمجيًا جدولة المهام أو تفعيلها عند تحقق شروط معينة ويسهل أتمتة المساعد الذكي الذي نعمل عليه. سننفذ في هذا المثال نفس المهمة السابقة وهي طلب معلومات الطقس باستخدام بايثون للتفاعل برمجيًا مع الواجهة البرمجية OpenAI API وتوليد الكود من خلال واجهة المستخدم بدلًا من كتابة موجّه في ChatGPT مباشرة. بداية علينا تثبيت الواجهة البرمجية OpenAI API باستخدام الأمر التالي: pip install openai الآن لنتمكن من استخدام الواجهة البرمجية OpenAI API نحتاج لمفتاح الواجهة API key وهو غير مجاني ويتطلب دفع رسوم. بعدها، يمكننا استيراد المكتبة openai وإرسال نفس الموجه المستخدم من قبل مع إزالة الجزء الخاص بتوليد أوامر SQL، كما نحدد النموذج المستخدم GPT-3.5 من خلال الكود التالي: import openai openai.api_key = "YOUR_API_KEY" # استبدله بمفتاح الواجهة البرمجية الخاص بك response = openai.chat.completions.create( model='gpt-3.5-turbo', max_tokens=1024, temperature=0.3, top_p=0.9, messages = [ {'role': 'system', 'content': 'أنت مساعد ذكي قائم على الذكاء الاصطناعي.'}, {'role': 'user', 'content': "اكتب كود بلغة بايثون باستخدام مكتبة requests لإرسال طلب GET إلى واجهة OpenWeather API للحصول على بيانات الطقس، وذلك عبر نقطة الوصول التالية http://api.openweathermap.org/data/2.5/weather. يجب أن يتضمن الطلب مفتاح API الخاص بك ضمن الرابط باستخدام المعامل appid. يُتوقع أن تُعيد الواجهة البيانات بتنسيق JSON، ويجب على الكود استخراج درجة الحرارة من البيانات وإعادتها بوحدة الفهرنهايت ولا يستخدم أي دوال قديمة غير مستعملة"}, ] response_message = response.choices[0].message.content print(response_message ) سيولد النموذج اللغوي الضخم كود بايثون التالي، والذي يجلب درجات الحرارة لمدينة لندن: import requests # مفتاح الواجهة البرمجية ونقطة الوصول url = "http://api.openweathermap.org/data/2.5/weather" api_key = "YOUR_API_KEY" # معاملات الاستعلام params = { 'q': 'London,uk', # مثال على المدينة ورمز الدولة. 'appid': api_key } # إرسال طلب GET. response = requests.get(url, params=params) # التحقق مما إذا كان الطلب ناجحاً. if response.status_code == 200: # تحليل استجابة JSON. data = response.json() # طباعة درجة الحرارة بالدرجة المئوية. temperature = data['main']['temp'] - 273.15 print(f"درجة الحرارة في لندن هي {temperature:.2f}°C.") else: print(f"خطأ: {response.status_code}") لاحظ أننا أزلنا التعليمات الخاصة بتحديد درجات الحرارة بالفهرنهايت لذا لم يحدد النموذج اللغوي الضخم وحدة القياس عند طلب الواجهة البرمجية للطقس، ولكنه اختار حسابها رياضيًا بتحويل الوحدة من الكلفن إلى سلسيوس عند عرض النتائج. الاستفادة من معاملات النموذج اللغوي الضخم لتحقيق أقصى استفادة يمكننا ضبط بعض المعاملات عند استخدام الواجهة البرمجية لنماذج الذكاء الاصطناعي والنماذج اللغوية الضخمة من أجل تعديل الردود المولدة منها، فهناك معاملات يمكنها تحديد مستوى العشوائية والإبداع في الردود المولدة كالمعامل Temperature، ومعاملات يمكنها التحكم بتكرار النصوص المولدة مثل Repetition Penalty، بينما تؤثر معاملات أخرى على النص اللغوي المولد مما يساعد على التحكم في جودة الكود الناتج. في الكود السابق، يمكننا ضبط قيم معاملات GPT في السطر السابع على النحو التالي: max_tokens=1024, temperature=0.3, top_p=0.9, المعامل الوصف التأثير على الكود المولد Temperature يعني درجة الحرارة إذ يتحكم هذا المعامل في عشوائية الردود المولدة، أو درجة الإبداعية في الردود، فالقيمة العالية لهذا المعامل تزيد عشوائية الردود المولدة، بينما القيمة المنخفضة تولد ردودًا واقعية، القيم الممكنة لهذا المعامل بين 0 و 2 والقيمة الافتراضية 0.7 أو 1 بحسب النموذج المستخدم. ستولد القيمة المنخفضة لهذا المعامل كودًا آمنًا يتبع الأنماط والهياكل المكتسبة خلال عملية التدريب، بينما ستولد القيمة العالية ردودًا أكثر تميزًا وغير اعتيادية مما يرفع من احتمالية الأخطاء والتناقضات البرمجية. Max token يحدد هذا المعامل الحد الأقصى لعدد الوحدات النصية tokens المولدة في الاستجابة. إذا ضبطته بقيمة صغيرة، فقد يتسبب ذلك في أن تكون الاستجابة قصيرة جدًا، بينما إذا تم ضبطته بقيمة كبيرة جدًا، قد يؤدي ذلك لاستهلاك عدد كبير من الوحدات النصية المتاحة، مما يزيد من تكلفة الاستخدام يجب أن يضبط المعامل على قيمة عالية بما يكفي لتغطية جميع الأكواد التي تحتاج إلى توليدها. ويمكنك تقليله إذا كنت ترغب في توليد الكود فقط دون توفير شرح الكود المضاف من النموذج top_p يتحكم هذا المعامل في اختيار الكلمات التالية بتقليص نطاق الخيارات المتاحة. إذا منحناه القيمة 0.1 سيقتصر على أفضل 10% من الكلمات الأكثر احتمالاً، مما يزيد الدقة. وإذا منحناه القيمة 0.5 سيوسع الاختيار ليشمل أفضل 50%، مما يعزز التنوع. ويساعد في موازنة الدقة والإبداع في الردوع. عند ضبط المعامل بقيمة منخفضة، يصبح الكود المولد أكثر توقعًا وارتباطًا بالسياق، ويجري اختيار الاحتمالات الأكثر ترجيحًا بناءً على السياق الحالي. أما عند زيادة قيمته يزداد التنوع في المخرجات، مما قد يؤدي إلى توليد كود أقل ارتباطًا بالسياق وقد يتسبب في أخطاء أو توليد كود متناقض. frequency_penalty يعني عقوبة التكرار إذ يحدّ هذا المعامل من تكرار الكلمات والعبارات في ردود النموذج اللغوي الكبير. عند ضبطه على قيمة عالية، يقلل من تكرار الكلمات أو العبارات التي استخدمها النموذج سابقًا. أما عند ضبطه على قيمة منخفضة، فيسمح للنموذج بتكرار الكلمات والعبارات. حيث تتراوح قيم هذا المعامل من 0 إلى 2. تضمن القيمة العالية لهذا المعامل تقليل التكرار في الكود المولد، مما يؤدي لتوليد أكواد أكثر تنوعًا وإبداعًا. ومع ذلك، قد يؤدي ذلك إلى اختيار عناصر أقل كفاءة أو غير صحيحة. من ناحية أخرى، عند خفض قيمته، قد لا يستكشف طرقًا متنوعة للحل. presence_penalty يعني عقوبة التواجد ويرتبط هذا المعامل بالمعامل السابق فكلاهما يشجعان على التنوع والتفرد في الكلمات المستخدمة، حيث يعاقب المعامل السابق الوحدات النصية التي استخدمت عدة مرات في النص في حين يعاقب المعامل الحالي الوحدات النصية التي ظهرت من قبل بغض النظر عن مرات التكرار، يتلخص تأثير معامل عقوبة التكرار في أنه يقلل من تكرار الكلمات بينما يركز معامل عقوبة التواجد على استخدام كلمات جديدة بالكليّة، والقيمة الصغرى لهذا المعامل هي 0 أما القيمة العظمى فهي 2. له تأثير مشابه لعقوبة التكرار، فالقيمة العالية تشجع النموذج على استكشاف حلول بديلة، ولكن قد يصبح الكود المولد أقل كفاءة ومليء بالأخطاء، بينما تسمح القيمة المنخفضة بتكرار الكود مما يؤدي إلى كود أكثر كفاءة واتساقًا، خاصةً عند وجود أنماط متكررة. stop دور هذا المعامل هو تحديد نقطة التوقف في عملية توليد النصوص. عند ضبطه مع سلسلة معينة مثل "n/"، سيتوقف النموذج عن توليد النصوص بمجرد أن يصادف هذه السلسلة مما يساعد في التحكم بدقة في نهاية الرد المولد وتحديد متى يجب أن يتوقف النموذج عن إضافة المزيد من الكلمات. يمنع هذا المعامل النموذج من توليد أجزاء من الكود لا تتناسب مع السياق أو الوظيفة المطلوبة. يجب أن تكون سلسلة التوقف نقطة منطقية وواضحة لنهاية الكود، مثل نهاية دالة أو نهاية حلقة تكرارية، لضمان توقف النموذج عن توليد المزيد من الكود بشكل مناسب. لنختبر كيفية تأثير هذه المعاملات على توليد الكود، سنجرب تعديل معاملات عقوبة التكرار frequency_penalty وعقوبة التواجد presence_penalty . عند تهيئة عقوبة التكرار frequency_penalty بقيمة مرتفعة وهي 1.5،سينتج النموذج اللغوي الضخم كودًا إضافيًا ليلاقى التوقعات محاولًا تفادي تكرار المخرجات السابقة: # ... try: # إرسال طلب GET مع المعلمات والحصول على البيانات في تنسيق JSON. response = requests.get(url, params=params) if response.status_code == 200: weather_data = response.json() # طباعة بعض المعلومات المهمة من بيانات الطقس. print("المدينة:", weather_data['name']) print("درجة الحرارة:", weather_data['main']['temp'], "K") except requests.exceptions.RequestException as e: # التعامل مع أي خطأ حدث أثناء الطلب print("خطأ:", e) عند العمل مع الكود الذي يتعامل مع واجهة برمجية API من المهم أن نلاحظ أن النتائج قد تكون غير متوقعة. ففي الكود السابق، على الرغم من أن إضافة معالجة الأخطاء مفيدة، إلا أننا لم نطلب من النموذج توليد كود يتعامل مع جميع الأخطاء المحتملة بشكل دقيق. لهذا السبب، عند إرسال نفس الطلب مرة أخرى مع نفس المعاملات، قد نحصل على نتائج مختلفة تمامًا. ولضمان استقرار الكود ومعالجته للأخطاء بشكل صحيح، يجب إضافة موجه أولي initial prompt يوجّه النموذج لتوليد الكود مع معالجة الأخطاء بشكل مناسب. بهذا الشكل، يمكن ضمان أن الكود سيكون متسقًا ويعمل كما هو متوقع في جميع الحالات. يمكننا ضبط المعامل presence_penalty بقيمة عالية ولتكن 2.0 للحصول على تأثير مشابه، حيث يتفادى النموذج تكرار المخرجات السابقة ويرسل طلب جديد للواجهة البرمجية للطقس OpenWeather API من خلال دالة ممرًا لها مفتاح الواجهة البرمجية API key كمعامل كما يلي: import requests def get_weather(api_key): url = "http://api.openweathermap.org/data/2.5/weather" params = { 'q': 'London,uk', # مثال على المدينة ورمز الدولة. 'appid': api_key } response = requests.get(url, params=params) # إضافة سطر إرسال الطلب if response.status_code == 200: data = response.json() return data else: print("خطأ:", response.status_code) # استبدل "YOUR_API_KEY" بمفتاح الواجهة البرمجية الفعلي من OpenWeather. api_key = "YOUR_API_KEY" weather_data = get_weather(api_key) print(weather_data) إن إنشاء دالة برمجية مخصصة لطلب الواجهة البرمجية لتطبيق الطقس إضافة مفيدة للكود، ولكن تمرير مفتاح الواجهة من خلال الدالة أمر غريب، فمن المعتاد في أغلب حالات الاستخدام تمرير المدينة city كمعامل للدالة، وهنا يمكننا معالجة هذه المشكلة بتعديل الموجه الأولي. يتطلب ضبط قيم معاملات نماذج اللغة الضخمة الكثير من التجربة، فبعض النتائج تكون غير متوقعة وبعض التعديلات قد تبدو عديمة التأثير، فتعديل المعاملات لا يمتلك تأثيرًا موحدًا يضمن اتباع أفضل الممارسات في توليد الكود. دمج النماذج اللغوية الضخمة في ملفات الكود المصدري بمجرد أن يصبح الكود المولد باستخدام النموذج اللغوي الضخم محسنًا وجاهزًا للعمل، ستكون الخطوة التالية هي دمج الكود الناتج مع الأكواد البرمجية السابقة. لكن قد يؤدي نسخ الكود بشكل مباشر للكود الموجود سابقًا لمشكلات في تنظيم الكود وتنسيقها مما يصعب صيانة وتعديل الكود لاحقًا. يمكننا تبسيط هذه العملية بتحويل الكود إلى أجزاء قابلة لإعادة الاستخدام مثل دوال برمجية أو كائنات وأصناف برمجية، ويمكننا تحقيق هذا أيضًا باستخدام النموذج اللغوي الضخم ما دامت التعليمات المفصلة للقيام بهذا مرفقةً في الموجه Prompt، ويجب أيضاً تحديد مدخلات هذه الدوال والمخرجات المتوقعة منها. دعنا نجعل النموذج اللغوي الضخم ينشئ الكائن البرمجي weather الذي يحوي دالة get_weather ، من خلال إضافة الأوامر التالية للموجه: عندها سنحصل على كود بايثون التالي: import requests class Weather: def __init__(self, api_key): self.api_key = api_key self.temperature = None def get_weather(self, city): url = 'http://api.openweathermap.org/data/2.5/weather' params = { 'q': city, 'appid': self.api_key, 'units': 'imperial' # طلب درجة الحرارة بالفهرنهايت. } response = requests.get(url, params=params) data = response.json() if response.status_code == 200: self.temperature = data['main']['temp'] print(f"درجة الحرارة في {city} هي {self.temperature}°F.") else: print(f"خطأ: {data['message']}") # استبدل "YOUR_API_KEY" بمفتاح الواجهة البرمجية الفعلي من OpenWeather. api_key = "YOUR_API_KEY" weather = Weather(api_key) weather.get_weather('London') يولّد النموذج دالة قابلة للتشغيل بواسطة الكائن weather، ويمكننا دمج هذا الكائن بتطبيق آخر بكل سهولة، ولكن علينا معالجة الأخطاء التي قد تقع لضمان عدم فشل عمل التطبيق وعدم عرضه لبيانات حساسة أو سرية. اختبار التطبيق ومعالجة الأخطاء إن فشل طلبات واجهة البرمجة للتطبيق API أمر شائع في التطبيقات الحقيقية، فيمكن أن تفشل الطلبات لعدة أسباب، لذا لضمان الاعتمادية ينبغي أن يتضمن الكود حالات لمعالجة الأخطاء التي يمكن أن تقع لمنع فشل التطبيق الكامل، في أغلب الأمثلة السابقة كان الكود المولد بواسطة النموذج يحوي شرطًا يختبر رمز الحالة لبروتوكول نقل النص الفائق HTTP ، فالرمز 200 يعبر عن نجاح الطلب بينما أي رمز آخر يعبر عن فشل الطلب أو وجود خطأ ينبغي التعامل معه فيقوم الكود المولد بطباعته، ولكن هذا الشرط لا يأخذ في الاعتبار حالات أخطاء شائعة أخرى مثل انتهاء وقت الطلب timeout أو أخطاء نظام أسماء النطاقات DNS. لضمان الاعتمادية ينبغي أن يحوي الكود المولد آلية لمعالجة الأخطاء، مثل استخدام try-catch عند إجراء طلب من خلال واجهة برمجة التطبيق API. لذا أضفنا النص التالي للموجه السابق: ولّد هذا التوجيه كود بايثون يحتوي كلتلة try-catch تعالج الأخطاء المحتملة: class Weather: def __init__(self, api_key): self.api_key = api_key self.temperature = None def get_weather(self, city): try: # بناء عنوان URL للواجهة البرمجية باستخدام المدينة ومفتاح API المقدم. url = "http://api.openweathermap.org/data/2.5/weather" params = {'q': city, 'appid': self.api_key, 'units': 'imperial' # الحصول على درجة الحرارة بالفهرنهايت. } # إرسال طلب GET إلى الواجهة البرمجية. response = requests.get(url, params=params) # التحقق من حالة الاستجابة if response.status_code == 200: # تحليل الاستجابة بتنسيق JSON data = response.json() # استخراج درجة الحرارة بالفهرنهايت من الاستجابة. self.temperature = data['main']['temp'] else: # عرض وصف الخطأ إذا كانت حالة الاستجابة ليست 200. print(f'خطأ: {response.status_code} - {response.json()["message"]}') except requests.exceptions.RequestException as e: # التعامل مع أي استثناءات تحدث أثناء الطلب. print(f'خطأ: {e}') يعد الكود المولد بواسطة النموذج اللغوي الضخم نقطة بداية جيدة، لكنك ستحتاج في الغالب لتعديلات إضافية لتحصيصه وزيادة الوظائف التي يقوم به، على سبيل المثال من الممكن تسجيل الأخطاء التي تحدث وتنبيه المستخدم من أخطاء الإعدادات التي قد تشمل أخطاء في استيثاق الواجهة البرمجية API authentication error ويمكن للمطورين إضافة واجهة برمجية احتياطية في حالة تعطل الواجهة الأساسية. بمجرد أن يصبح الكود قادرًا على تأدية وظيفته كما ينبغي، فالخطوة التالية مهمة للتأكد من صموده عند التشغيل الفعلي، وينبغي اختبار كل الوظائف والحالات الممكنة للخطأ، ولضمان اعتمادية قوية يمكننا أتمتة عملية الاختبارات وتقييم الأداء من خلال قياس مؤشرات الأداء المختلفة مثل وقت التشغيل واستخدام ذاكرة الوصول العشوائي واستخدام الموارد الحاسوبية، ستساعدنا هذه المؤشرات على تحديد نقاط الخلل في النظام وتحسين الموجهات prompts وصقل fine-tune معاملات النموذج اللغوي الضخم. تطور نماذج اللغات الضخمة تطورت النماذج اللغوية الضخمة لكنها لن تستبدل الخبرة البشرية حاليًا، بل سيقتصر دورها على توليد الكود البرمجي مما يسرّع ويسهّل عملية التطوير كما أنها قادرة على توليد نسخ متنوعة من الكود مما يساعد المطور على اختيار أفضل خيار من بينها، كما يمكنها تولي إنجاز المهام البسيطة والتكرارية لزيادة إنتاجية المطورين، مما يتيح للمطورين التركيز على المهام المعقدة التي تتطلب معرفة متخصصة وتفكير بشري إبداعي. ترجمة-وبتصرٌّف-للمقال Using an LLM API As an Intelligent Virtual Assistant for Python Development اقرأ أيضاً دليل استخدام ChatGPT API لتحسين خدماتك عبر الإنترنت تعرف على مكتبة المحوّلات Transformers من منصة Hugging Face تلخيص النصوص باستخدام الذكاء الاصطناعي استخدام النماذج التوليديّة Generative models لتوليد الصور
  8. نشرح في مقال اليوم الخطوات الأساسية لدمج نماذج الذكاء الاصطناعي التي توفرها شركة OpenAI في تطبيق جانغو Django، ففي الآونة الأخيرة ازادت شعبية نماذج OpenAI أو ما يعرف بنماذج GPT OpenAI بشكل كبير بفضل قدرتها على توليد محتوى نصي عالي الجودة في مختلف المجالات سواء كتابة رسائل البريد الإلكتروني، أو القصص، أو الإجابة على استفسارات العملاء، أو حتى ترجمة المحتوى من لغة لأخرى. تُستخدم نماذج جي بي تي GPT عادة من خلال روبوت الدردشة تشات جي بي تي ChatGPT، وهو نظام محادثة ذكي أطلقته OpenAI، ويمكن الاستفادة من هذه النماذج في تطبيقاتنا الخاصة باستعمال واجهة برمجة التطبيقات API التي وفرتها OpenAI للمطورين. وسنوضح في الفقرات التالية خطوات إنشاء تطبيق جانغو يستخدم هذه الواجهة البرمجية، وبالتحديد نموذج إكمال المحادثة ChatCompletion API من أجل توليد قصة قصيرة ونتعرف على طريقة تخصص معاملات النموذج المختلفة، وتنسيق ردوده واستجاباته. المتطلبات كي تتمكن من إكمال هذه المقالة، سوف تحتاج الآتي: إطار جانغو Django مثبت على بيئة افتراضية ضمن حاسوبك، إن كانت هذه أول مرة تستخدم فيها جانغو فيمكنك مطالعة مقال البدء مع إطار العمل جانغو لإنشاء تطبيق ويب ومقال تنصيب إطار العمل Django وتهيئة بيئته البرمجية على Ubuntu. حساب على منصة OpenAI، فإذا لم يكن لديك حساب سابق انتقل لموقعها الرسمي وسجل حساب جديد Sign up مفتاح الواجهة البرمجية OpenAI API key فبعد إنشاء حسابك في OpenAI، عليك تسجيل الدخول للوحة تحكم حسابك، والانتقال لقسم مفاتيح الواجهة البرمجية API keys وتوليد المفتاح الخاص بك، يكون المفتاح المٌولد شبيهًا للتالي sk-abcdefghijklmnop، احرص على نسخه وحفظه في مكان آمن تثبيت حزمة OpenAI Package الخاصة بلغة بايثون، فعند تثبيت جانغو بالخطوة الأولى ستكون قد أنشأت بيئة افتراضية باسم env ضمن المجلد django-apps. تأكد من تفعيل البيئة الافتراضية وظهور اسمها داخل قوسين() في سطر الأوامر Terminal. إذا لم تكن البيئة الافتراضية مفعلة فيمكنك تفعيلها يدويًا بالانتقال للمجلد django-apps في سطر الأوامر وكتابة الأمر التالي: hasoub-academy@ubuntu:$ .env/bin/activate بمجرد تفعيل البيئة الافتراضية، شغل الأمر التالي لتنزيل حزمة OpenAI Package الخاصة بلغة بايثون: (env)hasoub-academy@ubuntu:$ pip install openai أنت جاهز الآن للبدء بتطوير تطبيق جانغو الخاص بك كما نوضح في الخطوات التالية. إرسال الطلبات للواجهة البرمجية OpenAI API نحتاج بداية لإضافة مفتاح الواجهة البرمجية OpenAI API key لتطبيقنا ليتمكن من إرسال الطلبات للواجهة البرمجية ChatCompletion API. واختبار الرد الذي نحصل عليه منها. لنكتب الأمر التالي لتشغيل بايثون داخل البيئة الافتراضية: (env)hasoub-academy@ubuntu:$ python نستورد بعدها المكتبة OpenAI ونعرًف العميل client المخصص للتفاعل مع الواجهة البرمجية كما يلي: import openai client = OpenAI(api_key="your-api-key") ملاحظة: تحتاج لاستبدال"your-api-key" بمفتاح الواجهة البرمجية الخاص بك. بعدها نرسل طلب للواجهة البرمجية ChatCompletion API باستخدم الدالة chat.completions.create: response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "عد من 1 إلى 10"} ] ) حددنا في الكود السابق النموذج المراد استخدامه ليكون gpt-3.5-turbo، وأضفنا كائن رسالة واحد يحتوي على الدور مستخدم user، ومرّرنا الأمر أو المُوجّه prompt المطلوب إرساله للواجهة البرمجية وهو في حالتنا طلب العد من واحد إلى عشرة. ملاحظة1: عند التفاعل مع نموذج GPT ستلاحظ وجود ثلاثة أدوار رئيسية وهي دور المستخدم user الذي يطرح الأسئلة أو يطلب المساعدة من النموذج، ودور النظام system الذي يتضمن القواعد والتعليمات التي توجه للنموذج، ودور المساعد assistance الذي يمثل نموذج الذكاء الاصطناعي نفسه والمستخدم للإجابة على أسئلة المستخدم أو تنفيذ الأوامر التي يطلبها منه. ملاحظة2: من المهم دائمًا الرجوع إلى التوثيق الرسمي لمنصة OpenAI للحصول على تعليمات دقيقة وشاملة حول كيفية استخدام نماذج GPT في تطبيقاتك، فهذه التعليمات قد تتغير مع مرور الوقت. لنطبع الآن الرد المستلم من الواجهة البرمجية API والتي تتضمن الأعداد من واحد إلى عشرة على شكل قائمة من خلال الأمر التالي: print(response.choices[0].message.content) سنحصل على النتيجة التالية: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 بهذا نكون قد نجحنا بإرسال طلب بسيط إلى الواجهة البرمجية، واستلمنا الرد منها وتأكدنا أن كل شيء يسير على ما يرام، نحن جاهزون الآن لاستخدام الواجهة البرمجية لأمر أكثر صعوبة وهو كتابة محتوى لقصة. ضبط معاملات النموذج Parameters بعد أن نجنا في إرسال طلب API بسيط إلى الواجهة البرمجية لإكمال المحادثة ChatCompletion API، لنتعرف على طريقة ضبط معاملات النموذج والتعامل معها للتحكم بسلوك النموذج. فهنالك العديد من المعاملات المتاحة للتحكم في النص المولد، سنوضح ثلاثة منها. 1. درجة الحرارة Temperature يتحكم هذا المعامل في مدى عشوائية الردود المولدة من قبل النموذج، ويأخذ قيمة بين الصفر والواحد، كلما ارتفعت قيمته سنحصل على تنوع وإبداع في الردود والعكس صحيح. response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "اذكر خمس كلمات"}], temperature=0.1 ) print(response.choices[0].message.content) المخرجــــات 1. تفاح 2. سيارة 3. كتاب 4. شمس 5. شجرة لنجرب منحه قيمة قريبة من الصفر مثل 0.1 ونرى كيف ستولد الكلمات: response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "اذكر خمس كلمات"}], temperature=0.1 ) print(response.choices[0].message.content) المخرجــــات 1. تفاح 2. فيل 3. ضوء الشمس 4. مغامرة 5. سكون ستلاحظ بالتجربة أنك عندما تطلب من النموذج أن يذكر خمس كلمات عدة مرات باستخدام القيمة 0.1 للبرامتر فسوف تحصل على نفس الكلمات في كل مرة، أما عندما ترفع قيمته إلى 0.8 وتجرب الطلب عدة مرات فستلاحظ تغير النتائج كل مرة: response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "اذكر خمس كلمات باللغة العربية"}], temperature=0.8 ) print(response.choices[0].message.content) المخرجــــات 1. تفاح 2. ضوء الشمس 3. سعادة 4. صداقة 5. تقنية 2. العدد الأقصى للوحدات النصية Max token يسمح لك هذا المعامل بتحديد طول النص المولد، فعند تحديد قيمة معينة يضمن لك هذا المعامل أن الردود لن تتجاوز الرقم الذي حددته في الوحدات النصية tokens، على سبيل المثال: response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "اذكر خمس كلمات"}], max_tokens=10 ) print(response.choices[0].message.content) المخرجــــات 1. تفاحة 2. سيارة لاحظ المخرجات عند تغير قيمة max-token إلى 20: response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "اذكر خمس كلمات"}], max_tokens=20 ) print(response.choices[0].message.content) المخرجــــات 1. تفاح 2. سيارة 3. موسيقى 4. محيط 5. صداقة 3. التدفق Stream يحدد هذا المعامل هل نريد أن تتدفق الردود على دفعات streams أو تعود دفعة واحدة، فعند ضبطه بالقيمة True، ستستلم الرد بشكل متدفق، أي على دفعات خلال عملية توليدها. يكون هذا مفيدًا في المحادثات الطويلة أو تطبيقات الزمن الحقيقي التفاعلية. response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "اذكر خمس كلمات"}], stream=True ) collected_messages = [] for chunk in response: chunk_message = chunk.choices[0].delta.content if chunk_message is not None: collected_messages.append(chunk_message) print(collected_messages) المخرجــــات ['', 'قطة', '\n', 'كتاب', '\n', 'حاسوب', '\n', 'شمس', '\n', 'ماء'] سيحتفظ المتغير chunk_message بكل جزء من الرسالة المتدفقة بشكل مؤقت أثناء استلامها من الواجهة البرمجية، بعد ذلك، ستضاف هذه الأجزاء إلى القائمة collected_messages التي تُجمع فيها كل الرسائل. يجب التأكد من أن الجزء المتدفق ليس None، لأن هذه القيمة تدل على انتهاء تدفق الردود وتستخدم كشرط للخروج من الحلقة التكرارية. صياغة مُوجِّه نظام مخصص في هذه الخطوة، سنستخدم كل ما تعلمناه من مفاهيم أساسية لكتابة مُوجِّه نظام مخصص system prompt وتوفير السياق الذي يحتاجه نموذج GPT لفهم المطلوب منه ضمن تطبيق جانغو، وسنحدد القواعد التي يجب أن يتبعها النموذج لتوليد المحتوى. ننشئ بداية وحدة بايثون module تحتوي على دالة تتولى المهمة المطلوبة. لذا ننشئ ملفًا جديدًا باسم story_generator.py داخل مجلد مشروع جانغو بكتابة الأمر التالي: (env)hasoub-academy@ubuntu:$ touch ~/my_blog_app/blog/blogsite/story_generator.py ثم نضيف مفتاح الواجهة البرمجية OpenAI API key لمتغيرات البيئة environmental variables فلا نضيفها في ملف بايثون مباشرة لحماية المفتاح: (env)hasoub-academy@ubuntu:$ export OPENAI_KEY="your-api-key" افتح الآن الملف story_generator.py وأنشئ بداخله عميل OpenAI client وعرف دالة باسم generate_story وظيفتها توليد محتوى قصة بناءً على مجموعة من الكلمات المدخلة لها من طرف المستخدم: import os from openai import OpenAI client = OpenAI(api_key=os.environ["OPENAI_KEY"]) def generate_story(words): # استدعاء واجهة برمجة التطبيقات من OpenAI لتوليد القصة response = get_short_story(words) # تنسيق الاستجابة وإرجاعها return format_response(response) لتنظيم الكود البرمجي، نستدعي ضمن هذه الدالة البرمجية دالة منفصلة باسم get_short_story تطلب توليد القصة من الواجهة البرمجية OpenAI API، ودالة أخرى format_response تنسق الرد المستلم من الواجهة البرمجية. لنركز الآن على دالة توليد القصة get_short_story. نضيف الكود الخاص بها في نهاية الملف story_generator.py. def get_short_story(words): # إنشاء موجه النظام system_prompt = f"""أنت مولد قصص قصيرة. اكتب قصة قصيرة باستخدام الكلمات التالية: {words}. لا تتجاوز فقرة واحدة.""" # الاتصال بواجهة برمجة التطبيقات response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{ "role": "user", "content": system_prompt }], temperature=0.8, max_tokens=1000 ) # إرجاع استجابة الواجهة البرمجية return response كما تلاحظ فقد ضبطنا مُوجِّه النظام system prompt كي يخبر النموذج ما هو وما هي المهمة التي عليه لتأديتها، وحددنا في الموجّه حجم القصة المطلوبة، ثم مررنا الموجّه للواجهة البرمجية ChatCompletion API. أخيرًا نكتب كود دالة التنسيق format_response في نهاية الملف story_generator.py: def format_response(response): # استخرج القصة المولدة من الاستجابة story = response.choices[0].message.content # إزالة أي نص أو تنسيقات غير مرغوبة story = story.strip() # إرجاع القصة المنسقة return story لاختبار هذه الدوال نستدعي الدالة generate_story ونمرر لها مجموعة كلمات كمعاملات، ثم نطبع الرد الذي تعيده لنا من خلال إضافة سطر الكود التالي للملف: print(generate_story("قطة، كتاب، حاسوب شمس، ماء")) الآن، احفظ الملف وأغلقه ثم نفذّ الأمر التالي من داخل سطر الأوامر: (env)hasoub-academy@ubuntu:$ python ~/my_blog_app/blog/blogsite/story_generator.py يجب أن تحصل على قصة تشابه القصة التالية: في زاوية مريحة من غرفة مشمسة، كانت هناك قطة ذات فرو ناعم تُدعى "مشمش"، تتمدد بكسل بجانب رف كتب شاهق. بين صفوف الكتب، كان حاسوب فضولي يهمس بهدوء. بينما كانت أشعة الشمس تتسلل عبر النافذة، مُلَقيةً ضوءًا دافئًا، لاحظت "مشمش" بقعة ماء صغيرة على الرف. مدفوعةً بالفضول، دفعت القطة الكتاب الأقرب إلى البقعة، ليُفتح الكتاب ويكشف عن مكان مخفي يحتوي على عقد ماسي متلألئ. مع اكتشاف السر، بدأت "مشمش" مغامرة غير متوقعة، حيث امتزجت أشعة الشمس، والماء، وقوة المعرفة لتنسج قصة مثيرة من الغموض والاكتشاف. بعد أن تأكدنا من عمل الدالة generate_story وتوليد القصة بشكل صحيح، لنغير طريقة تنفيذ الكود وبدلاً من طباعة القصة مباشرة في سطر الأوامر، سنستدعي الدالة من خلال عرض جانغو Django view لعرض القصة على واجهة المستخدم. print(generate_story("قطة، كتاب، حاسوب شمس، ماء")) يمكن تجربة تعديل مُوجّه النظام system prompt بما يناسبك لتوليد محتوى أفضل. ستلاحظ بالتجربة أن بإمكانك دائمًا تحسين النتائج بما يتناسب مع احتياجاتك. لننتقل إلى الخطوة التالية، حيث سندمج الوحدة التي عرفناها في الملف story_generator.py مع مشروع جانغو الخاص بنا. دمج وحدة بايثون مع جانغو في الواجهة الخلفية لدمج وحدة story_generator مع مشروع جانغو في الواجهة الخلفية، علينا تنفيذ عدة خطوات بسيطة، سنبدأ أولاً بإنشاء عرض view جديد في جانغو لاستقبال الكلمات من المستخدم، ثم سنستخدم الدالة generate_story لتوليد القصة بناءً على تلك الكلمات، وفي النهاية سنعرض النتيجة للمستخدم عبر المتصفح. افتح ملف views.py داخل مجلد مشروع جانغو، واستورد الوحدات والحزم البرمجية اللازمة، ثم أضف دالة عرض view باسم generate_story_from_words واكتب ضمنها ما يلي: from django.http import JsonResponse from .story_generator import generate_story def generate_story_from_words(request): words = request.GET.get('words') # استخراج الكلمات المتوقعة من الطلب story = generate_story(words) # استدعاء دالة generate_story باستخدام الكلمات المستخرجة return JsonResponse({'story': story}) # إرجاع القصة في استجابة JSON بعدها نحتاج لربط الدالة بمسار URL في مشروع جانغو لتمكين المستخدمين من الوصول إليها عبر المتصفح. لنفتح الملف urls.py ونضيف نمط الرابط URL pattern للدالة generate_story_from_words كما يلي: urlpatterns = [ # أنماط URL الأخرى... path('generate-story/', views.generate_story_from_words, name='generate-story'), ] الآن يمكننا إرسال الطلبات من خلال نقطة الوصول التالية/generate-story/ باستخدام المتصفح، وإرسال طلب من النوع GET لها وتمرير الكلمات المتوقعة كمعاملات للطلب، نفتح سطر الأوامر ونكتب الأمر curl بالشكل التالي: (env)hasoub-academy@ubuntu:$ curl "http://your_domain/generate-story/?words=قطة,كتاب,حاسوب,شمس,ماء" استبدل http://your_domain بعنوان النطاق الفعلي الذي يستضيف مشروعك. تمثل الكلمات الممررة عبر هذا الرابط مثل كتاب وماء وحاسوي فهي الكلمات التي نريد استخدامها لتوليد محتوى القصة. يمكنك بالطبع تغيير هذه الكلمات واستخدام كلمات أخرى حسب رغبتك. بعد تشغيل أمر curl يجب أن نرى ردًا من الخادم يحتوي على القصة المولدة استنادًا إلى الكلمات التي قدمتها. (env)hasoub-academy@ubuntu:$ curl "http://your_domain/generate-story/?words="قطة,كتاب,حاسوب,شمس,ماء" وسنحصل على مخرجات قريبة للتالي: { "story": "كان يا مكان، في كوخ صغير مريح يقع وسط غابة كثيفة، قطة فضولية تُدعى 'مشمش' تجلس بجانب النافذة، تستمتع بأشعة الشمس الدافئة. بينما كانت 'مشمش' تحرك ذيلها بكسل، لفت نظرها كتاب مغبر ملقى على رف قريب. بدافع الفضول، قفزت بعناية إلى الرف، مما أدى إلى سقوط مجموعة من الكتب، فتح أحدها ليكشف عن مكان مخفي. داخل هذا المكان، اكتشفت 'مشمش' حاسوبًا قديمًا، بدأ شاشته يومض عندما لمست زر الطاقة. مفتونةً بالشاشة المتوهجة، انطلقت 'مشمش' في عالم من المناظر الافتراضية، حيث تجولت بحرية، تطارد الأسماك الرقمية وتوقف للإعجاب بشلالات رائعة. ضائعة في هذه المغامرة الجديدة، اكتشفت 'مشمش' عجائب العوالم الملموسة والافتراضية معًا، مدركةً أن الاستكشاف الحقيقي لا يعرف حدودًا." } الخلاصة إلى هنا نكون قد وصلنا لنهاية هذا المقال، يجب أن تكون قد فهمت الخطوات الأساسية التي تحتاجها لدمج OpenAI modes داخل تطبيق جانغو Django باستخدام الواجهة البرمجية OpenAI API، وتعلمت طريقة إرسال الطلبات للواجهة البرمجية ChatCompletion API والتحكم بسلوك النموذج عن طريق ضبط معاملاته المختلفة. لتحسين هذا المشروع وزيادة ميزاته، يمكنك استكشاف المزيد من مميزات الواجهة البرمجية OpenAI API وتجرب مُوجِّهات نظام system prompt مختلفة، وقيم معاملات متنوعة حتى تحصل على قصة مميزة وإبداعية. ترجمة-وبتصرٌّف-للمقال How to Integrate OpenAI GPT Models in Your Django Project اقرأ أيضًا إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات مدخل إلى إطار عمل الويب جانغو Django دليلك لربط واجهة OpenAI API مع Node.js استخدام وكلاء مكتبة المحولات Transformers Agents في الذكاء الاصطناعي التوليدي
  9. وفقًا لمبرهنة النهاية المركزية Central limit theorem في الإحصاء لما تجمع عينات عن مجتمع population كبير وغير معلوم نوع التوزيع ال بيخضع ليه فتم ملاحظة إن كل ما جمعت عينات أكتر متوسط العينات دي هيكون هو المتوسط الخاص بالمجتمع population ك كل أو بيقرب ليه كل ما زودت عدد العينات
  10. وصولك إلى هذه المقالة يعني أنك تعاني من كثرة المصطلحات والمفردات اللغوية المستخدمة عند النقاش حول الذكاء الاصطناعي عمومًا AI التوليدي Generative AI على وجه الخصوص، فبعض هذه المصطلحات تستخدم بمفردات أجنبية وقد لا تكون ترجمتها الحرفية ذات دلالة كافية لفهم المعلومات التقنية التي تعبر عنها، لا داعي للقلق فعندما تنتهي من قراءة هذا المقال ستتمكن من فهم كافة المصطلحات والمفردات شائعة الاستخدام عند مناقشة الذكاء الاصطناعي التوليدي Gen AI والمشاركة في النقاشات الدائرة حول هذه التقنية الرائدة سواءً في عملك أو في أي مكانٍ آخر. لقد بدأ النمو المتسارع لتقنيات الذكاء الاصطناعي التوليدي Generative AI -أو Gen AI اختصارًا- يؤثر بشكل جليّ على نمط حياتنا فَـغير طريقة إنجازنا للمهام المختلفة، لذا كان لزامًا على كافة الأشخاص العاملين في المجال التقني اكتساب معرفة كافية بالمصطلحات الأساسية لهذا المجال، وفهم كيفية عملها كي لا يشعر بالتشتت والاستغراب عند سماع مصطلحات مثل نموذج الأساس Foundation Model أو النماذج اللغوية الضخمة Large Language Models أو مصطلح هندسة المُوجّهات Prompt engineering أو غيرها من مصطلحات الذكاء الاصطناعي الشائعة اليوم. سنبدأ في هذه المقالة بشرح المصطلحات الأساسية للذكاء الاصطناعي والمجالات المشتقة منه، ثم سنتدرج بعد ذلك لشرح المصطلحات المتقدمة بهذا المجال الرائد، وللسهولة سنصنف المصطلحات وفق ثلاثة تصنيفات على النحو التالي: أولًا: مصطلحات أساسية حول الذكاء الاصطناعي. ثانيًا: مصطلحات متقدمة في الذكاء الاصطناعي. ثالثًا: مصطلحات تتعلق بآلية عمل الذكاء الاصطناعي. أولًا: مصطلحات أساسية حول الذكاء الاصطناعي نشرح في القسم الأول المصطلحات الأساسية التالية حول الذكاء الاصطناعي ومجالاته المختلفة: الذكاء الاصطناعي (Artificial intelligence (AI تعلم الآلة (Machine Learning (ML الشبكات العصبية الاصطناعية (Artificial Neural Network (ANN التعلم العميق (Deep Learning (DL الذكاء الاصطناعي التوليدي (Generative AI (GAI نموذج الأساس (Foundation Model (FM نماذج اللغة الضخمة (Large Language Models (LLMs معالجة اللغات الطبيعية (Natural Language Processing (NLP النماذج المحولة Transformers Models النموذج مسبق التدريب المبني على المحولات (Generative Pretrained Transformer (GPT الذكاء الاصطناعي (Artificial intelligence (AI يمكن تعريف الذكاء الاصطناعي على أنه محاكاة الآلات لذكائنا البشري، الذكاء الاصطناعي يمكن أن يكون تطبيقًا صغيرًا مدمجًا في هاتفك، أو ربما نظام أكثر تعقيدًا وأكبر حجمًا يعمل على خوادمٍ سحابية تستخدمها شركة لاستضافة نظامها الذكي الذي يستخدمه ملايين الأشخاص، في كلتا الحالتين، يمتلك الذكاء الاصطناعي القدرة على القيام بالمهام والأنشطة التي كانت تتطلب في السابق ذكاءً بشرياً لإتمامها. تعلم الآلة (Machine Learning (ML تعلم الآلة هو تخصص فرعي من الذكاء الاصطناعي، ويستخدم كوسيلة لمنح الأنظمة الحاسوبية القدرة على التعلم من التجربة والبيانات باستخدام نماذج رياضية، يتحسن أداء هذه النماذج بمرور الوقت مع تعرض نموذج التعلم الآلي لمزيد من البيانات التي تُمكّنه من استخلاص الأنماط المتكررة التي يستخدمها النموذج في توقع نتائج تجاربٍ أخرى، هذا يخلق دورة مستمرة تُمكّن النماذج الآلية من التعلم والنمو والتطور دون الحاجة للتدخل البشري. الشبكات العصبية الاصطناعية (Artificial Neural Network (ANN الشبكات العصبية هي خوارزميات متفرعة من تعلم الآلة تستخدم في توجيه وتدريب الآلات على تعلم التعرف على الأنماط باستخدام شبكة مصممة لتحاكي طريقة عمل الشبكات العصبية البشرية في مخ الإنسان. باستخدام هذه الشبكات المكونة من طبقاتٍ يمكن أن تتصل ببعضها على التوالي أو التوازي أو بشكل ملتف وتتكون الطبقات من عدد من الخلايا العصبية الاصطناعية تدعى بالعصبون neuron، تصبح الآلات قادرة على التعامل مع مختلف المدخلات لتوليد أفضل الإجابات والنتائج الممكنة، وتكتسب هذه الآلات القدرة على التعلم من الأخطاء من أجل تحسين دقة النتائج. التعلم العميق Deep Learning يستخدم التعلم العميق الشبكات العصبية الاصطناعية من أجل اكتشاف الأنماط أو تحديدها أو تصنيفها، على نطاقٍ متنوع من البيانات، مثل البيانات النصية والمرئية والصوتية، فيمكنه تحديد ووصف العناصر الموجودة بالصورة، أو يمكنه تحويل ملف صوتي إلى ملفٍ نصّيٍ يحتوى الكلمات المنطوقة، ويمكن لخوارزميات التعلم العميق أن تصبح في غاية التعقيد عن طريق إضافة عدد مهول من طبقات الشبكات العصبية المتصلة بطرقٍ مختلفة تمكن الخوارزمية من اكتشاف الأنماط والعلاقات العميقة في البيانات. الذكاء الاصطناعي التوليدي Generative AI الذكاء الاصطناعي التوليدي Generative AI أو GAI اختصارًا ،هو تخصص فرعي من التعلم العميق وهو يعبر عن قدرة النموذج على توليد وإنتاج محتوى جديد لم يوجد من قبل، قد يكون هذا المحتوى صورة أو نصَا أو تسجيلات صوتية أو فيديو أو غير ذلك، ويحتاج توليد المحتوى من خلال الذكاء الاصطناعي إلى استخدام كميات هائلة من البيانات في مرحلة التدريب المسبق لنموذج الأساس Foundation Model حتى يكون النموذج قادراً على توليد مثل هذا المحتوى المشابه للبيانات الموجودة التى قد ينخدع البعض بها ويظن أنها من صنع الإنسان. نموذج الأساس Foundation Model نماذج الأساس هي نماذج تعلم عميق دُرّبت على كميات ضخمة من البيانات الغير موسومة unlabeled data والشاملة، وهي النماذج التي تعتمد عليها قدرات الذكاء الاصطناعي التوليدي، تكون هذه النماذج في الغالب ضخمة للغاية مقارنة بنماذج التعلم الآلي التقليدي التي تتخصص في مهام معينة وتُدرّب على بيانات مرتبطة بتلك المهمة فقط، تستخدم نماذج الأساس كنقطة بداية لتطوير نماذج تقوم بمهام أكثر تعقيداً، قد يكون نموذج الأساس قادرًا على فهم اللغة حيث تم تدريبه على كميات ضخمة من النصوص فيمكن استخدامه كأساس لنماذج أكثر تخصصاً تستفيد من قدرته على فهم اللغة للقيام ببعض المهام مثل القيام بمحادثات أو تلخيص النصوص أو توليد النصوص المختلفة، مثال على هذا النوع من النماذج هو (GPT-4) وهو نموذج الأساس المستخدم لتشغيل تشات جي بي تي ChatGPT، ولا يتوقف الأمر على النصوص فبعض النماذج قادرة على توليد الصور مثل نموذج الانتشار Stable Diffusion model القادر على توليد محتوى مرئي قوي، ونماذج الأساس قادرة على إنتاج طيف واسع من المخرجات اعتمادًا على الأوامر النصية prompts بمستوى عالٍ من الدقة. النماذج اللغوية الضخمة Large Language Models تستخدم نماذج الذكاء الاصطناعي التوليدي نماذج اللغة الضخمة LLMs لتوليد النصوص اعتمادًا على سلسلة من الاحتمالات تمكنها من توقع وتحديد وفهم السياق، تُدرّب النماذج اللغوية باستخدام معمارية المحولات Transformers architecture تصل معاملات parameters في مثل هذه النماذج إلى مليارات، وتركز النماذج اللغوية الضخمة على محاكاة فهم البشر للغة من خلال معالجة اللغات الطبيعية Natural Language Processing.تستخدم النماذج اللغوية الضخمة في تلخيص النصوص أو تصنيف النصوص وتحليل المشاعر التي تعبر عنها الكلمات، وتستخدم أيضاً في أنظمة المحادثات الآلية chatbots والمساعدات الذكية. معالجة اللغات الطبيعية (Natural Language Processing (NLP معالجة اللغات الطبيعية هي العلم الذي يهتم بدراسة اللغات وتزويد الآلات بالقدرة على معالجة وتفسير اللغات البشرية سواءً كانت هذه اللغات مكتوبة أو منطوقة، كما لو أن إنسانًا يتحدث أو يكتب، ويهتم تخصص فهم اللغات الطبيعية Natural Language Understanding -أو NLU اختصارًا- بفهم المشاعر والقصد من وراء اللغة المستخدمة، بينما في توليد اللغات الطبيعية Natural Language Generation أو NLG اختصارًا فيكون الهدف هو توليد النصوص بشكل كتابي أو منطوق، مما يسمح بتحويل النص إلى النطق text-to-speech و النطق إلى نص speech_to_text. نماذج المحولات Transformers Models تعد معمارية المحولات Transformers architecture من معماريات التعلم العميق وهي الأكثر استخدامًا في تطوير النماذج اللغوية الضخمة، يعود هذا لقدرتها على معالجة النصوص باستخدام نماذج رياضية وقدرتها على فهم الكلمات في السياقات المختلفة وفهم كيفية ارتباط الكلمات ببعضها حتى وإن كانت الكلمات متباعدة (أي يمكن للنموذج الاحتفاظ بمعلومات من الأجزاء السابقة للنص وتذكرها واستخدامها لفهم الأجزاء اللاحقة)، وهذا النوع من الذاكرة طويلة الأمد يسمح للنموذج أن ينقل فهمه بين اللغات المختلفة، ولم يتوقف الأمر عند اللغات فيمكنه نقل معرفته بين الوسائط media المختلفة، فيمكنه تحويل النصوص إلى صور. االمحوِّل التوليدي مسبق التدريب (Generative Pretrained Transformer (GPT النموذج التوليدي مسبق التدريب المبني على معمارية المحولات Generative pre-trained transformers GPT يستخدم معمارية المحولات Transformer Architecture من أجل إكساب الآلات قدرات مشابه للبشر في توليد المحتوى من النصوص، والصور، والتسجيلات الصوتية باستخدام تقنيات معالجة اللغات الطبيعية مثل تلخيص النصوص text summarization، وروبوتات الدردشة الآلية chatbots وغيرها من التطبيقات الأخرىي، ولعل أشهرها هو تشات جي بي تي Chat GPT الذي يستخدم نموذج توليدي مسبق التدريب مبني بمعمارية المحولات. ثانيًا مصطلحات متقدمة في الذكاء الاصطناعي سنوضح في الفقرات التالية المصطلحات المتقدمة التالية حول الذكاء الاصطناعي التوليدي: الذكاء الاصطناعي المسؤول Responsible AI البيانات الموسومة Labelled Data التعلم الخاضع للإشراف Supervised learning التعلم غير الخاضع للإشراف Unsupervised learning التعلم شبه الخاضع للإشراف Semi-supervised learning هندسة المُوجَّهات Prompt engineering سَلسَلة المُوجَّهات Prompt chaining التوليد المعزز بالاسترجاع (Retrieval Augmented Generation (RAG معاملات التحكم بنماذج الذكاء الاصطناعي parameters صقل نماذج تعلم الآلة fine-tuning for learning models الذكاء الاصطناعي المسؤول Responisble AI الذكاء الاصطناعي المسؤول مصمم ليتبع بعض المبادئ والممارسات التي تضمن عند تفعيلها استخدامًا آمنًا وأخلاقيًا للذكاء الاصطناعي لا يكسر أي قوانين، مما يعطي المصداقية والثقة لدى العملاء والأنشطة التجارية المختلفة لاستخدامه، بسبب المخاطر المحتملة لاستخدام الذكاء الاصطناعي والطرق التي سيؤثر بها الذكاء الاصطناعي على البشرية لا بد من وضع قواعد حاكمة تضمن مصداقيته، القدرة على أن تثق في إجابات الذكاء الاصطناعي ونتائجه أمرٌ هام للغاية في أي تطبيق للذكاء الاصطناعي. البيانات الموسومة Labeled data تساعد البيانات الموسومة Labeled data نماذج التعلم الآلي على معالجة البيانات والتعلم منها، ويشير مصطلح وسم البيانات إلى الحالة التي تحتوي فيها البيانات على الوسم أو التسمية المراد تعلم التعرف عليها أو تصنيفها بشكلٍ دقيق من خلال البيانات فمثلا يمكن وسم الصور بما تحويه من عناصر تساعد النموذج على تعلم الروابط والأنماط المشتركة بين كل الصور التي تحمل هذا الوسم، إن كان لديك صورة لنمر يمكن أن توسم هذه الصورة بوسم "نمر" مما يساعد النموذج على الربط بين الأنماط الموجودة في الصورة والأنماط الموجودة في صور جديدة للنمور. التعلم الخاضع للإشراف Supervised Learning التعلم الخاضع للإشراف أو التعلم مع إشراف Supervised learning هو طريقة تدريب لِنماذج التعلم الآلي تستخدم كميات كبيرة من البيانات الموسومة Labeled data لتوقع مخرجات التعلم، ومع تكرار مرات التدريب يصبح النموذج أكثر قدرة على الوصول لدالة معبرة بصورة أفضل عن العلاقة بين المدخلات والمخرجات المتوقعة من النموذج، حيث تُصحّح أخطاء النموذج عن طريق تعديل معاملات parameters الدالة المستخدمة في ربط المدخلات بِالمخرجات المتوقعة لتحسين التوقعات. يسمى هذا النوع من التدريب بأنه خاضع للإشراف لأن الوسم المعطى للبيانات يستخدم كمشرف لتقييم توقعات النموذج، على سبيل المثال إن كانت الصورة المدخلة لنموذج تعلم آلي صورة "أسد" وقام النموذج بوسمها على أنها "نمر" سيُقيّم هذا التوقع بأنه خاطئ وسوف يصحح في الدورات التالية من عملية التدريب. التعلم غير الخاضع لإشراف Unsupervised Learning يتميز التعلم غير الخاضع للإشراف أو التعلم دون إشراف Unsupervised Learning بأنه لا يستخدم بياناتٍ موسومة تشرف على توقعاته، حيث يمنح النموذج الاستقلالية ليقوم باكتشاف الأنماط المشتركة للبيانات المدخلة وتصنيفها حسب درجة تشابه خواص تلك البيانات، على سبيل المثال إن كانت البيانات المدخلة هي صور نمور وفيلة وزرافات سيحتاج النموذج إلى تصنيف هذه الصور بناءً على الخواص المشتركة بينها مثل اللون أو اختلاف الحجم أو الشكل أو شكل الوجه وغيرها من الخواص التي يمكن للنموذج تعلمها من الصور. التعلم شبه الخاضع للإشراف Semi-supervised learning تجمع هذه الطريقة في تدريب نماذج التعلم الآلي بين استخدام البيانات الموسومة Labeled data كما في التعلم الخاضع للإشراف Supervised Learning والبيانات غير الموسومة Unlabeled data كما في التعلم الغير الخاضع للإشراف Unsupervised Learning، في الغالب تُتٌستخدم هذه الطريقة عندما لا تتوفر بيانات موسومة كافية مقارنةً بقاعدة بيانات أكبر من البيانات الغير موسومة، توفر هذه الطريقة عناء وسم البيانات الضخمة بشكلٍ يدوي، حيث يمكنك استخدام البيانات الموسومة الأقل حجمًا لتساعد النموذج في مرحلة التدريب على التعرف على بعض التصنيفات الموجودة في البيانات وتدريب النموذج على البيانات الأكبر حجماً دون استخدام وسمٍ أو إشراف. هندسة المُوجَّهات Prompt Engineering هندسة المُوجَّهات Prompt Engineering تسهل عملية إعطاء الأوامر للنماذج اللغوية الضخمة Large language models عن طريق تعديل النص المدخل من أجل الحصول على مخرجات مناسبة، حيث تساعد هذه التقنية على تحسين أداء نماذج الذكاء الاصطناعي التوليدي لتنفيذ بعض المهام الدقيقة والمحددة عن طريق تحسين المُوجهات أو الأوامر المدخلة للنموذج، وتهدف هندسة المُوجِّهات لجعل نتائج النموذج أكثر صلة ومناسبة للمهمة المطلوبة، وتشكل هذه التقنية تحولاً في طريقة تفاعل البشر مع الذكاء الاصطناعي. سَلسَلة المُوجَّه Prompt Chaining سَلسَلة المُوجَّه Prompt Chaining هي تقنية تعمل مع نماذج اللغات الضخمة LLMs ومعالجة اللغات الطبيعية NLP وتسمح بالقيام بمحادثات تفاعلية تعتمد على المُوجَّهات والردود السابقة، تنشئ هذه الطريقة وعياً بالسياق خلال المحادثة، وهو أمر أساسي لجعل المحادثات مع الآلة شبيهة بمحادثات البشر التفاعلية، تظهر أهمية هذه الطريقة في أنظمة الدردشة الآلية chatbots فبدلًا من التعامل مع أمر نصي ضخم يصعب التعامل معه والرد عليه، يمكننا بدلًا من ذلك تقسيمه إلى سلسلة متتالية من الأوامر أو المُوجَّهات التي يسهل التعامل معها والإجابة عليها. التوليد المعزز بالاسترجاع (Retrieval augmented generation (RAG التوليد المعزز بالاسترجاع (Retrieval augmented generation (RAG هو طريقة تعزز من قدرة نماذج الأساس بِتعزيزها باسترجاع الحقائق من مصادر خارجية لمساعدتها على توليد ردود حديثة ومدعومة بمصادر، نموذج الأساس يمتلك معرفة محدودة فقط بالبيانات التي تدرب عليها، لذا إذا كان هناك نقص أو تأخر في تاريخ هذه البيانات لن تصبح ذات فائدة، لذلك تعزيز النموذج بالحقائق والمعلومات من مصادر خارجية حديثة سوف يحسن من مصداقية ودقة المعلومات المولدة، على سبيل المثال لا يمكنك توقع إجابة دقيقة عن سعر سهمٍ في شركة من نموذج معرفته محدودة زمنياً وغير قادر على الوصول إلى البيانات الحديثة لهذا السهم، أما باستخدام التوليد المعزز باستراجاع الحقائق RAG فسوف يمكن بكل سهولة تعزيز معرفة النموذج من مصادر موثوقة ليصبح قادرًا على توفير إجابة محدثة عن السهم، لن تُخزّن هذه المعلومات لدى نموذج الأساس فقط تستخدم لتعزيز الإجابات بالحقائق. المعاملات Parameters إن معاملات parameters نماذج الذكاء الاصطناعي وتعلم الآلة هي عبارة عن متغيرات تُعدَّل قيمها أثناء تدريب النموذج من أجل تحسين أدائه في اكتشاف الأنماط الموجودة في البيانات، وبالتالي جعلها أكثر كفاءة، وتتحكم هذه المعاملات في تصرف النموذج وتقلل الفرق بين القيم المتوقعة والقيم الحقيقية الصحيحة وتجعله أدق في التنبؤ أو تصنيف البيانات. لنفرض أننا نريد تصنيف الحيوانات والتمييز بين الكلب والقطة بناءً على بعض الخصائص مثل الوزن والطول ووجود الفرو باستخدام نموذج يسمى الانحدار اللوجستي Logistic Regression الذي يعتمد على معادلة تجمع بين الخصائص (الوزن، الطول، وجود الفرو) لحساب احتمال أن يكون الحيوان كلبًا أو قطة. سيبدأ النموذج بمعاملات عشوائية تحدد أهمية كل خاصية (مثل الوزن أو الطول) في تحديد نوع الحيوان، ويقارن التوقعات مع النوع الحقيقي للحيوان (كلب أو قطة) ويعدل المعاملات لتقليل الأخطاء في التوقعات، وبعد العديد من المحاولات والتعديلات يصبح النموذج أكثر دقة في التمييز بين الكلب والقطة. وبهذا يتعلم النموذج القيم المثلى للمعاملات التي تمكنه من التنبؤ بنوع الحيوان بدقة أكبر بناءً على خصائصه. صقل نماذج التعلم الآلي Fine Tuning Learning models صقل نماذج التعلم الآلي Fine Tuning Learning models هي تقنية لتعديل النماذج مسبقة التدريب pre-trained على مهام متخصصة ودقيقة، تصقل نماذج التعلم باستخدام بيانات تناسب المهمة المتخصصة التي نرغب في تحسين أداء نموذج الأساس عليها، يمتلك نموذج الأساس فهمًا عامًا للبيانات التي يتعامل معها ومع عملية الصقل باستخدام قاعدة بيانات صغيرة تناسب المهمة المتخصصة يصبح النموذج أكثر كفاءةً في أداء هذه المهمة، تمنح هذه التقنية نماذج التعلم الآلي القدرة على التأقلم على مهام جديدة عن طريق تعديل معاملاتها parameters لتناسب المهمة المتخصصة مما يزيد من دقة النموذج وفعاليته في تنفيذ هذه المهمة. ثالثًا: مصطلحات تتعلق بآلية عمل الذكاء الاصطناعي في هذا القسم نشرح بعض المصطلحات المتعلقة بآلية عمل الذكاء الاصطناعي: التحيز Bias الهلوسة Hallucinations درجة الحرارة Temperature التشبيه بالإنسان Anthropomorphism الإكمال Completion الوحدات اللغوية Tokens الطفرات غير المتوقعة في الذكاء الاصطناعي Emergence in AI التضمينات Embeddings تصنيف النصوص Text Classification نافذة السياق Context Window التحيز Bias عندما يأتي الأمر لذكر تعلم الآلة تظهر مشكلة التحيز كنتيجة لاستخدام بيانات منحازة في التدريب لا تعبر بشكلٍ إحصائي جيد عن الواقع، هذا يؤدي بشكلٍ غير عادل وغير دقيق إلى ميول النموذج إلى القيام بتوقعات تحاكي هذا التشوه في بيانات التدريب، وبالتالي توليد نتائج منحازة، يُبرز هذا الأمر أهمية جودة البيانات المستخدمة في تدريب النماذج، حيث أن البيانات غير المكتملة أو ذات الجودة المنخفضة يمكن أن تولد نماذج لا تستحق الثقة نتيجة الافتراضات الخاطئة. الهلوسة Hallucination تحدث هلوسة نماذج الذكاء الاصطناعي عندما يولد ردودًا تبدو كأنها حقائق مسلم بها وهي ليست كذلك، على الرغم من أن الهلوسة تعتبر نادرة الحدوث بعض الشيء، إلا أنها تعد سببًا وجيهًا لعدم أخذ الإجابات المولدة على أنها حقائق مسلم بها، من الممكن أن تتسبب البيانات المنحازة إلى هلوسة النماذج، أو ربما بسبب عدم فهم البيانات أثناء التدريب، وقد استخدم مصطلح الهلوسة في هذا السياق لكونه مشابهًا لسلوكنا نحن البشر عند تخيل أشياء غير واقعية وظن أنها حقيقة واقعة. درجة الحرارة Temperature درجة الحرارة Temperature هي معامل parameter يستخدم في نماذج الذكاء الاصطناعي، للتحكم في درجة عشوائية أو إبداع الردود المولدة من النموذج، تتراوح القيم الممكنة لِمعامل الحرارة بين الصفر والواحد، القيمة الافتراضية لهذا المعامل هي 0.7، وكلما كانت قريبة إلى الصفر أكثر، كلما كانت الردود أكثر واقعية وثباتًا، بينما كلما ارتفعت قيمة المعامل كلما زادت إبداعية الردود المولدة وتفرّدها. التشبه بالإنسان Anthropomorphism التشبيه بالإنسان أو التجسيم Anthropomorphism هو إعطاء الصفات والمشاعر والنوايا البشرية على الكيانات غير البشرية، فبعض الكيانات التي يمكن تشبيها بالبشر مثل الآلات، والحيوانات، والجمادات وغيرها من الأمثلة، ومن خلال استخدام الذكاء الاصطناعي الذي يتطور بشكل أكثر تعقيدًا يومًا عن يوم، وبعد فترة قصيرة للغاية من التعرض لأدوات الذكاء الاصطناعي، سيبدأ البشر في وصف برامج الحواسيب بصفاتٍ بشرية والتعامل معها كأنها تمتلك مشاعر إنسانية وهذا يمكن أن يؤثر على تصرفات وتفاعلات البشر مع الآلة. الإكمال Completion يٌستخدم مصطلح الإكمال Completion في معالجة اللغات الطبيعية NLP لوصف مخرجات النماذج الناتجة كرد، على سبيل المثال عند طرح سؤال على تشات جي بي تي Chat GPT سوف تعتبر الإجابة المولدة من النموذج اللغوي إكمالاً Completion لسياق السؤال المطروح. الوحدات اللغوية Tokens قد تكون الوحدة اللغوية Token تكون كلمة، أو مجموعة رموز للتميز بين بدايات الجمل ونهايتها والمسافات والحروف المميزة، تستخرج الوحدات اللغوية Tokens من النصوص المدخلة للنموذج اللغوي ليتمكن من التعامل مع التصريفات المختلفة للكلمات و الرموز المميزة وتسمى هذه العملية بِتقطيع النص إلى وحداتٍ لغوية Tokenization، توجد عدة طرق للقيام بعملية التقطيع تختلف في الغالب حسب النموذج المستخدم، تعتبر هذه الوحدات اللغوية الوحدات الأساسية لنماذج اللغات الضخمة حيث تستخدمها لمعالجة النصوص المختلفة واكتشاف الأنماط بها، وتستخدم أيضا كوحدة معيارية لِتحديد القدرة الاستيعابية للنموذج في المدخلات والمخرجات مما يساهم في تحديد نافذة السياق Context window. الطفرات غير المتوقعة في الذكاء الاصطناعي Emergence in AI هو قدرة الذكاء الاصطناعي على اكتساب قدرات ومهارات غير مقصودة أو غير مبرمجة من البداية، تحدث هذه الظاهرة بسبب تعقيد النماذج وزيادة عدد المعاملات Parameters مما يؤدي إلى تأثيراتٍ جانبية تجعل النموذج قادراً على تأدية بعض المهام الغير مدرب عليها بشكلٍ صريح، لن تحدث هذه الظاهرة في النماذج البسيطة والأصغر حجمًا، لكن هناك مخاوف من إمكانية ظهور بعض المخاطر والتعقيدات الناتجة عند حدوث هذه الظاهرة في نماذج الذكاء الاصطناعي المتقدمة، على سبيل المثال يمكن أن نفقد السيطرة على هذه النماذج بحيث تنتج ردوداً تخالف القواعد العامة أو ردودًا مؤذية أو عنصرية بشكلٍ غير مقصود من المطور ولم تُدرّب عليها. التضمينات Embeddings التضمينات Embedding هي تمثيلات رقمية تعبر عن الكائنات، والكلمات في متجهات متعددة الأبعاد، تنتج عن طريق خوارزميات التعلم الآلي، وتمتلك القدرة على فهم معاني الكلمة في السياقات المختلفة وتَشابُه التمثيلات الرقمية للكلمات يدل على تشابه في المعنى، وبالمثل في معالجة الصور image processing يمكن ترميز الصور رقمياً كمتجهات ومصفوفات ليسهل تحليلها والقيام بالعمليات الرياضية عليها، تساعد هذه الترميزات الرقمية على القيام بالحسابات اللازمة ، مما يمّكن أنظمة الذكاء الاصطناعي من القيام بمهامٍ مثل فهم اللغات، والتعرف على الصور، وتقديم الاقتراحات بكفاءةً عالية. تصنيف النصوص Text Classification يتضمن تصنيف النصوص Text classification تدريب النموذج على تصنيف النصوص وإعطائها الوسم المناسب من قائمة من الوسوم المعرفة مسبقًا، باستخدام تقنيات مثل معالجة اللغات الطبيعية، يمتلك النظام القدرة على تعلم الأنماط وتحليل السياق التي وردت به الكلمات، من أجل إعطاء توقعات دقيقة على المشاعر التي تعبر عنها النصوص، أو الموضوع، أو القصد من الكلام، وتتمتع مصنفات الذكاء الاصطناعي النصية بالقدرة على معالجة وفهم لغات وسياقات مختلفة للنصوص، مما يمّكنها من التعامل مع مهام مختلفة عابرة للغات بشكلٍ فعال. نافذة السياق Context Window نافذة السياق context window هو مصطلح يشير إلى كمية النصوص أو المعلومات التي يمكن لنموذج الذكاء الاصطناعي معالجتها والرد عليها من خلال إدخالها بشكلٍ نصي، يرتبط هذا المصطلح بشكلٍ وثيق بعدد الوحدات اللغوية Tokens المستخدمة في النموذج، تختلف حجم نوافذ السياق context windows باختلاف النموذج المستخدم، تلعب هندسة النصوص المدخلة prompt engineering دورًا هامًا عند التعامل مع نموذج نافذة سياق محددة، حيث تحتاج لوصف الأوامر المطلوبة بشكلٍ دقيق دون تجاوز الحجم الأقصى لنافذة السياق من الوحدات اللغوية Tokens. ترجمة-وبتصرٌّف-للمقالات Navigating the Vocabulary of Generative AI Series (1 of 3) و ( Navigating the Vocabulary of Generative AI Series (2 of 3 و (Navigating the Vocabulary of Generative AI Series (3 of 3 لصاحبها STUART SCOTT. اقرأ أيضًا كل ما تود معرفته عن دراسة الذكاء الاصطناعي أهمية الذكاء الاصطناعي من هو مهندس الذكاء الاصطناعي وما أبرز مهامه خوارزميات الذكاء الاصطناعي استخدام النماذج التوليديّة Generative models لتوليد الصور
  11. أصبحت أدوات الذكاء الاصطناعي حجر الزاوية في ثورة الذكاء الاصطناعي من تشات جي بي تي Chat GPT إلى كلود Claude 3، وشقت هذه الأدوات طريقها إلى الحياة اليومية والأنشطة التجارية،وقد تمكن كل من الهواة والمحترفين على حدٍ سواء من الاستفادة من هذا التطور في أنظمة المحادثات الآلية chatbots الهواة والمحترفين على حدٍ سواء. فحسب استبيان حديث أجرته شركة DigitalOcean لعام 2023 حول أشهر التقنيات السحابية المستخدمة من قبل المطورين والشركات الصغيرة والمتوسطة رأى 45% من المشاركين في الاستبيان أن أدوات الذكاء الاصطناعي سهلت أداء وظائفهم بشكل كبير، بالمقابل وجد 43% منهم أن هناك تضخيمًا مبالغًا فيه في فعالية هذه الأدوات. يمكن إرجاع هذا التباين الشاسع في آراء المستخدمين لأحد العوامل الأساسية، ألا وهو هندسة الموجهات أو ما يعرف باسم Prompt engineering، فالمُوجَّه أو الأمر الذي تدخله لنموذج الذكاء الاصطناعي يصنع الفارق في جودة الردود التي تحصل عليها وهو ما سيجعل تعاملك معك أكثر سلاسة، أو يجعلك تعاني منه وتحبط من الردود التي لا تحقق لك مبتغاك، ويجبرك على القيام بالمهمة بنفسك دون استخدام أدواته، ومع تقدم ثورة الذكاء الاصطناعي بشكل متسارع، تزداد أهمية مهارة هندسة المُوجِّهات كمجالٍ متميز، حيث أصبحت وظيفة مهندس الموجهات Prompt engineering من الأكثر طلباً ودخلاً في أوساط الشركات. سنتعمق في مقال اليوم في الحديث عن هندسة المُوجِّهات Prompt engineering، ونوفر لك دليلاً شاملاً عن أفضل الممارسات، وبعض الأمثلة التي ستساعد نشاطك التجاري على استخراج أقصى فائدة ممكنة من تلك النماذج اللغوية الضخمة (large language models). ما هي هندسة المُوجِّهات؟ هندسة المُوجِّهات prompt engineering هي طريقة تصميم وتحسين صياغة الأوامر النصية أو التوجيات المُدخلة للنموذج اللغوي بحيث تحسن من النتائج التي ينتجها النموذج لتناسب احتياجات وأهداف المستخدم، وتتطلب مزيجاً من القدرة على الإبداع وإدراك قدرات النموذج، واستخدام استراتيجيات لصياغة وهيكلة السؤال بطريقة توجه الذكاء الاصطناعي لتوفير ردٍ دقيق ومفيد، ولا يقع خارج سياق التوجيه المُدخل له، تحسن هندسة المُوجِّهات من التفاعل الجيد بين البشر والآلات بحيث تضمن جودة وفعالية التفاعل مع الآلة. ما أهمية هندسة المُوجِّهات؟ تنبع أهمية هندسة المُوجِّهات Prompt engineering من قدرتها على التأثير على أداء نماذج الذكاء الاصطناعي، فجودة الأوامر التي تدخلها للنموذج ستضمن لك الحصول على ردود أكثر دقة وصلةً بالسؤال المطروح، وهذا يجعل هندسة المُوجِّهات مهارة جوهرية اليوم لأي شخص يحاول الاستفادة من أدوات الذكاء الاصطناعي بشكلٍ فعال، ولا تقتصر هندسة المُوجِّهات على من يتخذها وظيفةً، حيث يمكن لأي شخص يطمح في استخدام أدوات الذكاء الاصطناعي للحصول على أفكار وملاحظات أو حل مشكلات معينة أن يستخدم تقنيات هندسة المدخلات لِيتفاعل مع تلك الأدوات بشكلٍ احترافي. بعض الأسباب التي تجعل هندسة المُوجِّهات في غاية الأهمية: تحسين الدقة: فالمٌدخلات المكتوبة بطريقةٍ متقنة توجه النموذج لتوليد إجابات أكثر دقة وأيضاً أكثر صلة بالمدخلات والسؤال المطروح. توفير الوقت: تُسهّل عملية هندسة المُوجِّهات Prompt engineering من الوصول إلى النتيجة المرغوبة في عدد رسائلٍ أقل، مما يوفر معاناة شرح المطلوب وتعديل أخطاء النموذج في محادثة لانهائية قد لا تقودك لنتيجة مرضية. تسهيل القيام بالمهام المعقدة: تتطلب المهام المعقدة فهمًا عميقًا للمتطلبات واستيعابًا لتعقيد المشكلة، فالمُوجّهات النصية الجيدة تسهل على النموذج التعامل مع المطلوب بشكلٍ أوضح. تحسين تجربة المستخدم: عن طريق توفير إجابات ذات صلة بالموضوع وموثوقة. مخرجات أكثر قيمة: يساعد استخدام هندسة المُوجِّهات Prompt engineering بشكل صحيح في بعض المجالات كالبرمجة، وصناعة المحتوى، وتحليل البيانات إلى توليد نتائج وردود أكثر قيمةً وجودة. الاستخدام الفعال: من خلال تعزيز فهمنا لكيفية التواصل مع الذكاء الاصطناعي، يمكننا تجاوز القيود الحالية وابتكار حلول إبداعية توسع قدرات الذكاء الاصطناعي وتزيد كفاءته. توفير التكلفة: بعض النماذج والأدوت متاحة للاستخدام بشكلٍ محدود أو بتكلفة مادية، لذا فإن القدرة على الوصول لردٍ ذي صلة ودقيق بعدد محاولات أقل يمكن أن يوفر عليك التكلفة المادية. أفضل 10 ممارسات في هندسة المُوجِّهات إن صياغة أوامر أو توجيهات نصية prompts فعالة لنماذج الذكاء الاصطناعي من شأنها تحسين جودة الردود المنتجة، وزيادة صِلتها بالمُوجّه أو السؤال المطروح، ولأجل اكتساب هذه الخبرة في صياغة المدخلات النصية أنت بحاجة لفهمٍ جيدٍ لكيفية معالجة الذكاء الاصطناعي لهذه الموجهات وتفسيرها. في النقاط العشرة التالية، سنكتشف معاً أفضل الممارسات التي سوف تساعدك في التواصل الفعال مع الذكاء الاصطناعي وكيف تكتب موجهات prompts عالية الجودة. 1. كن محدداً قدر المستطاع احرص على كتابة مُوجِّه محدد بشكلٍ واضح ودقيق، فهذا هو المفتاح للحصول على أكثر المعلومات دقة وصلة من الذكاء الاصطناعي، فتحديد المتطلبات يزيل الغموض ويُضيّق نطاق البحث لدى الذكاء الاصطناعي، ولتحقيق هذا الشرط أنت بحاجة لإرفاق أكبر قدر من المعلومات ذات الصلة دون تحميل الذكاء الاصطناعي أية معلومات غير ضرورية، فإرفاق معلوماتٍ ليست ذات صلة بطلبك الحالي من شأنه أن يشتت ردود الذكاء الاصطناعي ويبعده عن مرادك، فالتوازن في كتابة مُوجِّه Prompt محدد يوجه الذكاء الاصطناعي إلى استخدام المعلومات الكافية فقط وتوليد إجابة دقيقة وذات صلة بالموضوع المطروح. بعض الأشياء الضرورية التي عليك توضيحها في المدخلات النصية توضيح السياق: قم بتوضيح خلفية الموضوع وتوفير المعلومات الكافية لفهم مجرى الأحداث التي تتساءل عنها، هذا يشمل الموضوع، وحجم الموضوع، وأية معلومات ذات صلة عن القيود المفروضة كأن تطلب منه على سبيل المثال توفير معلومات مقيدة بفترة زمنية معينة (آخر 5 سنوات على سبيل المثال). التنسيق المطلوب: قم بتوضيح التنسيق الذي ترغب فيه، مثلًا يمكن أن تكون الإجابة مرتبة على هيئة قائمة من النقاط، أو تقرير مفصلٌ، أو تلخيص، أو شيفرة برمجية، أو غيرها من التنسيقات وأنواع الملفات، وضح أيضاً تفضيلاتك عن العناوين والعناوين الفرعية وحجم الفقرات وغيرها من التفاصيل التنسيقية. حجم الإجابة المطلوبة: هل ترغب في إجاباتٍ مطولة أم إجابات مختصرة تتكون من نقاط واضحة عليك تحديد كل هذه التفاصيل كأن تطلب على سبيل المثال توليد ثلاثة فقرات أو إجابة بطول 250 كلمة. مستوى التفصيل: قم بتحديد مدى تعمق الإجابات، فيمكن أن تكون الإجابة سطيحة للتعريف بالموضوع بشكلٍ عام، ويمكن أن تكون تحليلًا متعمقًا في الموضوع، هذه النقطة مهمة لضمان توفير النموذج للقدر الذي تحتاجه من المعلومات. أسلوب الصياغة وطريقة الكتابة: حدد أسلوب الكتابة المناسب لاحتياجاتك، قد تكون الكتابة بشكلٍ رسمي، أو غير رسمي، أو بشكلٍ علمي، أو بشكلٍ أدبي، أو بشكل محادثة، أو غير ذلك، حيث تختلف الأساليب الممكنة باختلاف الجمهور المستهدف ونوع الكتابة. أمثلة ومقارنات: اطلب من الذكاء الاصطناعي توفير أمثلة ومقارنات من أجل توضيح المفاهيم المعقدة بشكلٍ أفضل، وتوفير معلومات مبسطة وذات صلة يسهل فهمها. 2. عزز الذكاء الاصطناعي بالأمثلة إن إرفاق الأمثلة في المُوجِّهات يعد تقنية قوية لتوجيه استجابات الذكاء الاصطناعي نحو المطلوب. فمن خلال توفيرأمثلة ضمن المُوجِّه فإنك تحدد مسبقًا نوع المعلومات أو الاستجابة التي تتوقعها وتربط بين المعلومات المتاحة لدى النموذج عن المثال الموجود بالفعل وطلبك. وهذه الطريقة مفيدة بشكل خاص للمهام المعقدة التي يكون المطلوب فيها غامضًا، وللمهام الإبداعية التي تحتوي على أكثر من إجابة صحيحة. وعندما تزود الذكاء الاصطناعي بهذه الأمثلة، تأكد من أنها تراعي جودة وأسلوب النتيجة المطلوبة وبهذا تساعد الذكاء الاصطناعي على نمذجة استجاباته بناء على هذه الأمثلة المقدمة، مما يؤدي إلى ردود ومخرجات أكثر دقة وتفصيلاً. إليك بعض أنواع الأمثلة التي يمكنك توفيرها للذكاء الاصطناعي لتساعده في توليد أفضل استجابة ممكنة: أرفق عينات من النص: يمكنك أن توفر عينة نصية تتبع الأسلوب الكتابي الذي ترغب من النموذج أن يتبعه عند توليد إجابة. وضح تنسيق البيانات: يمكنك توضيح تنسيق البيانات المخرجة وهياكلها، مثلًا يمكن أن تطلب منه وضع المعلومات في جداول أو قوائم. وفر القوالب الجاهزة: يمكنك توفير قالب جاهز لضمان توليد إجابات تتبع التنسيق والهيكل المطلوب. اكتب مقتطفات من الشيفرة البرمجية: إذا كان سؤالك متعلقًا بمشكلةٍ برمجية فمن الجيد توفير مقتطفات من الشيفرة البرمجية لضمان اتباع النموذج لقواعد اللغة البرمجية وتوليد شيفرات برمجية لهذه اللغة وليس لغيرها. وفر الرسومات البيانية والتوضيحية: إذا كنت ترغب في جعل الذكاء الاصطناعي يولد لك رسمًا بيانيًا فعليك توفير رسوماتٍ بيانية أو توضيحيةٍ مشابهة لما تحاول الوصول إليه. وفر المعلومات التسويقية: إذا كنت تستخدم الذكاء الاصطناعي لتوليد محتوى تسويقي، وفر له المعلومات التسويقية عن المنتج الخاص بك لتناسب النتائج التي يولدها هوية النشاط التجاري الذي تصمم له محتوى تسويقي. 3. وفر البيانات لتحصل على إجابات أفضل يساعد توفير المعلومات والبيانات ذات الصلة بالموضوع على تحسين جودة الإجابات المولدة بشكلٍ ملحوظ، حيث توفر البيانات أساسًا قويًا للذكاء الاصطناعي ليفهم السياق وِيتمكن من صياغة إجابة دقيقة، كما يسمح توفير البيانات التي تحتوي أرقامًا، وتواريخًا، وتصنيفات بشكلٍ منسق وهيكلٍ واضح بتوفير إجابات مفصلة تحليلية تساعد في اتخاذ القرارات، لذا من الضروري وضع البيانات في السياق المناسب لها، وتوفيرها عندما تكون متاحة، مع إرفاق مصدرها، فهذا يضيف نوعًا من المصداقية والثقة في المقارنات والتحليلات الكمية للبيانات. ولتتأكد من أن الذكاء الاصطناعي قادر على توفير إجابات مفيدة وذات صلة، استخدم دائماً بيانات ومعلومات محدثة ومنظمة بشكلٍ جيد، وفي حالة المقارنات تأكد من توضيع عوامل المقارنة. فتوفير البيانات في السياق المناسب لها يزود الذكاء الاصطناعي بالقدرة على توفير إجابات قابلة للتنفيذ، واتخاذ قرارات فعالة مبنية على الأرقام، فالمدخلات النصية المرتكزة على البيانات قيّمة للغاية في المهام التي تتطلب تعمقاً تحليلياً للأرقام، وهي تُمكّن الذكاء الاصطناعي من توليد مخرجات مفيدة للنشاط التجاري وتوافق استراتيجياته التجارية. 4. حدد هيئة النتائج التي تفضلها عند التعامل مع الذكاء الاصطناعي من المهم توفير التنسيق المناسب والمتوقع للاستجابات، حدد على سبيل المثال فيما إذا كنت ترغب في الحصول على الإجابة على هيئة تقرير، أو ملخص، أو قائمة من النقاط أو غيرها من التنسيقات التي تضمن الحصول على الإجابة بالصيغة والتنسيق المناسبين. 5. استخدم صيغة "افعل" بدلاً من "لا تفعل" عند صياغة المُوجِّهات للذكاء الاصطناعي من الأفضل توجيه الذكاء الاصطناعي نحو الفعل المناسب بدلاً من شرح ما عليه تجنبه، حيث يقلل هذا الأسلوب من الغموض ويُمكّن الذكاء الاصطناعي من توليد إجابات مفيدة وذات صلة بالموضوع، حيث تطلب التعليمات السلبية من الذكاء الاصطناعي أن يفهم الأمر ويقوم بعكسه، مما قد يزيد من احتمالية حدوث سوء فهم أو تشتت النموذج بالتركيز على ما نهي عنه، لذا كن واضحاً في تحديد الأفعال المطلوبة، لتمكن الذكاء الاصطناعي من الوصول للإجابة بشكلٍ فعال ومباشر. 6. اجعل الذكاء الاصطناعي يتقمص دور شخصية أو مرجعية محددة من المفيد توجيه الذكاء الاصطناعي لِيتقمص شخصية أو دورًا محددًا بحيث تكون هذه الشخصية هي المرجع له، تزيد هذه الاستراتيجية من فعالية ودقة مخرجات الذكاء الاصطناعي، وتساعد على توجيه الذكاء الاصطناعي لتوليد إجاباتٍ ذات صلة بهذه الشخصية. تفيد هذه الطريقة للغاية في سياق الأنشطة التجارية التي تتطلب معرفة بالمجال والسوق، وتمّكنك من توجيه الذكاء الاصطناعي لِيستخدم المصطلحات والأساليب المناسبة للسياق وبالتالي لِلمجال المطلوب بما يتوافق مع مجرى الأحداث، يساعد تحديد الشخصية أو المرجعية أيضاً في توضيح التوقعات والتفاعلات المناسبة مع الذكاء الاصطناعي ويحسن تجربة المستخدم. 7. جرب تسلسل المُوجِّهات سَلسَلة المُوجِّهات Prompt chaining هي تقنية تعتمد على دفع الذكاء الاصطناعي لتفسير إجاباته وتفصيلها بشكلٍ أوضح، عن طريق توجيهه من خلال الأوامر النصية ليناقش الخطوات التي اتخذها للوصول للإجابة واستنتاجها، تمكنك هذه الطريقة المستخدمين من فهم المنطق ومدى صحة الإجابة. يفيدك هذا الأسلوب للغاية عند التعامل مع المشكلات المعقدة أو مناقشة الأسباب التي أدت لتوليد الإجابة، حيث تضمن مستوى أعمق من حل المشكلات وفهمها ومراحل التوصل إليها، مما يُمكّن المستخدم من التعلم من طريقة إيجاد الذكاء الاصطناعي للحل. 8. قَسِّم المهام المعقدة إلى مهام أبسط عند التعامل مع المهام المعقدة، فسيساعدك تقسيمها إلى مهام في جعلها أبسط وأسهل في التعامل يجعل الذكاء الاصطناعي قادرًا على حل تلك المشكلات المعقدة، باستخدام خطوات من التعليمات التي تمنع من تشتت الذكاء الاصطناعي عن هدفه وتسهل من مهمته المطلوبة، مما يضمن أن كل جزء من المهمة الأكبر ينجز بدرجة عالية من الدقة والاهتمام بالتفاصيل. إضافةً إلى أن هذه الطريقة تسهل من عملية مراقبة وتعديل كل مهمة على حدة، حيث يمكن تعديل كل خطوة وتحسينها بشكل يرفع من الجودة الكلية لحل هذه المشكلة، وتقسيم المهام إلى أجزاء أصغر يمكن الذكاء الاصطناعي من استخدام الموارد بشكل أكثر فعالية وتوفيراً، حيث يمكننا أن نركز على الخطوات الأهم التي تطلب تركيزًا أكبر. 9. أدرك حدود نموذج الذكاء الاصطناعي وقدراته عند صياغة مُوجِّهات الذكاء الاصطناعي، من الضروري أن تعرف جيدًا حدود إمكانيات نموذج الذكاء الاصطناعي لوضع توقعات واقعية، فتكليف الذكاء الاصطناعي بمهام ليس مصممًا للقيام بها، مثل التفاعل مع قواعد بيانات خارجية أو توفير تحليل بيانات في الوقت الحقيقي سوف يؤدي إلى إجابات غير دقيقة وتعاني من ظاهرة تسمى الهلوسة Hallucination. بعض حدود إمكانيات الذكاء الاصطناعي: لا يمتلك الذكاء الاصطناعي القدرة على الوصول إلى معلومات في الوقت الحقيقي، فمعرفة النموذج تنتهي إلى آخر تحديث تم تدريبه فيه. لا يمتلك القدرة على الوصول إلى البيانات الشخصية ما لم توفرها بشكل صريح خلال التفاعل مع النظام. لا يمتلك القدرة المباشرة على التفاعل أو استخدام برامج خارجية مثل قواعد البيانات، أو المتصفحات يولد إجابات غير مفيدة في حال عدم توفر سياق واضح عند التعامل مع المواقف المعقدة. لا يمتلك القدرة على امتلاك المشاعر أو التعاطف بشكل حقيقي ولا يمتلك القدرة على تكوين تجربة شخصية. 10. استخدم الأسلوب التجريبي في تحسين نموذج الذكاء الاصطناعي يعتمد مجال هندسة المُوجِّهات Prompt engineering الصاعد بشكلٍ كبير على عقلية التجربة المستمرة، تجربة دائمة لطرق جديدة وصياغات مختلفة، حيث من الأفضل أن تُطور صياغة المدخلات النصية في دورات متتالية تتحسن فيها الصياغة وجودة الردود بشكل متتابع، لاحظ بدقة تأثير التغيرات التي تجربها في الصياغة على أداء نماذج الذكاء الاصطناعي وتعلم كيف تتغير إجابات النماذج بتجربة المدخلات المختلفة وتأثير التعديلات عليها. لا تتردد في استكشاف الاحتمالات المختلفة لصياغات مختلفة لتكتشف المدخلات النصية الأكثر فعالية للقيام بمهمة محددة دون أن تخالف أخلاقيات الذكاء الاصطناعي أو خصوصية البيانات، فاستراتيجية المحاولات التجريبية والتعلم من الأخطاء تساعدك في إتقان هندسة الموجهات وتمكنك من صياغة موجهات أكثر كفاءةً وتزيد من فهمك بشكلٍ عام لكيفية عمل نماذج اللغات الضخمة وطريقة تفسيرها للأوامر وتفاعلها مع التعليمات المختلفة. الخلاصة تعرفت في مقال اليوم على المقال يبرز أهمية هندسة المُوجِّهات (Prompt Engineering) ودورها في رفع كفاءة أدوات الذكاء الاصطناعي وأهم النصائح والممارسات التي تساعدك على صياغة مُوجِّهات عالية الجودة تمكنك من الحصول على نتائج دقيقة وملاءمة لمتطلباتك. احرص على تطبيق هذه الممارسات في تفاعلك مع نماذج الذكاء الاصطناعي، فمن شأنها أن تعزز استفادتك من هذه النماذج وتزيد إنتاجيتك وتحسن كفاءة عملك. ترجمة-وبتصرٌّف-للمقال Prompt Engineering Best Practices: Tips, Tricks, and Tools اقرأ أيضًا مصطلحات الذكاء الاصطناعي للمبتدئين تعلم الذكاء الاصطناعي أهمية الذكاء الاصطناعي إيجابيات وسلبيات الذكاء الاصطناعي برمجة الذكاء الاصطناعي
  12. نستعرض في مقال اليوم أمثلة على الذكاء الاصطناعي ونسلط الضوء على الاستخدامات المتنوعة لهذه التقنية الرائدة في حياتنا اليومية وفي مختلف الصناعات. فقد ازداد الاعتماد على الذكاء الاصطناعي بشكل كبير في الآونة الأخيرة وأصبح من المهم معرفة الطرق المختلفة لاستخدام الذكاء الاصطناعي في تأدية مهامنا المختلفة والاستعانة به لزيادة كفاءتنا وإنتاجيتنا. زيادة الاعتماد على الذكاء الاصطناعي وفق مؤشر شركة IBM لتبني تطبيقات الذكاء الاصطناعي الصادر في نوفمبر من العام 2022 تبنت أغلب الشركات تقنيات الذكاء الاصطناعي في أعمالها بنسبة بلغت 43% من الشركات المشاركة في الاستبيان، في حين تدرس 40% من الشركات الباقية استخدام الذكاء الاصطناعي في أعمالها، ولا شك أن هذه الإحصائيات تدل على إدراك شركات الأعمال لأهمية استخدام الذكاء الاصطناعي في تطوير أعمالها وزيادة أرباحها، وضرورة استخدام التقنيات الذكية لتعزيز التنافسية في السوق المتنامي للذكاء الاصطناعي واستثمار الفرص الواعدة فيه. وحتى بالنسبة للأفراد أصبح استخدام أدوات الذكاء الاصطناعي أمرًًا أساسيًا بالنسبة للكثير من الأشخاص اليوم وأداة مهمة لإنجاز أعمالهم وتعزيز إنتاجيتهم ، ولهذا السبب ازاد الطلب على أدوات الذكاء الاصطناعي وتطبيقاته في مختلف المجالات، وسنتعرف في الفقرات التالية على تطور الذكاء الاصطناعي ثم نستعرض أبرز الأمثلة على الذكاء الاصطناعي واستخدماته في قطاعات متنوعة مثل التعليم والصحة وإدارة الأعمال والتسويق وغيرها من الأمثلة العديدة الأخرى. تطور الذكاء الاصطناعي وضحنا في مقال سابق ما هو الذكاء الاصطناعي (AI) وتاريخ تطوره وذكرنا أنه تقنية تُمكّن الحواسيب وغيرها من الآلات القابلة للبرمجة على محاكاة الذكاء البشري في القدرة على الفهم والإدراك وربط الأسباب ببعضها البعض والتعلم والتفاعل مع بيئتها، والتكيف مع التغيرات لحل المشكلات بشكلٍ إبداعي. وقد تطور الذكاء الاصطناعي بشكل كبير في السنوات الأخيرة، وأجريت الكثير من الأبحاث العلمية المتعلقة بتقنياته مع التركيز على النماذج اللغوية الضخمة Large Language models التي مكنت الحواسيب من التفاعل بسهولة مع البشر وفهم لغتهم بشكل أفضل، هذا فتح الباب على مصراعيه لظهور أمثلة على الذكاء الاصطناعي المتطور القادر على التفاعل مع البشر إجراء محادثات ذكية معه بلغتهم، مثل تطبيق المحادثة الذكي ChatGPT الذي استحوذ على نسبة كبيرة من سوق أدوات الذكاء الاصطناعي. ولم يقتصر هذا التطور فقط على قدرات الذكاء الاصطناعي اللغوية، بل شمل أيضاً القدرات البصرية والقدرة على إنشاء محتوى جديد ما أكسبه نوعاً من الإبداع، فيمكنك بمجرد وصف الصورة التي في مخيلتك، وكتابة هذا الوصف للنموذج التوليدي على هيئة مُوجّه (prompt) الحصول على صورة احترافية إبداعية قريبة مما تخيلته وربما تتجاوز توقعاتك في غضون ثوانٍ! فالآلات اليوم باتت ذكية جدًا وقادرة على فهم المعاني وراء الكلمات والنصوص، كما أنها واستخراج المعلومات من البيانات البصرية كالصور ومقاطع الفيديو بل وحتى إنشاء المحتوى المكتوب والمرئي والمسموع بجودة جيدة وتتحسن بشكل سريع للغاية. وبفضل الاستثمارات الضخمة التي تحاول ضمان حصة قوية في سوق الذكاء الاصطناعي فإن هذا التخصص في حالة تطور متسارع، حتى أنه يعد اليوم أحد أسرع التقنيات نموًا ويتوقع أن يزداد نموه، وتزاد أهميته والاعتماد عليه في المستقبل. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن دعنا نستعرض تاليًا أهم الأمثلة على الذكاء الاصطناعي وتقنياته المطبقة في مختلف المجالات. أمثلة على تطبيقات معالجة اللغات الطبيعية بالذكاء الاصطناعي تتنوع الأمثلة على تشغيل الذكاء الاصطناعي ومجالاته المختلفة في مختلف القطاعات، ومن أبرز هذه المجالات معالجة اللغات الطبيعية Natural Language Processing (NLP)‎ التي تعني فهم الآلات للغة البشرية وقدرتها على معالجتها ويفيد تطبيق هذا المجال في العديد من المهام المتعلقة بمعالجة النصوص أو الكلام البشري كتحليل المشاعر للنصوص المكتوبة، وتلخيص الفقرات الطويلة، وإنتاج أو توليد محتوى نصي، وفهم الأسئلة والإجابة عليها، والترجمة الآلية للنصوص وغير ذلك من الأمثلة. كل ما نحتاجه هو إدخال موجه (prompt) يتضمن وصف للمهمة التي نريدها من النموذج لنحصل على النتائج كما لو أن بشريًا ينتجها. وبهذا يمكن الاستفادة من القدرات اللغوية القوية لنماذج الذكاء الاصطناعي الحالية في تطوير أنظمة محادثات ذكية قابلة للتطبيق في مجالات كثيرة ومتنوعة، مثل خدمة العملاء والرد على استفساراتهم بمرونة وفاعلية. أمثلة على تطبيقات الرؤية الحاسوبية بالذكاء الاصطناعي تعد الرؤية الحاسوبية Computer Vision من المجالات المتقدمة للذكاء الاصطناعي، وهناك الكثير من الأمثلة على الاستفادة منها مثل تصنيف الصور Image Classification بسهولة، والتعرف على الكائنات المختلفة وتمييزها في الصور object detection and recognition، وفصلها عن بعضها Image segmentation إلى مجموعات تملك سمات متشابهة، كما يمكن الاستفادة منها في تحسين جودة الصور كإزالة التشويش، أو تحسين الألوان، وكذلك في التعامل مع النماذج ثلاثية الأبعاد التي تشهد تأثيرًا كبيرًا في مختلف الصناعات. ولعل ما يميز مجال الرؤية الحاسوبية اليوم هو قدرتها على معالجة الصور والفيديوهات بسرعة ودقة، واستغلال التطور في المجالات الأخرى للذكاء الاصطناعي مثل معالجة اللغات الطبيعية والذكاء الاصطناعي التوليدي Generative AI في تحسين عمل خوارزميات الذكاء الاصطناعي وتمكنها من أداء مهامها مثل تحديده كائن في الصورة أو إزالته بشكل ذكي للغاية دون الحاجة لتدريب النموذج على صور جديدة ويعرف هذا الأسلوب بالتعلم بصفر أمثلة (zero-shot learning). ولعل نموذج شركة ميتا Meta المعروف باسم نموذج "افصل أي شيء يا سام Segment Anything Model SAM" من أبرز الأمثلة على التطور الكبير في مجال الرؤية الحاسوبية حيث يتيح هذا النموذج القدرة على تحليل وتفسير الصور بشكل متقدم وتحديد وفصل الكائنات بدقة، دون الحاجة لتدريبه على بيانات محددة لهذه الكائنات مسبقاً. ويمكنك تجربة استخدام هذا النموذج في هذا الموقع التجريبي. أمثلة على الذكاء الاصطناعي في التعليم لا تراعي معظم أنظمة التعلم التقليدية الفروق الفردية بين المتعلمين، وتفرض إطاراً موحداً لجميع أنواع الطلاب، وقد لا يكون هذا أفضل طريقة للتعليم، الذكاء الاصطناعي قادر على توفير عملية تعليمية بشكل مخصص مناسب للمتعلم بناءً على تفاعل الذكاء الاصطناعي مع المتعلم، فيمكنه توليد رسومات توضيحية والإجابة على أسئلة المتعلم، كما يمكنه تقييم أدائه وتقديم اقتراحات لتحسين مستواه الدراسي. ويمكن أن يساعد الذكاء الاصطناعي المعلم على تحديد نقاط الضعف في المقررات الدراسية التي يعاني الطلاب في فهمها بشكل جيد، مما يساعده على تحسين محتوى هذه المقررات بشكلٍ موجه وفعال، كما يمكن أن يوفر الذكاء الاصطناعي للمعلمين الوقت للعمل أكثر على تحسين جودة موادهم التعليمية ومحتواه ويساعد في الإجابة على كل تساؤلات الطلاب بشكلٍ فعال في أي وقت وبشكلٍ فوري. كما يمكن الاعتماد على أنظمة المساعدة الذكية (Intelligent Tutoring Systems) التي تعد أشبه بتوفير معلم خاصٍ لديه الخبرة بالمواضيع التي يتعلمها الطلاب ويجيب عن أسئلتهم ويساعدهم في إدراك المفاهيم الصعبة. وهذا قد يكون حلاً مناسباً لتعويض النقص في المعلمين في بعض البلاد والكثافة الطلابية العالية، وقد سارعت العديد من منصات التعلم على الإنترنت التي توفر مواد تعليمية وتدريبية إلى دمج أنظمة ذكاء اصطناعية لتحسن تجربة التعلم على منصاتها ووفرت نظام محادثة ذكي يستطيع الإجابة على أسئلة الطلاب المختلفة ويستفيد من الأسئلة التي يطرحونها في معرفة نقاط الضعف في المحتوى التعليمي وتحسينه. فالذكاء الاصطناعي يوفر حلولاً فعالة ومنخفضة التكلفة لتحسين تجربة التعلم وأساليب التقييم، ويسهل عملية التصحيح الآلي للاختبارات ويوفر تقييمًا دقيقًا لأداء الطلبة. ومع تطور تكنولوجيا الواقع الإفتراضي والواقع المعزز سيكون الذكاء الاصطناعي قادرًا على استخدام هذا التطور لتحسين تجربة التعلم باستخدام هذه التقنيات الحديثة، فيمكنه أن يولد للمتعلم نماذج ثلاثية الأبعاد تساعد الطالب على تخيل المفاهيم التي يتعلمها، وتستخدم هذه التقنيات حاليًا في تعليم التشريح لطلاب الطب ولدراسة الجسد البشري بشكل تفاعلي مع نماذج للجسم البشري ثلاثية الأبعاد. وهناك العديد من الأمثلة الأخرى عن استخدام الذكاء الاصطناعي في مجال التعليم، ويعتقد البعض أن التطور في الذكاء الاصطناعي سوف يستبدل المعلمين لكن هذا غير دقيق، لأن العملية التعليمة نشاط يستلزم تفاعلًا بشريًا واجتماعيًا ولن يكون الذكاء الاصطناعي قادراً على التعاطف مع مشاعر الطلبة أو يمثل قدوة لهم فهو ليس سوى آلة ويقتصر دوره على مساعدة المعلم على تحسين عمله. أمثلة على الذكاء الاصطناعي في الطب يعتبر مجال الطب من المجالات الحيوية، فحياة المريض قد تتوقف على التشخيص الدقيق لحالته في الوقت المناسب، ويمكن للذكاء الاصطناعي المساعدة في تقليل الأخطاء الطبية من خلال توفير تحليلات دقيقة وموثوقة للبيانات الطبية، والاكتشاف المبكر للأمراض، ومراقبة الحالة الطبية للمريض، وتنبيه الطبيب المتابع للحالة بتقرير مفصل عن حالته الحيوية والأدوية التى يتناولها ومدى التزامه بها في المواعيد المحددة، ومن الأمثلة على الذكاء الاصطناعي في الطب الأجهزة القابلة للارتداء مثل الساعات الذكية والأسورة الإلكترونية التي تمتلك مستشعرات لقياس المؤشرات الحيوية مثل نبضات القلب وغيرها مما قد يساعد في اكتشاف أي تدهور مفاجئ في صحة المريض. أمثلة على الذكاء الاصطناعي في تشخيص الأمراض يمكن استخدام خوارزميات الرؤية الحاسوبية المتقدمة في تحليل صور الأشعة الطبية ودمجها مع نظام تقارير يستخدم معالجة اللغات الطبيعية والذكاء الاصطناعي التوليدي لتقديم تقرير مفصل عن الحالة الطبية بعد تحليل الصور والملفات الطبية للمريض. وهناك بعض الأنظمة التي تستخدم أعراض المرض لتشخيص الأمراض وتوفر قائمة بالأمراض المحتملة حيث تستطيع إدخال الأعراض المرضية ليقوم النظام بتوفير قائمة بالأمراض المحتملة وتفاصيل عنها. الذكاء الاصطناعي والروبوتات الجراحية تساعد أنظمة الذكاء الاصطناعي بدمجها مع الروبوتات المتخصصة بالقيام بعمليات جراحية في غاية الدقة، ويمكن تطوير روبوتات طبية متعددة الأغراض، قد يكون هذا حلاً مناسباً للغاية في الحالات الخطيرة للتعامل مع الأمراض المعدية والأوبئة لضمان أمان الطاقم الطبي. تستطيع الروبوتات الجراحية القيام بالعمليات من خلال فتحات صغيرة دون القيام بقطوع كبيرة بسبب قدرتها على استخدام المناظير المزودة بكاميرات والأدوات الدقيقة للقيام بالعمليات الصعبة بدقة بالغة مما يقلل من حجم الجروح ويقلل من الألم والوقت اللازم للتعافي. أمثلة على الذكاء الاصطناعي وتمكين ذوي الاحتياجات الخاصة تعد المساعدات الصوتية (مثل سيري أو أليكسا) وتطبيقات قراءة النصوص من أولى الأدوات التي ساعدت ذوي الاحتياجات الخاصة البصرية ووفرت لهم نوعاً من الاستقلالية، ومع تطور فهم الذكاء الاصطناعي للغة تطورت قدرات هذه المساعدات وبات بإمكانها فهم الحديث بشكل جيد وعرض المعلومات المهمة، كما توفرت مساعدات بصرية تترجم الكلام المنطوق إلى صور أو رسومات باستخدام لغة الإشارة لتساعد ذوي الاحتياجات السمعية. وقد تطور الذكاء الاصطناعي اليوم وأصبح بمقدوره قراءة الأفكار، عن طريق تسجيل الإشارات الكهربية التي ينتجها المخ باستخدام جهاز رصد موجات المخ الكهربية electroencephalogram EEG فيمكن تسجيل الإشارات الكهربية التي ينتجها المخ أثناء التفكير في بعض الأشياء وتكوين قاعدة بيانات، ثم تدريب نماذج التعلم الآلي على التعلم من أنماط الإشارات المختلفة التي ينتجها المخ أثناء التفكير بشيء معين، يمكن أن تتم ترجمة هذه الأفكار إلى كلمات يتم عرضها على شاشات لتساعد الغير قادرين على التواصل أو الحركة على التعبير عن أنفسهم، تواجه هذا النهج بعض التحديات مثل التشويش الناتج أثناء تسجل الإشارات الكهربية للمخ وتبحث شركة Neuralink في تطوير هذه التقنية باستخدام شرائح تزرع داخل المخ لتسجيل الإشارات بشكل أنقى، هناك العديد من المخاطر لتطوير مثل هذه التقنيات ومخاوف قد تكون في محلها، فقدرة الآلة على أن تقرأ الأفكار قد تهدد الخصوصية ومن الممكن أن يساء استخدامها. وقد تم بالفعل تجريب شرائح شركة Neuralink على البشر بشكلٍ محدود وتطوعي، فقد ساعدت الشخص الذي استخدمها على ممارسة بعض الأنشطة مثل لعب الشطرنج بالتحكم بالحاسوب الخاص به من خلال أفكاره وغيرها من الأنشطه الأخرى، لكن لاتزال هذه تقنية تجريبية وخطيرة للغاية ولكنها تعد بالكثير من الإمكانات لتمكين ذوي الاحتياجات الحركية والذهنية. أمثلة على الذكاء الاصطناعي في مجال الصيدلة يعد مجال الصيدلة وتطوير الأدوية من المجالات العلمية المتقدمة للغاية والتى تطلب مليارات الدولارات لاستثمارها للخروج بدواءٍ واحد وسنوات طويلة من البحث والدراسة للتأكد من جاهزية هذا الدواء الجديد ليستخدم من قبل البشر، بعد دراسة كافية وشاملة وتجارب عديدة لضمان أقل التأثيرات الجانبية السلبية لهذا الدواء. ويمكن استخدام الذكاء الاصطناعي في تطوير أنواع جديدة من الأدوية بتكلفة أقل وابتكار مركبات فعالة جديدة ودراسة تأثيراتها الجانبية المحتملة وفعاليتها في نظام محاكاة كما يمكن أن يساعد الذكاء الاصطناعي في توفير بيئة محاكاة لتجربة الكثير من المركّبات الدوائية واكتشاف تأثيرها على الأهداف الحيوية المختلفة إذ يصمم الدواء لاستهداف هدفٍ حيوي مثل أنواع معينة من الخلايا وتصميم هيكل المركبات العلاجية المناسبة لضمان تأثير الدواء على الهدف المحدد وتستخدم في هذه المهمة برامج المحاكاة مثل برامج تصميم هياكل الجزئيات بمساعدة الحاسوب Computer-Aided Molecular Design. وتستخدم نماذج التعلم العميق والذكاء الاصطناعي التوليدي لتصميم هياكل بروتينية جديدة قد تساهم في اختراع مركّبات دوائية فعالة، مثال على هذه النماذج آلفا فولد AlphaFold المتخصص في توقع هياكل البروتينات المختلفة، في الجدول التالي بعض الأمثلة لنماذج التعلم العميق المستخدمة في مجال الأدوية. النموذج الاستخدام AlphaFold آلفا فولد يتوقع هياكل البروتينات Chemputer الحاسب الكميائي يتوقع توافق المركبات الكيميائية مع بعضها ORGANIC عضوي أداة تساعد على توليد مركبات بخواص مرغوبة DeepTox السمية العميقة توقع سمية المركبات الدوائية DeepChem الكيمياء العميقة يساعد على تحليل التوافق الكيميائي بين المركبات المختلفة أمثلة على الذكاء الاصطناعي في التسويق وتحليل آراء العملاء استخدام الذكاء الاصطناعي في التسويق ليس بالشيء الجديد، حيث تستخدم منصات التواصل الاجتماعي البيانات الضخمة التي تمتلكها عن مستخدميها لتقوم بعرض الإعلانات الموجهة لهم بناءً على اهتماماتهم وسجلات تصفحهم، ومع تطور تقنيات الذكاء الاصطناعي زادت الطرق الممكنة لاستخدام الذكاء الاصطناعي في التسويق والإعلانات المخصصة. وتهتم الشركات اليوم بآراء عملائها وترغب دائماً في جعلهم عملاء مستمرين وضمان بقاء سمعة الشركة بشكل جيد، لذلك تحتاج الشركات لمتابعة ومراقبة أي تغير في آراء الجماهير، وهنا تساعد أدوات الذكاء الاصطناعي بتحليل بيانات مواقع التواصل الاجتماعي المختلفة والمنشورات التي تحمل كلماتٍ مفتاحية تعبر عن الشركة لفهم آراء العملاء والجماهير على هذا المنصات، فيمكن دراسة الآراء الإيجابية والسلبية عن منتجٍ معين لتحسين جودة المنتجات وضمان تجربة خدمة عملاء متميزة. كما تساعد أدوات الذكاء الاصطناعي التحليلية على متابعة أهداف الحملات التسويقية من ناحية فهم التعليقات والمشاعر التى تعبر عنها، ودراسة العوامل التي تدفع العميل لشراء منتجات الشركة، مما يساعد على تحديد استراتيجيات أفضل في التسويق والتركيز على نقاط القوة التى تهم العملاء ويبحثون عنها، كما تمكن مدير حملات التسويق من فهم أنواع العملاء بالتالي استهدافٌ أفضل. الذكاء الاصطناعي وإنشاء المحتوى التسويقي يمكن لأدوات الذكاء الاصطناعي توليد محتوى تسويقي يناسب العملاء المختلفين بناءً على تعاملاتهم السابقة والبيانات التى تملكها الشركة أو تستطيع الوصول إليها من أجل استهدافٍ فعال ومناسب لكل عميل، فبدلاً من تصميم صورة واحدة يمكن تصميم عدد من الصور تناسب أنواع مختلفة من المستخدمين واستخدام الذكاء الاصطناعي في عرض الصورة المناسبة لكل نوعٍ من العملاء، ويمكنك الاطلاع على هذا المقال لفهم كيفية استغلال هذه التقنيات بشكلٍ عملي "دليل استخدام ChatGPT API لتحسين خدماتك عبر الإنترنت " تحسين جودة خدمة العملاء باستخدام الذكاء الاصطناعي خدمة العملاء من العوامل التنافسية التي تسعى كل الشركات في تحسينها لضمان قوتها وانتشارها في الأسواق ولاكتساب عملاء دائمين، لذا سترحب الشركات بالاستثمار في أي تحسين ممكن لهذه العملية و تحسين تجربة العنلاء من خلال الذكاء الاصطناعي، ومن أمثلة هذه الأدوات أنظمة المحادثات الذكية قادرة على الرد على أسئلة العملاء المتكررة والإجابة عن أسئلتهم عن مختلف الخدمات والسلع التي تقدمها الشركة. يمكن للشركات على سبيل المثال استخدام نماذج تعلم الآلة لتوقع العملاء الذين يفكرون في إلغاء الاشتراكات ومحاولة تقديم عروض مغرية تشجعهم على البقاء مشتركين في الخدمات التي تقدمها الشركة، كما يمكن دراسة وتحديد احتياجات العملاء والمنتجات التي يبحثون عنها وتطويرها، والاستهداف الذكي باستخدام العروض المناسبة لكل عميل. أتمتة إدارة الإعلانات بالذكاء الاصطناعي أتمتة إدارة الإعلانات أو الإعلانات المبرمجة Programmatic advertising هي طريقة تسمح للشركة بشراء مساحة لعرض الإعلانات أو بيع مساحة إعلانية بشكل آلي، من مزايا هذه الطريقة الإعلانية أنها تستخدم نماذج الذكاء الاصطناعي في توقع المواقع المناسبة لعرض الإعلانات المناسبة لفئات العملاء المستهدفة بشكلٍ آلي مما يوفر التكلفة بشكلٍ كبير مقارنة بطرق التسويق العادية المحكومة بمنصة واحدة وقد لا تصل إلى الجمهور المستهدف. أمثلة على الذكاء الاصطناعي في القطاع المالي لا شك أن تقنيات القطاع المالي financial technology (fintech)‎ تعد اليوم من المجالات الهامة والأسرع نمواً، حيث نجد اليوم أمثلة متنوعة على استخدام الذكاء الاصطناعي في خدمة العملاء وأنظمة تحليل البيانات المالية واتخاذ قرارات صائبة مثل تقرير إعطاء القروض من عدمه بناء على البيانات المستخدمة من قبل نماذج الذكاء الاصطناعي لتحديد المخاطر المحتملة من إقراضهم، ومن المتوقع أن يستمر الذكاء الاصطناعي في النمو والتقدم في هذا المجال، مما يعزز من كفاءة العمليات المالية ويقلل من حدوث الأخطاء البشرية. أمثلة على الذكاء الاصطناعي في الزراعة تُستخدم تقنيات الذكاء الاصطناعي ولا سيما تقنية إنترنت الأشياء IoT في تطوير أنظمة الزراعة الذكية، فيمكن استخدام الرؤية الحاسوبية Computer Vision لاكتشاف الآفات الزراعية وأمراض النباتات ويمكن استخدام كاميرات عادية أو طائرات مسيرة تجمع الصور ومقاطع الفيديو للأراضي الزراعية، ويتم استخدام الذكاء الاصطناعي مدعوما بالبيانات التى تجمعها أدوات الاستشعار والقياس المختلفة في مراقبة نمو المحاصيل لضمان جودتها وخلو التربة أو النباتات من المشاكل التي قد تدمر المحصول أو تؤثر على جودته. الخاتمة تعرفنا في هذا المقال على بعض الأمثلة لتطبيق الذكاء الاصطناعي في مجالات مختلفة مثل التعليم والطب والتسويق والزراعة والقطاع المالي، بعد الاطلاع على هذه الأمثلة المتنوعة، يمكن التنبؤ بزيادة انتشار استخدامات الذكاء الاصطناعي في المستقبل، وتعزيز تطبيق وتشغيل قدراته في توفير حلول ذكية لأغلب القطاعات الاقتصادية والبشرية لتحسين جودة الخدمات المقدمة والتنافسية وتوفير فرصٍ عمل جديدة. نأمل أن تكون هذه المقالة ملهمةً لك للتفكير في استخدامات جديدة للذكاء الاصطناعي في مجالك، ونرحب بأن تشاركنا في التعليقات المزيد من الأمثلة والأفكار. اقرأ أيضًا تطبيقات الذكاء الاصطناعي مصطلحات الذكاء الاصطناعي للمبتدئين من هو مهندس الذكاء الاصطناعي تعرف على أهم كتب الذكاء الاصطناعي المجانية
  13. قبل عقد من الزمن، كان مفهوم الذكاء الاصطناعي (AI) مقتصرًا على كونه تصنيفًا فرعيًّا لأفلام الخيال العلمي الذي تسيطر فيه الآلات وأنظمة الذكاء الاصطناعي المتطورة على البشر ويُنظر إليه على أنه مجرد خيال مستقبلي وليس شيئًا واقعًا يمكن التعامل معه في الحياة اليومية. أما اليوم فقد تطور الذكاء الاصطناعي وصار متاحًا للجميع، فلو سألت أي شخص اليوم ما هو الذكاء الاصطناعي فسيجيبك بأنه علم متطور يوفر العديد من التقنيات الذكية التي تتيح للآلات القيام بمهام عديدة تحتاج إلى ذكاء بشري، ويوفر أدوات عديدة تساعد البشر في إنجاز أعمالهم اليومية بأسلوب يحاكي ذكاءهم مثل التعرف على الصور، أو ترجمة المحتوى، أو تشخيص الأمراض، أو قيادة السيارات …إلخ. تطور الذكاء الاصطناعي من مساعد بسيط لمنافس للإنسان اقتصر الذكاء الاصطناعي في بداياته على بعض التطبيقات التي بدت بعيدة جدًا عن منافسة ذكاء الإنسان، مثل مساعدته في إكمال الجمل بالكلمات المتوقعة، أو توفير نماذج يمكنها لعب بعض الألعاب والتغلب على البشر فيها مثل نموذج آلفا جو AlphaGo الذي تغلب على بطل العالم لي سيدول (Lee Sedol) في لعبة جو GO عام 2016، وآلفا جو AlphaGo هو برنامج حاسوبي طُوّرته شركة DeepMind البريطانية المتخصصة في الذكاء الاصطناعي وهدفه الأساسي لعب لعبة جو المعروفة بتعقيدها واحتوائها على عدد كبير جدًا من الاحتمالات. حين تمكن حاسوب من التفوق على الإنسان في لعبة جو المعقدة للغاية التي تتضمن عدد احتمالات يفوق عدد ذرات الكون المرئي، عُدَّ هذا الأمر إنجازًا تقنيًا هائلًا وطرح الكثير من الأسئلة حول ماهية الذكاء الاصطناعي، وإلى أي مدى سيتطور الذكاء الاصطناعي؟ وهل من الممكن أن تتفوق علينا هذه التقنية التي طورناها بأيدينا؟ لقد تمكن الذكاء الاصطناعي من انتزاع الانتصار أربع مراتٍ من أصل خمس من بطل العالم الأفضل على الإطلاق في هذه اللعبة، وهذا شكل هزيمة صادمة إذ كيف لنابغةٍ في أحد المجالات أن يُهزم مرات عديدة من قبل آلة؟ لكن هل كان آلفا جو AlphaGo حقاً برنامجًا ذكياً أم مجرد برنامج حاسوبي قادر على حساب عدد كبير من الاحتمالات والتعمق فى شجرة من النقلات التى ضمنت انتصاره بسهولة؟ في النقلة ال 37 قام آلفا جو AlphaGo بلعب نقلة رابحة فرصة اختيارها 1 من 10000 وتخالف كل مبادئ البشر وطريقة تفكيرهم، وهذه الحركة التي قد لا يفكر بها أي بشري استطاعت تغيير موازين اللعبة. مصدر الصورة ما هو الذكاء الاصطناعي قبل أن نستعرض ما هو الذكاء الاصطناعي (Artificial Intelligence) من الجيد أن نعرف بداية ما هو الذكاء الطبيعي (Natural Intelligence) أو الذكاء البشري (Human Intelligence) الذي يعبر عن قدرة ذهنية ناتجة من القدرة على التعلم من التجارب، والتأقلم في المواقف الجديدة، والقدرة على استيعاب المفاهيم المجردة، وتسخير المعرفة للتفاعل مع البيئة. وتحاول أنظمة الذكاء الاصطناعي محاكاة تعريف الذكاء البشري لتتمكن من التأقلم و التعامل مع مشكلات جديدة بشكلٍ إبداعي دون برمجة حل مسبق لها في هذه الأنظمة، فَالقدرة على التعميم واستخدام ما تعلمه من مواقف سابقة لتطبيقه على مواقف جديدة ومهامٍ جديدة لم يسبق للآلة التعامل معها يجعلها تستحق وسمها بالذكاء وإن كان اصطناعيًا. يمكننا الآن أن نصل إلى تعريف الذكاء الاصطناعي بعد أن فهمنا ما الذي نحتاجه لوصف الآلة أنها ذكية. فالذكاء الاصطناعي هو تقنية متطورة تُمكِّن الحواسيب والآلات من محاكاة الذكاء البشري في القدرة على الفهم والإدراك، وربط الأسباب ببعضها البعض، والتعلم والتفاعل مع بيئتها بشكل متكيف مع التغيرات لحل المشاكل بشكلٍ إبداعي. يمكننا أن نستخلص مما سبق عدة مفاهيم ينبغي أن تتصف بها أو تملكها الأنظمة الحاسوبية حتى توصف أنها أنظمة ذكية: القدرة على التعلم. القدرة على الإبداع. القدرة على التطور و تعميم التعلم. القدرة على الإدراك. القدرة على الفهم. القدرة على ربط الأسباب. نبذة عن تاريخ تطور الذكاء الاصطناعي في عام 1950، بدأ وضع معايير لتحديد ما هو الذكاء الاصطناعي من خلال اختبار تورينغ Turing test الذي يهدف إلى تحديد إذا كانت الآلة حقاً تتمتع بالذكاء وهو اختبار قائم على قدرة الآلة الذكية أن تجري محادثةً بشكل طبيعي فيظن المختبر أنه يتحدث مع إنسان وليس آلة، لكن لم يستطع آلان تورينغ Alan turing تطبيق مفهومه في ذلك الوقت، فقد كانت القوة الحاسوبية والتخزينية في ذلك الوقت محدودة للغاية وباهظة التكاليف. في عام 1956 عُقد مؤتمر دارتموث الأول للبحث في الذكاء الاصطناعي (Dartmouth Summer Research Project on Artificial Intelligence) الذي ظهر فيه مصطلح الذكاء الاصطناعي بشكل علمي لأول مرة وعُدّ هذا المؤتمر الحدث التأسيسي الذي أطلق تخصص الذكاء الاصطناعي كمجال علمي قائم بذاته. وشهد الذكاء الاصطناعي فترة ازدهار بين عامي 1957 و عام 1974 نظرًا لتطور القدرات الحاسوبية والتخزينة وإتاحتها بشكل أكبر للعامة، وكانت هذه فترة التوقعات المتفائلة بشأن إمكانات الذكاء الاصطناعي، لكن النتائج لم تقابل التوقعات مما أدى إلى فترة ركود في تطور الذكاء الاصطناعي. في الثمانينيات عاد هذا المجال مجدداً للظهور نظرًا للتطور الملحوظ الذي حدث في خوارزميات تعلم الآلة، وبداية ظهور مفهوم التعلم العميق (Deep learning) الذي اقترح تنفيذ مهام الذكاء الاصطناعي بشكل مشابه للطريقة التي يعمل بها الدماغ البشري، لكن لم يدم هذا التطور لفترة طويلة فمازالت القدرات الحاسوبية وكمية البيانات المتوافرة لا تواكب الآمال المرجوة. لاحقًا في فترة التسعينات والألفية الجديدة عاد الذكاء الاصطناعي للساحة، وتحققت الكثير من التطورات والقفزات العلمية في الذكاء الاصطناعي في تلك الفترة، وسبب هذا التطور المتسارع هو التطور الهائل الحاصل في القدرات الحاسوبية والتخزينية التي مكّنت من الاستفادة من خوارزميات الذكاء الاصطناعي المتاحة لأقصى درجة ممكنة. وفي العصر الحالي أصبح الذكاء الاصطناعي من أكثر المجالات البحثية نمواً، وشهد سوق الذكاء الاصطناعي تطورًا متسارع الوتيرة، وأصبح من أكثر التقنيات طلبًا، فقدر حجم سوق تقنيات الذكاء الاصطناعي عام 2024 بحسب ستاتيستا statista بحوالي 200 مليار دولار، ومن المتوقع نمو هذا المجال والطلب عليه في السنوات القادمة ليصل إلى ما يقارب 800 مليار دولار بحلول عام 2030. يُبرز هذا التطور المستمر مدى أهمية الذكاء الاصطناعي وزيادة الاعتماد عليه في مختلف جوانب حياتنا اليومية، ويؤكد على دوره الحيوي في رسم ملامح المستقبل، وتغيير طريقة تنفيذ أعمالنا اليومية وتفاعلنا مع العالم. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن ما هي تصنيفات الذكاء الاصطناعي بعد أن تعرفنا على ماهية الذكاء الاصطناعي وتطوره وما المتوقع من الأنظمة الذكية أن تتسم به، لنتعرف على تصنيف الذكاء الاصطناعي وأنواعه. إذ تصنف الأنظمة الذكية بناءً على تطور قدراتها أو الوظيفة التى تحتاج القيام بها إلى عدة تصنيفات كما توضح الصورة التالية: تصنيفات الذكاء الاصطناعي حسب القوة تتفاوت قدرات الأنظمة الذكية فبعضها يتعامل مع مهام بسيطة وتكرارية لتوفير وقت الإنسان، والبعض الآخر مصمم ليتفاعل مع البشر ويقوم بطيف واسع من المهام لمساعدة الإنسان على اتخاذ القرارات، إذ يصنف الذكاء الاصطناعي بناء على قدرته على محاكاة ذكاء البشر إلى: الذكاء الاصطناعي الضعيف Weak AI الذكاء الاصطناعي القوي Strong AI لنكتشف ما هو الذكاء الاصطناعي الضعيف والقوي وما الفرق بينهما. الذكاء الاصطناعي الضعيف Weak AI الذكاء الاصطناعي الضعيف (Weak AI) المعروف أيضًا بالذكاء الاصطناعي الضيّق (Narrow AI) هو النوع الذي نتعامل معه حاليًا فهو مصمم لأداء مهام محددة أو مجموعة من المهام المرتبطة بها، لكن دون امتلاك وعي أو فهم لها، فهو محدود في نطاقه وقدراته ولا يمكنه امتلاك الإدراك أو التكيف والتفكير بشكل مستقل خارج نطاق المهام التي صمم للتعامل معها. تخيل أن لديك بوت محادثةٍ ذكي دربته كيف يتحدث مع العملاء ويجيب على أسئلتهم المتكررة، سيكون هذا البوت قادراً على فهم اللغة والصيغ المختلفة لطرح السؤال والتعامل مع أسئلة مثل "ما هي ساعات الدوام لديكم؟" أو "هل يمكنني القدوم في الساعة العاشرة لشراء هذا المنتج ؟" وإدراك أنها أسئلة عن أوقات العمل لهذا النشاط التجاري بالتالي الرد على السؤالين رغم اختلاف صياغتهما بنفس الإجابة التي توضح أوقات العمل. لكنه لن يتمكن من الدخول في نقاشات مفتوحة حول النشاط التجاري أو حول مواضيع عامة لا تخص هذا النشاط. الذكاء الاصطناعي القوي Strong AI بالمقابل يتميز الذكاء الاصطناعي القوي (Strong AI) أو ما يعرف أيضاً بالذكاء الاصطناعي العام Artificial general intelligence (AGI)‎ بتطوره وقدرته على القيام بالعديد من المهام المتنوعة بكفاءة تعادل البشر وتحاكي طريقتهم في التعامل مع أي مهمة معرفية. لم تصل البشرية بعد إلى مستوى التعامل مع الذكاء الاصطناعي القوي (Strong AI) الذي يحاكي جميع القدرات البشرية الذهنية. ورغم التقدم الكبير في ماهية الذكاء الاصطناعي وتطور خوارزمياته ونماذجه التي تمكنت من الوصول إلى قدراتٍ مقاربة للبشر وربما تفوقت عليها في بعض المجالات المحددة، إلا أن هذه الأنظمة لا تزال تفتقر إلى الفهم والوعي العامين اللذين يميزان عقلنا البشري. تصنيفات الذكاء الاصطناعي حسب الوظيفة تصنف الأنظمة الذكية حسب الوظيفة ودرجة التعقيد إلى أربعة مستويات، وتتطور تدريجيًا من الأنظمة البسيطة إلى أنظمة أكثر تعقيدًا وأقرب إلى الذكاء البشري وهي كالتالي: الآلات التفاعلية Reactive machines الأنظمة محدودة الذاكرة Limited memory أنظمة نظرية العقل Theory of mind أنظمة الوعي الذاتي Self-awareness لنوضح كل مستوى من هذه المستويات والوظائف التي يمكن القيام بها في كل منها. الآلات التفاعلية Reactive machines هي أنظمة ذكية لا تحتاج لامتلاك ذاكرةٍ للقيام بحل المشكلة التي تواجها، على سبيل المثال عند تصميم نظام ذكي يلعب الشطرنج، سيتحتاج هذا النظام للتعامل مع الموقف المعطى له فقط، وقد يكون هذا الموقف من منتصف المباراة ولكنه يستطيع تقييم الرقعة وقوة تمركز القطع واختيار نقلة تعظم من المكاسب أو تختار موقع استراتيجي بناءً على الموقف الحالي فقط . الأنظمة محدودة الذاكرة Limited memory هي الأنظمة الذكية التي تحتاج إلى تخزين البيانات بشكل مؤقت لاستخدامها في اتخاذ القرارات، فمثلًا عند تصميم نظام ذكي قادر على قيادة السيارات ذاتياً فأنت بحاجة لجمع بياناتٍ عن الطريق واللافتات المرورية والإشارات والسيارات الأخرى القريبة منك ليقوم النظام بالتحكم بالسيارة اعتماداً على البيانات الحالية والموقف الحالي، لن يكون النظام بحاجة للاحتفاظ بمعلومات عن السيارات التي ليست فى نطاق رويته أو سلكت طرقاً أخرى، فهذه الأنظمة تجمع البيانات بشكل مستمر لاتخاذ القرارات بشكلٍ فوري ولا تحتفظ سوى بما يلزم للتعامل مع الموقف الحالي. أنظمة نظرية العقل Theory of mind هي الأنظمة الذكية المتطورة التي تحتاج إلى فهم الأفكار والمشاعر والتفاعل الإجتماعي للقيام بوظيفتها، يمكن اعتبار روبوت المحادثة الذكي ChatGPT نظاماً قادرًا على فهم السياق من النص المرسل له ومعرفة المشاعر وراء تلك الكلمات بدرجة لا بأس بها، فهو قادر على استنتاج الأنماط المرتبطة بمشاعر معينة، لكنه لازال آلة غير قادرةٍ على التعاطف أو الشعور بتلك المشاعر. أنظمة الوعي الذاتي Self-awareness هي أنظمة ذكاء اصطناعي تحتاج إلى فهم المشاعر وتكوين وعي ذاتي للقيام بوظيفتها واتخاذ قرارات بناءً على هذا الوعي وتبريرها، في الوقت الحالي لا توجد أنظمة ذكاء اصطناعي تمتلك وعيًا ذاتيًا حقيقيًا كالبشر، ولكن هناك أبحاث تجري في هذا المجال، فهناك ورقة بحثية نشرت هذا العام بعنوان التعلم من خلال الشرح الذاتي Learning by Self-Explaining اقترحت طريقة تُمكّن أنظمة المحادثات الذكية من تبرير إجابتها بل وحتى انتقادها في سبيل تحسين الردود التي تنتجها. تخصصات الذكاء الاصطناعي لقد تطورت مجالات الذكاء الاصطناعي وتشعبت فروعه وتخصصصاته ولعل أبرزها: 1. تعلم الآلة Machine Learning هو تخصصٌ فرعي من الذكاء الاصطناعي يعني قدرة الآلات على التعلم من خلال البيانات دون برمجتها بشكلٍ مباشر للقيام بمهمة معينة، ويتضمن تعلم الآلة تطوير خوارزميات يمكنها تحليل البيانات واستكشاف الأنماط الموجودة فيها لتكوين معرفة يمكن تعميمها على مهامٍ أخرى. تصنف مهام تعلم الآلة حسب البيانات المستخدمة في التعلم، فإن كانت البيانات المتاحة لديك موسومة Labeled تصبح مهمة التعلم مشرف عليها بشكلٍ آلي وتسمى التعلم مع إشراف Supervised learning حيث يتم استخدام الوسم الموجود في البيانات المستخدمة لتدريب النموذج في تقيم مخرجاته، وأما إن لم تكن البيانات المتاحة للتعلم موسومة تصبح مهمة التعلم دون إشراف Unsupervised learning حيث يحاول النموذج تعلم الأنماط الموجودة في البيانات وتجميع المتشابه منها فيما يعرف بالمجموعات أو العناقيد Clusters. لنفترض أن لديك مجموعة من صور القطط والكلاب وترغب في بناء نموذج تعلم آلة قادر على التفريق بين القطط والكلاب، فوسم البيانات سيكون له تأثير في تحديد نوع خوارزميات التعلم المستخدمة في هذه المهمة، إن استخدمت صورًا موسمة للقطط والكلاب بحيث تكون كل صورة مرفقٌ معها تصنيفها في عملية التدريب فصور القطط ستحمل الوسم قط، بينما صور الكلاب ستحمل الوسم كلب، بالتالي تكون عملية التعلم هنا بإشراف بإستخدام هذه الوسوم، فعندما يقوم النموذج بتوقع الصورة على أنها قط يقارنها بوسمِها الحقيقي لتقييم صحة إجابات النموذج وتحسينها. على النقيض إن قمت فقط بإعطاء النموذج التعلمي البيانات بدون تحديد وَسْم، فَسيتعلم الأنماط المشتركة للقطط ويتعلم أنها مجموعة أو عنقود Cluster منفصل وبالمثل للكلاب فَالمهمة هنا هو معرفة الأنماط المشتركة لكل مجموعة وعددها. 2. التعلم العميق Deep Learning هو تخصص فرعي من تعلم الآلة يتميز باستخدامه الشبكات العصبية الاصطناعية (ANN)‎ التي تحاكي طريقة عمل الدماغ البشري في معالجة البيانات، وتتميز خوارزميات التعلم العميق بقدرتها على الاستفادة من البيانات الضخمة لتحسين جودة نماذج تعلم الآلة، ويرجع هذا لقوة الشبكات العصبية الاصطناعية على تعلم أنماط أكثر تعقيداً من خوارزميات التعلم الآلي التقليدية، بحيث تصل خوارزميات التعلم التقليدية غير المعتمدة على الشبكات العصبية الاصطناعية إلى مرحلة ركود لا تستطيع فيها تعلم أي شيءٍ جديد من البيانات وتواكب تعقيد المشكلة التي أمامها، فالأمر هنا لا يتعلق بجودة البيانات إنما بقدرة الخوارزمية على تعلم الأنماط المعقدة الموجودة في البيانات الضخمة. يقارن الرسم أعلاه بين أداء خوارزميات التعلم التقليدية وخوارزميات التعلم العميق في عدة نقاط عندما يتوفر لديك مقدار قليل من البيانات عليك استخدام التعلم الآلي التقليدي، لأن خوارزميات التعلم العميق تحتاج لحجم بيانات أكبر لتعطى نفس الدقة و الأداء. تصل خوارزميات التعلم التقليدي إلى مرحلة ركود في التعلم أو تطور تطفيف بالرغم من استخدام حجم بيانات أكبر ولا تتمكن من مواكبة تعقيد المشكلة. تتفوق خوارزميات التعلم العميق عندما توفر لها حجمًا هائلًا من البيانات، فكلما استخدمت بياناتٍ أكثر فيها كلما تمكنت من تحقيق أداءٍ أفضل. 3. التعلم المعزز بالتجربة Reinforcement learning هو نوع من مهام تعلم الآلة قائم على التعلم بالتجربة والتفاعل مع البيئة المحيطة، تتفاعل الأنظمة الذكية المدربة بهذه الطريقة مع بيئتها بشكل عشوائي في البداية وبناءً على هذا التفاعل تتوقع الآلة الحصول على مكافأة أو عقوبة، إذ نكافئ النظام على سلوكه اتجاهاً معيناً يضمن له أداءاً أفضل، ونعاقبه على القرارات التي لا ينجز فيها المهمة الموكلة إليه بشكل صحيح. ينتشر استخدام هذا النوع من التعلم الآلي في مجال الروبوتات Robotics وفي ألعاب الذكاء الاصطناعي والواقع الافتراضي وفي أنظمة المحاكاة حيث توجد بيئة يمكن للنظام التفاعل معها. 4. الرؤية الحاسوبية Computer Vision هي أحد المجالات الرئيسية في الذكاء الاصطناعي، حيث تهدف لتعزيز الآلات والأنظمة الحاسوبية بالقدرة على التعامل مع المحتوى البصري مثل الصور ومقاطع الفيديو، ويستخدم هذا المجال تعلم الآلة والتعلم العميق بشكلٍ خاص لتحليل البيانات البصرية الضخمة وتعلم الأنماط المرئية من أجل تمييز هذا النوع من المحتوى وفهمه، وتطبيقات الرؤية الحاسوبية كثيرة للغاية ولعل أبرزها أنظمة تحديد الوجوه والتعرف عليها، وأنظمة تحليل الأشعة الطبية وتشخيص الأمراض. وتعد الشبكات العصبية الالتفافية Convolution Neural Networks أو اختصارًا CNN أحد الأسباب التي ساهمت في تطور هذا المجال فهي تتميز بقدرتها الآلية على استخراج الأنماط الهامة وتعلم أي الأنماط البصرية تحتاج إلى التركيز عليها حتى تمتلك القدرة على التفريق بين الصور، وقبل اختراع هذا النوع من الشبكات العصبية كان على المطورين استخراج المعلومات البصرية والأنماط من الصور بشكل شبه يدوي. 5. معالجة اللغات الطبيعية معالجة اللغات الطبيعية Natural Language Processing‎‎ أو ‎اختصارًا NLP هي أحد التطبيقات الشائعة للذكاء الاصطناعي، وهي مجال حيوي أيضًا ويعتمد على تعلم الآلة والتعلم العميق لبناء فهم جيد للغات الطبيعية والقدرة على التعامل معها. من التطبيقات الشائعة لمعالجة اللغات الطبيعية أنظمة المحادثة الذكية مثل ChatGPT ونماذج التعلم اللغوية الضخمة Large Language Models أو اختصارًا LLMs التي تّدرّبُ مسبقاً على بيانات ضخمة لتمتلك فهماً مبدئياً للغة يُمكَّنها من القيام بمهام لغوية متعددة، نذكر منها تلخيص الفقرات الطويلة والإجابة على الأسئلة والترجمة الآلية وتحليل المشاعر في النصوص، والعديد من التطبيقات الأخرى. الذكاء الاصطناعي التوليدي Generative Artificial Intelligence يتميز الذكاء الاصطناعي التوليدي Generative AI بقدراته الإبداعية وقدرته على إنتاج وإبتكار نصوص جديدة ووسائط أخرى مختلفة كالصور والأصوات ومقاطع الفيديو بناءً على الأنماط التي تعلمها من كميات كبيرة من البيانات. وهو يختلف عن أنظمة الذكاء الاصطناعي التقليدية التي تعتمد على التصنيف أو التنبؤ بناءً على البيانات المدخلة. ذاع صيت الذكاء الاصطناعي التوليدي اليوم لما يتميز به من قدرات فريدة في توليد محتوى إبداعي يشبه المحتوى المولد من قبل البشر، وأصبح له تطبيقات عديدة ككتابة المحتوى التسويقي، وتأليف القصص، وتصميم الصور، وكتابة الشيفرات البرمجية، وغيرها من المهمام التي سرعت إنتاجية البشر. تحديات تطور الذكاء الاصطناعي وحلول مقترحة لنختم المقال بتسليط الضوء على بعض التحديات والتساؤلات المرتبطة بالذكاء الاصطناعي وآفاقه المستقبلية. تهديد الذكاء الاصطناعي للوظائف البشرية لدى الكثير من الأشخاص تخوف من تطورالذكاء الاصطناعي وتساؤلات حول قدرته على استبدال الوظائف البشرية، بكل تأكيد سيغير الذكاء الاصطناعي الطريقة التي تعمل بها الكثير من الوظائف في الوقت الحالي، ليس بشكلٍ مدمر ولكن بشكل مساعدٍ للبشر، فبينما من المرجح اختفاء بعض الوظائف أو تأثرها فممن المؤكد أن الذكاء الاصطناعي سيوفر فرص عملٍ أخرى، شأنه شان العديد من الثورات الصناعية والتقنية على مر التاريخ. الاحتيال والتزوير باستخدام الذكاء الاصطناعي من التحديات الخطيرة التي تواجه الذكاء الاصطناعي استخدامه في عمليات الاحتيال أو التزوير، فيمكن بكل سهولة استخدام تقنية التزييف العميق Deep fake من أجل انتحال شخصية أحد الأشخاص، يمكن مكافحة هذه الجرائم بعدة طرق منها استخدام الذكاء الاصطناعي نفيه لاكتشاف التزييف و تشريع قوانين تضمن حماية الأفراد من الاحتيال. تحيّز الذكاء الاصطناعي قد تعاني بعض أنظمة الذكاء الاصطناعي من التحيز المقصود أو غير المقصود، على سبيل المثال عند بناء أنظمة التعرف على الوجوه وتدريبها على بيانات لصور وجوه بشرية بيضاء البشرة فقط، فلن تكون قادرة على العمل بكفاءة للتعرف على وجوه مختلفة الملامح والألوان، ولمنع تحيز الذكاء الاصطناعي ينبغي الاهتمام بتطويره وتحسين جودة البيانات التي يعتمد عليها للتدريب وجمع بيانات كافية تعبر عن كل الفئات المستهدفة. احتكار تقنيات الذكاء الاصطناعي هناك مخاوف من سيطرة بعض الدول على تقنيات الذكاء الاصطناعي مما سيؤدي إلى تحيز مقصود، فمعظم الأشخاص تستخدم إجابات الذكاء الاصطناعي كأنها شيء مُسلَّم به، لكن الكثير من ردود الذكاء الاصطناعي ليست صحيحة بشكل كامل وأحياناً تكون خاطئة، ولتحسين جودة الإجابات ودقتها يجب دعم الإجابات بمصادر خارجية تؤكد صحة المعلومات، واعتماد تقنية تسمى توليد الإجابات المعززة بالحقائق Retrieval-augmented generation أو (RAG)‎ اختصارًا. الخلاصة تعرفنا في هذا المقال ما هو الذكاء الاصطناعي واستعرضنا مراحل تطوره حتى وصل لهذه القوة والانتشار، وناقشنا أهم تصنيفات الذكاء الاصطناعي وتخصصاته، وختمنا المقال بالحديث عن بعض التحديات والمخاوف المرتبطة بتطور الذكاء الاصطناعي في المستقل وتأثير الاعتماد المتزايد عليه في تنفيذ أعمالنا ومهامنا البشرية. نرجو أن يكون هذا المقال قد قدم لك إجابات شاملة حول ماهية الذكاء الاصطناعي ووضح له أهم المفاهيم والتخصصات المرتبطة به. وإذا كان لديك أي أسئلة أو استفسارات حول ما ورد في المقال، فلا تتردد في كتابتها في قسم التعليقات أسفل المقال. اقرأ أيضًا أساسيات الذكاء الاصطناعي: دليل المبتدئين تعلم الذكاء الاصطناعي: دليل شامل تعرف على أفضل دورات الذكاء الاصطناعي تعرف على أهم مشاريع الذكاء الاصطناعي برمجة الذكاء الاصطناعي: بناء مستقبل الآلات الذكية
×
×
  • أضف...