نماذج ومنصات الذكاء الاصطناعي

ChatDev: وكلاء يتواصلون لتطوير البرمجيات

mm
أضف Unite.AI إلى مصادرك المفضلة على Google
ChatDev : AI Assisted Software Development

صناعة تطوير البرمجيات هي مجال يعتمد في كثير من الأحيان على الاستشارة والحدس، وتتميز بالاستراتيجيات المعقدة للاتخاذ القرارات. بالإضافة إلى ذلك، يتطلب تطوير البرمجيات وصيانتها وتشغيلها نهجًا منظمًا ومدروسًا. من الشائع أن يتخذ مطورو البرمجيات القرارات على أساس الحدس بدلاً من الاستشارة، اعتمادًا على تعقيد المشكلة. في محاولة لتحسين كفاءة الهندسة البرمجية، بما في ذلك فعالية البرمجيات وتكلفة التطوير المنخفضة، يبحث العلماء في استخدام الإطارات القائمة على التعلم العميق لمواجهة مهام مختلفة في عملية تطوير البرمجيات. مع التطورات والتطورات الحديثة في مجالات التعلم العميق والذكاء الاصطناعي، يبحث المطورون في طرق لتحويل عمليات تطوير البرمجيات والممارسات. إنهم يفعلون ذلك من خلال استخدام التصاميم المتطورة المطبقة في مراحل مختلفة من عملية تطوير البرمجيات.

اليوم، سنناقش ChatDev، وهو نهج مبتكر يعتمد على نموذج اللغة الكبيرة (LLM) يهدف إلى ثورة مجال تطوير البرمجيات. يهدف هذا المنهج إلى القضاء على الحاجة إلى نماذج متخصصة خلال كل مرحلة من مراحل عملية التطوير. يستخدم إطار ChatDev قدرات إطارات LLM، مستخدمًا التواصل اللغوي لتوحيد وتبسيط العمليات الرئيسية لتطوير البرمجيات.

في هذه المقالة، سنستكشف ChatDev، وهي شركة افتراضية متخصصة في تطوير البرمجيات. يعتمد ChatDev على نموذج الشلال و يقسم بعناية عملية تطوير البرمجيات إلى أربع مراحل رئيسية.

  1. التصميم.
  2. البرمجة.
  3. الاختبار.
  4. التوثيق.

كل واحدة من هذه المراحل تُشرك فريقًا من الوكلاء الافتراضيين مثل مبرمجي الشيفرة أو مختبري البرمجيات الذين يتعاونون مع بعضهم البعض باستخدام الحوارات التي تؤدي إلى تدفق عمل سلس. يعمل سلسلة المحادثة كوسيط، و يقسم كل مرحلة من مراحل عملية التطوير إلى مهام فرعية ذرية، و يسمح بدور مزدوج، و يسمح بمقترحات و تحقق الحلول باستخدام اتصالات متواصلة مع السياق التي تمكن المطورين من حل المهام الفرعية المحددة.

ChatDev : تطوير برمجي مساعد بالذكاء الاصطناعي

تظهر التحليلات الهيكلية لـ ChatDev أن إطار ChatDev ليس فقط فعالًا جدًا في إكمال عملية تطوير البرمجيات، ولكن أيضًا فعال من حيث التكلفة، حيث يكمل عملية التطوير بالكامل في أقل من دولار. بالإضافة إلى ذلك، لا يكتشف الإطار فقط النقاط الضعيفة المحتملة، بل يخفف أيضًا من الهلوسات المحتملة، مع الحفاظ على الكفاءة العالية و التكلفة الفعالة.

ChatDev : مقدمة في تطوير البرمجيات المدعوم بالنماذج اللغوية الكبيرة

تقليدًا، تعتمد صناعة تطوير البرمجيات على أسس منهجية و منضبطة، لا فقط لتطوير التطبيقات، ولكن أيضًا لصيانتها وتشغيلها. تقليدًا، عملية تطوير برمجية نمطية هي عملية معقدة و طويلة الأمد، و تحتاج إلى دورات تطوير طويلة، حيث هناك أدوار متعددة في عملية التطوير، بما في ذلك التنسيق داخل المنظمة، و تخصيص المهام، و كتابة الكود، و الاختبار، و أخيرًا، التوثيق.

