مشاركة

‫14 نوفمبر 2024

تحسين أدوات المطوّرين المستندة إلى الذكاء الاصطناعي باستخدام Gemini API

سكوت فيرنر

الرئيس التنفيذي لشركة Sublayer

بايج بيلي

مهندس تجربة المطوّرين في مجال الذكاء الاصطناعي

فيشال دارماديكاري

مهندس حلول المنتجات

Sublayer showcase hero

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

Sublayer، وهو إطار عمل لوكيل الذكاء الاصطناعي يستند إلى Ruby، يوضّح قوة وكفاءة Gemini API من خلال دمج نماذج ‎1.5 في عروضه الأساسية للمطوّرين وكذلك في مهام سير عمل أدواته.

إبقاء مستندات Sublayer محدّثة باستخدام Gemini

إحدى الفرص التي يتيحها الذكاء الاصطناعي للمطوّرين هي مساعدة الفِرق، خاصةً في الشركات الناشئة الصغيرة في مراحلها الأولى، على إنجاز المزيد بجهد أقل. بالنسبة إلى الكثيرين، يمكن أن يكون ذلك في شيء بسيط ولكنه أساسي مثل المستندات. في سير عملهم، تعالج Sublayer هذه المشكلة من خلال دمج مكتبتهم مع Gemini 1.5 Pro وإنشاء عمليات تشغيل آلي مستندة إلى الذكاء الاصطناعي لدعم مهمة إبقاء مستنداتهم محدّثة وتحديد مجالات التحسين.

"بدأ كل شيء لأنّ قدرة الاستيعاب الكبيرة في Gemini تتيح لك مساحة كافية لتجربة أفكار جديدة بدون أن تعيقك عمليات التنفيذ المعقّدة والمحسَّنة في البداية"،

— يقول "سكوت فيرنر"، الرئيس التنفيذي لشركة Sublayer، الذي كتب مؤخرًا عن هذا المفهوم في الاستنتاجات غير المفيدة

تتم العملية على النحو التالي:

  1. في كل مرة يتم فيها دمج طلب سحب في مستودع Sublayer الرئيسي، يتم تشغيل برنامج لتعديل المستندات.

  2. ينشئ الوكيل طلبًا يحتوي على محتوى المكتبة بالكامل ومحتوى المستندات بالكامل وكل المحتوى ذي الصلة بطلب السحب، بالإضافة إلى تعليمات تشرح المهمة، ثم يرسله إلى Gemini.

  3. بعد ذلك، يردّ Gemini بنواتج منظَّمة تحتوي على مسارات الملفات وأسمائها ومحتواها، وتحوّلها مكتبة Sublayer إلى عنصر يمكن استخدامه.

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

            
              
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call

# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call

# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
  code_context: code_context,
  doc_context: doc_context,
  diff: diff
).generate

# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
  code_context: code_context,
  doc_context: doc_context,
  context_ignore_list: context_ignore_list,
    diff: diff
).generate

# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
  code_context: code_context,
  suggestions: suggestions,
  doc_context: doc_context,
  context_ignore_list: context_ignore_list
).generate

# Update each of the files returned by Gemini 1.5 Pro and create a new PR  
          
            
          

يمكنك الاطّلاع على رمز سير العمل الكامل في أمثلة Sublayer المفتوحة المصدر

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

إتاحة نماذج Gemini لمطوّري Ruby

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

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

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

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

النماذج اللغوية الكبيرة، جزء أساسي من أحجية البنية التحتية للذكاء الاصطناعي

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

"يتميّز Gemini بقدرته الفائقة على حلّ جميع المشاكل التي تم تصميم إطار عملنا لتسهيلها، مثل إنشاء الرموز البرمجية وتقسيم المهام واتّباع التعليمات وإنشاء بنى بيانات جديدة استنادًا إلى الأمثلة"

— سكوت فيرنر، Sublayer

الخطوات التالية

في المستقبل، تستعدّ Sublayer لإطلاق Augmentations.ai، وهي منصة تتيح لجميع فِرق التطوير استخدام عمليات التشغيل الآلي التي تنشئها. سيشمل الإصدار الأوّلي أداتَين مستندتَين إلى Gemini 1.5 Pro: أداة Semantic Linting التي تتيح للفرق إنشاء قواعد مراجعة رموز برمجية مستندة إلى الذكاء الاصطناعي تفهم السياق وتفرض أفضل الممارسات المتطوّرة، وأداة Weekly Summaries التي تحوّل نشاط التطوير في مستودعات متعددة وأدوات إدارة المنتجات إلى إحصاءات قابلة للتنفيذ من أجل القيادة.

يخطّطون لمواصلة استخدام مزيج من Gemini 1.5 Pro للمهام الأكثر تعقيدًا وGemini 1.5 Flash للوظائف الأكثر حساسية لزمن الاستجابة والمخصّصة للمستخدمين، وذلك عند طرح المزيد من الأدوات على منصة Augmentations. ستساهم هذه الجهود أيضًا في إطار عملهم المفتوح المصدر، ما يتيح لمجتمع Ruby الاستفادة من وظائف Gemini الجديدة فور توفّرها، مع الاستفادة من الاستخدام الفعلي من قِبل فريق Sublayer.

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