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 بسلاسة، واسترداد البيانات المنظَّمة التي يمكن للمطوّرين استخدامها بسهولة في تطبيقاتهم. يفتح هذا النهج عالمًا من الإمكانات، بدءًا من استخلاص الإحصاءات من مصادر البيانات المتنوعة إلى إنشاء الرموز البرمجية وتحويل قواعد الرموز البرمجية بلغات ومكتبات مختلفة. تستخدم Sublayer أيضًا نماذج 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، يمكنك الاطّلاع على مستندات واجهة برمجة التطبيقات.