في السنوات القليلة الماضية، مع مساعدة النماذج اللغوية الكبيرة (LLM)، حقق مجتمع الذكاء الاصطناعي إنجازات كبيرة في مجالات الرؤية الحاسوبية و معالجة اللغة الطبيعية، و بعد التدريب على “توقع الكلمة التالية”، أظهرت النماذج اللغوية الكبيرة أداءً فعالًا على مجموعة واسعة من المهام اللاحقة مثل الترجمة الآلية و الإجابة على الأسئلة و توليد الكود.

على الرغم من أن النماذج اللغوية الكبيرة يمكن أن تكتب كودًا للبرنامج بأكمله، إلا أنها تملك عيبًا رئيسيًا: هلوسات الكود، وهو مشابه لما يواجهه إطارات معالجة اللغة الطبيعية. يمكن أن تشمل هلوسات الكود مشاكل مثل الأخطاء غير المكتشفة و الإعتماديات الناقصة و تنفيذ الوظائف غير كاملة. هناك سببان رئيسيان لهلوسات الكود.

  • نقص تحديد المهمة: عند توليد كود البرنامج في خطوة واحدة، عدم تحديد تفاصيل المهمة يربك النماذج اللغوية الكبيرة، حيث أن مهام مثل تحليل متطلبات المستخدم أو اختيار لغة البرمجة المفضلة غالبًا ما توفر التفكير الموجه، وهو شيء مفقود في المهام عالية المستوى التي تتعامل معها هذه النماذج.
  • نقص الفحص المتقاطع: تأتي المخاطر الكبيرة عندما لا يتم إجراء فحص متقاطع، خاصة خلال عمليات اتخاذ القرارات.

يهدف ChatDev إلى حل هذه المشاكل، و تسهيل النماذج اللغوية الكبيرة لإنشاء تطبيقات برمجية فعالة و حديثة، من خلال إنشاء شركة افتراضية لتطوير البرمجيات التي تقوم بتقسيم عملية التطوير إلى أربع مراحل رئيسية,

  1. التصميم.
  2. البرمجة.
  3. الاختبار.
  4. التوثيق.

كل واحدة من هذه المراحل تُشرك فريقًا من الوكلاء الافتراضيين مثل مبرمجي الشيفرة أو مختبري البرمجيات الذين يتعاونون مع بعضهم البعض باستخدام الحوارات التي تؤدي إلى تدفق عمل سلس. بالإضافة إلى ذلك، يستخدم ChatDev سلسلة محادثة تعمل كوسيط وتقسم كل مرحلة من عملية التطوير إلى مهام فرعية صغيرة، يعمل في كل منها دوران لاقتراح الحلول والتحقق منها عبر تواصل يراعي السياق. وتتكون السلسلة من عدة عقد تمثل كل منها مهمة فرعية محددة، ويتبادل الدوران حوارًا متعدد الجولات لاقتراح الحلول والتحقق من صحتها.

في هذا النهج، يحلل إطار ChatDev أولًا متطلبات العميل، و يولد أفكارًا إبداعية، و يصمم و يطبق أنظمة نموذجية، و يحدد و يعالج القضايا المحتملة، و يخلق رسومات جذابة، و يشرح معلومات التصحيح، و يولد دليل المستخدم. أخيرًا، يسلّم إطار ChatDev البرنامج إلى المستخدم مع الكود المصدري و دليل المستخدم و مواصفات بيئة الاعتماد.

ChatDev : هيكل و عمل

الآن، بعد أن قدمنا مقدمة موجزة عن ChatDev، دعونا ننظر إلى هيكل و عمل إطار ChatDev، بدءًا بسلسلة المحادثة.

سلسلة المحادثة

كما ذكرنا في القسم السابق، يستخدم إطار ChatDev طريقة الشلال لتطوير البرمجيات، و يقسم عملية التطوير إلى أربع مراحل، بما في ذلك التصميم و البرمجة و الاختبار و التوثيق. لكل واحدة من هذه المراحل دور فريد في عملية التطوير، و هناك حاجة إلى تواصل فعال بينهم، و هناك تحديات محتملة عند تحديد الأفراد للتعامل معهم، و تحديد تسلسل التفاعلات.

