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

لقد أتاحت إمكانية استخدام الذكاء الاصطناعي على نطاق واسع خلال العام الماضي فرصتَين كبيرتَين للمطوّرين، وهما تسهيل دمج أحدث تقنيات الذكاء الاصطناعي في مشاريعهم وتحقيق كفاءة أكبر في عملية التطوير من خلال الذكاء الاصطناعي.
Sublayer، وهو إطار عمل لوكيل الذكاء الاصطناعي المستند إلى Ruby، يوضّح قوة وكفاءة Gemini API من خلال دمج نماذج 1.5 في عروضه الأساسية للمطوّرين وكذلك في سير عمل أدواته.
إبقاء مستندات Sublayer محدّثة باستخدام Gemini
إحدى الفرص التي يتيحها الذكاء الاصطناعي للمطوّرين هي مساعدة الفِرق، خاصةً في الشركات الناشئة الصغيرة في مراحلها الأولى، على إنجاز المزيد بجهد أقل. بالنسبة إلى الكثيرين، يمكن أن يكون ذلك في شيء بسيط ولكنه أساسي مثل المستندات. في عمليات سير العمل الخاصة بهم، تعالج Sublayer هذه المشكلة من خلال دمج مكتبتها مع Gemini 1.5 Pro وإنشاء عمليات آلية مستندة إلى الذكاء الاصطناعي لدعم مهمة إبقاء مستنداتها محدّثة وتحديد مجالات التحسين.
"بدأ كل شيء لأنّ قدرة الاستيعاب الكبيرة في Gemini تتيح لك مساحة كافية لتجربة أفكار جديدة بدون أن تنشغل بتنفيذات معقّدة ومحسّنة في البداية"،
تتم العملية على النحو التالي:
في كل مرة يتم فيها دمج طلب سحب في مستودع Sublayer الرئيسي، يتم تشغيل برنامج لتعديل المستندات.
ينشئ الوكيل طلبًا يحتوي على محتوى المكتبة بالكامل ومحتوى المستندات بالكامل وكل المحتوى ذي الصلة بطلب السحب، بالإضافة إلى تعليمات تشرح المهمة، ثم يرسله إلى Gemini.
بعد ذلك، يردّ Gemini بنواتج منظَّمة تحتوي على مسارات الملفات وأسمائها ومحتواها، وتحوّلها مكتبة Sublayer إلى عنصر يمكن استخدامه.
أخيرًا، يأخذ الوكيل المعلومات المنظَّمة التي تلقّاها ويستخدمها لإنشاء فرع جديد، وإجراء التغييرات المطلوبة على الملفات، وإرسال طلب سحب جديد.
# 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 بسلاسة، واسترداد البيانات المنظَّمة التي يمكن للمطوّرين استخدامها بسهولة في تطبيقاتهم. يفتح هذا النهج عالمًا من الإمكانيات، بدءًا من استخراج الإحصاءات من مصادر البيانات المتنوعة إلى إنشاء الرموز البرمجية وتحويل قواعد الرموز البرمجية بلغات ومكتبات مختلفة. تستخدم الطبقة الفرعية نماذج Gemini أيضًا للسماح للمستخدمين بإنشاء مكونات وظيفية جديدة ضمن الإطار نفسه. تشجّع هذه السمة "التجميع الذاتي" على التجربة وتتيح للمستخدمين استكشاف أفكار جديدة بسرعة.
"يتميّز Gemini بقدرته الفائقة على حلّ جميع المشاكل التي تم تصميم إطار عملنا لتسهيلها، مثل إنشاء الرموز البرمجية وتقسيم المهام واتّباع التعليمات وإنشاء بنى بيانات جديدة استنادًا إلى الأمثلة"
الخطوات التالية
في المستقبل، تستعدّ 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، يمكنك الاطّلاع على مستندات واجهة برمجة التطبيقات.