لمعالجة هذه المسألة، يستخدم إطار ChatDev سلسلة المحادثة، وهي بنية عامة تقسم كل مرحلة إلى محادثة فرعية تركز على تقمص أدوار موجه بالمهام وتضم دورين. ويشكل المخرج المطلوب من الحوار مكونًا أساسيًا للبرنامج المستهدف، وينتج عن تعاون الوكلاء المشاركين وتبادل التعليمات بينهم. ويوضح الشكل التالي هذا النمط لحل المهام الوسيطة.

لكل محادثة فردية، يبدأ المعلم أولًا بإعطاء الإرشادات، و ثم يوجه الحوار نحو إكمال المهمة، و في الوقت نفسه، يتبع المساعد الإرشادات التي وضعها المعلم، و يقدم حلولًا مثالية، و يشارك في مناقشات حول جدوى الحل. ثم يشارك الموجّه والوكيل في حوار متعدد الجولات حتى يتوصلا إلى توافق ويعتبرا المهمة منجزة. وتتيح سلسلة المحادثة للمستخدمين رؤية عملية التطوير ومسار اتخاذ القرار بوضوح، واكتشاف الأخطاء وتشخيصها وفحص المخرجات الوسيطة والتدخل عند الحاجة.ويساعد التركيز الدقيق على كل مهمة فرعية في تحسين التعاون بين الوكلاء والوصول سريعًا إلى المخرجات المطلوبة.

التصميم

في مرحلة التصميم، يحتاج إطار ChatDev إلى فكرة أولية كمدخل من العميل، و هناك ثلاث أدوار محددة مسبقًا في هذه المرحلة.

  1. الرئيس التنفيذي.
  2. رئيس المنتج.
  3. المدير التقني.

ثم تتولى سلسلة المحادثة دورها، و تقسم مرحلة التصميم إلى مهام محادثة فرعية متتالية، و تشمل لغة البرمجة (المدير التقني و الرئيس التنفيذي)، و طريقة البرنامج المستهدف (رئيس المنتج و الرئيس التنفيذي). مرحلة التصميم تتضمن ثلاث آليات رئيسية: تعيين الدور و تيار الذاكرة و التأمل الذاتي.

تعيين الدور

كل وكيل في إطار ChatDev يُخصص دورًا باستخدام رسائل خاصة أو محفزات خاصة خلال عملية لعب الدور. على عكس نماذج اللغة المحادثية الأخرى، يقيّد إطار ChatDev نفسه ببدء سيناريوهات لعب الدور بين الوكلاء فقط. هذه المحفزات تُستخدم لتعيين أدوار للوكلاء قبل الحوار.

في البداية، يأخذ المعلم مسؤولية الرئيس التنفيذي، و يشارك في التخطيط التفاعلي، بينما يتعامل الوكيل مع مسؤولية رئيس المنتج، و ينفذ المهام، و يقدم الاستجابات المطلوبة. يستخدم الإطار توجيه التهيئة الأولية لتخصيص الأدوار حتى يتمكن الوكلاء من أدائها بفعالية. وتتضمن توجيهات المساعد والموجّه تفاصيل الأدوار والمهام ومعايير الإنهاء وبروتوكولات التواصل، إلى جانب قيود تمنع الحلقات اللانهائية والردود غير المفيدة وتكرار التعليمات.

تيار الذاكرة

تيار الذاكرة هو آلية يستخدمها إطار ChatDev، و يحتفظ بسجل محادثات شاملة للمحادثات السابقة للوكيل، و يساعد في عملية اتخاذ القرار التي تليها بطريقة متواصلة مع السياق. يستخدم إطار ChatDev توجيهات لتحديد بروتوكولات الاتصال المطلوبة. فعند توصل الأطراف إلى توافق، تُستخدم رسالة إنهاء تستوفي تنسيقًا محددًا، مثل (<MODALITY>: Desktop Application). ويراقب الإطار الالتزام بالتنسيق باستمرار قبل السماح بإنهاء الحوار الحالي.

التأمل الذاتي

لاحظ مطورو إطار ChatDev حالات حيث وافق الطرفان على إجماع، لكن بروتوكولات الاتصال المحددة لم تُفعّل. لمواجهة هذه القضايا، يقدم إطار ChatDev آلية للتأمل الذاتي تساعد على استرجاع الذكريات واستخراجها. ولتنفيذها، يبدأ حوارًا جديدًا ويُسند دور السائل الجديد إلى «ذات افتراضية». تحلل هذه الذات الحوارات السابقة والسجلات التاريخية وتُطلع المساعد الحالي عليها، ثم تطلب ملخصًا للمعلومات الحاسمة والقابلة للتنفيذ، كما يوضح الشكل التالي.

بمساعدة آلية التأمل الذاتي، يشجع وكيل ChatDev على التأمل و تحليل القرارات التي قدّمها.

البرمجة

هناك ثلاث أدوار محددة مسبقًا في مرحلة البرمجة، وهي المدير التقني و المبرمج و المصمم الفني. كما هو الحال دائمًا، تقسم سلسلة المحادثة مرحلة البرمجة إلى مهام فرعية فردية، مثل توليد الكود (المبرمج و المدير التقني) أو وضع واجهة مستخدم رسومية (المبرمج و المصمم). ثم يُشير المدير التقني إلى المبرمج لاستخدام تنسيق Markdown لتنفيذ نظام برمجي، و بعد ذلك يقترح المصمم الفني واجهة مستخدم واضحة و تفاعلية تستخدم الرموز الرسومية للتفاعل مع المستخدمين بدلاً من الاعتماد على أوامر نصية تقليدية.

إدارة الكود

يستخدم إطار ChatDev لغات برمجة كائنية مثل Python و Java و C++ لمعالجة أنظمة برمجية معقدة، لأن طابع هذه اللغات يسمح باستخدام كائنات منفصلة لا فقط في تصحيح الأخطاء و التطوير التعاوني، بل أيضًا في إزالة التكرار من خلال إعادة استخدام الكائنات من خلال مفهوم الوراثة.

تعليمات الفكر

الأساليب التقليدية للاجابة على الأسئلة غالبًا ما تؤدي إلى معلومات غير ذات صلة أو غير دقيقة، خاصة عند توليد الكود، حيث قد تؤدي الإرشادات البسيطة إلى هلوسات LLM، و قد تصبح مشكلة صعبة. لمواجهة هذه القضية، يقدم إطار ChatDev آلية “تعليمات الفكر” التي تستلهم من محفزات سلسلة الفكر. آلية “تعليمات الفكر” تُعنى بشكل صريح بأفكار حل المشكلات الفردية المضمنة في الإرشادات، مشابهة لتحقيق المهام بطريقة متسلسلة و منظمة.

الاختبار

كتابة كود خالي من الأخطاء في المحاولة الأولى هو تحدي لا فقط بالنسبة إلى النماذج اللغوية الكبيرة، بل أيضًا بالنسبة إلى مبرمجي الكود البشريين، و بدلاً من التخلص الكامل من الكود الخاطئ، يقوم المبرمجون بتحليل كودهم لتحديد الأخطاء و تصحيحها. مرحلة الاختبار في إطار ChatDev مقسمة إلى ثلاثة أدوار: المبرمج والمختبر والمراجع. وتنقسم عملية الاختبار إلى مهمتين فرعيتين متتاليتين: مراجعة الأقران أو التنقيح الساكن بين المراجع والمبرمج، واختبار النظام أو التنقيح الديناميكي بين المبرمج والمختبر. تحلل مراجعة الأقران الشيفرة المصدرية لاكتشاف الأخطاء، بينما يتحقق اختبار النظام من تشغيل البرنامج بواسطة اختبارات يجريها المبرمج باستخدام المفسر. ويركز التنقيح الديناميكي أساسًا على اختبار الصندوق الأسود لتقييم التطبيقات.

التوثيق

بعد أن يكتمل إطار ChatDev من التصميم و البرمجة و الاختبار، يستخدم أربعة وكلاء، و هم الرئيس التنفيذي و المدير التقني و رئيس المنتج و المبرمج، لإنشاء توثيق لمشروع البرمجية. يستخدم إطار ChatDev النماذج اللغوية الكبيرة مع توجيهات تتضمن أمثلة قليلة ضمن السياق لإنشاء الوثائق. يطلب المدير التقني من المبرمج إعداد تعليمات تهيئة اعتماديات البيئة وإنشاء مستند مثل «dependency requirements.txt». وبالتوازي، ينقل الرئيس التنفيذي متطلبات النظام وتصميمه إلى رئيس المنتج كي ينشئ دليل المستخدم.

النتائج

إحصائيات البرمجيات

لتحليل أداء إطار ChatDev، قام فريق المطورين بتحليل إحصائي على التطبيقات البرمجية التي أنتجها الإطار على أساس بعض المقاييس الرئيسية، بما في ذلك الرموز النصية المستهلكة و عدد دورات الحوار و أصول الصور و ملفات البرمجيات و تحديثات الإصدار و غيرها، و تظهر النتائج في الجدول أدناه.

تحليل المدة

للفحص في وقت إنتاج ChatDev لبرمجيات مختلفة لطلبات مختلفة، قام المطورون أيضًا بتحليل المدة، و يظهر الفرق في وقت التطوير لطلبات مختلفة اختلاف وضوح و تعقيد المهام المحددة، و تظهر النتائج في الشكل أدناه.

دراسة الحالة

يظهر الشكل التالي ChatDev يطور لعبة Five in a Row أو Gomoku.

الشكل الأيسر يظهر البرنامج الأساسي الذي أنشأه الإطار دون استخدام واجهة مستخدم. كما هو واضح، فإن التطبيق بدون واجهة مستخدم يقدم قليلًا من التفاعل، و يمكن للمستخدمين لعب هذه اللعبة فقط من خلال الطرفية. الشكل التالي يظهر لعبة أكثر جاذبية تم إنشاؤها باستخدام واجهة مستخدم، و تقدم واجهة مستخدم أفضل وتفاعلًا محسنًا يجعل اللعب أكثر إمتاعًا. ثم ينشئ وكيل التصميم رسومات إضافية لتحسين قابلية الاستخدام والمظهر دون المساس بوظائف البرنامج. وإذا لم تُرضِ الصور المستخدمين، فيمكنهم استبدالها يدويًا بعد انتهاء ChatDev من إنشاء البرنامج. وتتيح هذه المرونة تخصيص التطبيق وفق تفضيلات المستخدمين وتحسين التفاعل والتجربة دون التأثير في وظائفه.

أفكار ختامية

في هذه المقالة، تحدثنا عن ChatDev، وهو نهج مبتكر يعتمد على النماذج اللغوية الكبيرة يهدف إلى ثورة مجال تطوير البرمجيات، و يهدف إلى القضاء على الحاجة إلى نماذج متخصصة خلال كل مرحلة من مراحل عملية التطوير. يستخدم إطار ChatDev قدرات إطارات LLM، مستخدمًا التواصل اللغوي لتوحيد و تبسيط العمليات الرئيسية لتطوير البرمجيات. يستخدم إطار ChatDev سلسلة المحادثة لتقسيم عملية التطوير إلى مهام فرعية ذرية، و يسمح بدور مزدوج، و يسمح بمقترحات و تحقق الحلول باستخدام اتصالات متواصلة مع السياق التي تمكن المطورين من حل المهام الفرعية المحددة.

كونال كيجريوال مهندس برمجيات للأنظمة الخلفية، متخصص في Python وPostgreSQL وRedis والبنية التحتية السحابية على GCP وAWS. لديه ثلاث سنوات من الخبرة في بناء الأنظمة البرمجية المستخدمة فعليًا وتوسيع نطاقها، ويكتب عن البنية التحتية للذكاء الاصطناعي والأنظمة الموزعة والبنية المعمارية لنشر أعباء عمل التعلم الآلي.