1. مقدمة
في هذا الدرس التطبيقي، ستستخدم Gemini Code Assist، وهو مساعد مستند إلى الذكاء الاصطناعي في Google Cloud، لإضافة اختبارات إلى تطبيق ويب حالي على Python، والعثور على الأخطاء التي كشفت عنها الاختبارات وإصلاحها في التطبيق. وبعد ذلك، ستستخدم Code Assist لإنشاء اختبارات للوظائف الجديدة وإنشاء رمز لاجتياز هذه الاختبارات وتوسيع نطاق التطبيق.
الإجراءات التي ستنفّذها
- ستستخدم Cloud Shell Editor لتنزيل رمز تطبيق ويب حالي.
- ستستخدم Gemini Code Assist Chat في "محرِّر Cloud Shell" لطرح أسئلة عامة حول Google Cloud.
- في "محرِّر Cloud Shell"، يمكنك استخدام مساعدة Gemini Code Assist Inline في الرمز البرمجي لإجراء اختبارات للتطبيق وإجراء الاختبارات والعثور على الأخطاء وإصلاحها، ثم توسيع نطاق وظائف التطبيق.
المعلومات التي ستطّلع عليها:
- كيفية استخدام Gemini Code Assist في العديد من مهام المطوّرين، مثل إنشاء الاختبارات وإنشاء الرموز البرمجية
- كيفية استخدام Gemini Code Assist للتعرّف على Google Cloud
المتطلبات...
- متصفح الويب Chrome
- حساب Gmail
- مشروع على Google Cloud تم تفعيل الفوترة فيه
- تم تفعيل Gemini Code Assist لمشروعك على السحابة الإلكترونية
يستهدف هذا التمرين المعملي المطوّرين من جميع المستويات، بما في ذلك المبتدئين. على الرغم من أن نموذج التطبيق موجود بلغة بايثون، فأنت لست بحاجة إلى أن تكون على دراية ببرمجة بايثون لفهم ما يحدث. سينصب تركيزنا على التعرّف على إمكانات Gemini Code Assist للمطوّرين.
2. ضبط إعدادات الجهاز
من المفترض أن يكون لديك مشروع على Google Cloud مع تفعيل الفوترة لاستخدامه في هذا الدرس. وسنفعّل الآن Gemini API في مشروع Google Cloud. يُرجى اتّباع الخطوات التالية:
- يُرجى زيارة https://console.cloud.google.com والتأكّد من اختيار مشروع Google Cloud الذي تريد استخدامه في هذا الدرس التطبيقي. انقر على رمز Gemini الذي يظهر في أعلى يسار الشاشة.
- ستظهر نافذة "Gemini في Cloud Console" على يسار وحدة التحكّم. انقر على الزر تفعيل إذا كان ظاهرًا أدناه. إذا لم يظهر الزر تفعيل وظهرت لك واجهة Chat بدلاً من ذلك، يعني ذلك أنّه سبق لك تفعيل "Gemini في Cloud" في المشروع ويمكنك الانتقال مباشرةً إلى الخطوة التالية.
- بعد تفعيله، يمكنك اختبار Gemini من خلال طرح سؤال أو طلبَين عليه. يتم عرض بعض نماذج طلبات البحث، ولكن يمكنك تجربة طلب مثل ما المقصود بالتشغيل السحابي؟
سيرد Code Assist بالإجابة عن سؤالك. يمكنك النقر على رمز في أعلى يسار الصفحة لإغلاق نافذة محادثة Code Assist.
تفعيل Gemini في "محرِّر Cloud Shell"
يتوفّر Gemini Code Assist ويعمل بالطريقة نفسها في العديد من بيئات IDE الشائعة. في هذا الدرس التطبيقي، ستستخدم Google Cloud Shell Editor الذي يعمل بالكامل في متصفّح الويب الذي تستخدمه. يجب تفعيل Gemini وضبطه في "محرِّر Cloud Shell" واتّباع الخطوات التالية:
- شغِّل Cloud Shell من خلال الرمز الموضح أدناه. قد يستغرق بدء تشغيل مثيل Cloud Shell دقيقة أو دقيقتين.
- انقر على الزر محرِّر أو فتح المحرِّر (حسب الحالة) وانتظِر إلى أن يظهر محرِّر Cloud Shell. إذا ظهر لك الزر تجربة المحرِّر الجديد، انقر عليه.
- انقر على الزر Cloud Code - تسجيل الدخول في شريط مدى التقدّم السفلي كما هو موضَّح. عليك تفويض المكوّن الإضافي وفقًا للتعليمات. إذا ظهر لك "Cloud Code - no project" في شريط الحالة، اختَر ذلك ثم اختَر المشروع المحدّد على Google Cloud من قائمة المشاريع التي تخطّط للعمل فيها.
- إذا لم يظهر رمز Gemini في شريط الحالة في أسفل يسار الصفحة، يجب تفعيله في Cloud Code. قبل إجراء ذلك، تأكَّد من تفعيل Gemini (المعروف سابقًا باسم Duet AI for Developers) في بيئة التطوير المتكاملة (IDE) من خلال الانتقال إلى إضافة رمز Cloud ← الإعدادات، ثم إدخال النص Duet AI: Enable كما هو موضّح أدناه. تأكَّد من وضع علامة في مربّع الاختيار. يجب إعادة تحميل بيئة التطوير المتكاملة (IDE). يؤدّي ذلك إلى تفعيل Gemini في Cloud Code، وسيظهر شريط حالة Gemini في بيئة التطوير المتكاملة (IDE).
- انقر على زر Gemini في أسفل يسار الشاشة كما هو موضّح واختَر المشروع الصحيح على Google Cloud الذي فعّلنا له Cloud AI Companion API.
- بعد اختيار مشروعك على Google Cloud، تأكَّد من أنّه بإمكانك الاطّلاع على ذلك في رسالة حالة Cloud Code في شريط الحالة، وأنّه تم أيضًا تفعيل Gemini على يسار الصفحة في شريط الحالة كما هو موضّح أدناه:
Gemini Code Assist جاهز للاستخدام
3- تنزيل التطبيق وفحصه
في النافذة الطرفية، نفِّذ الأمر لنسخ المستودع باستخدام رمز البدء، ثم غيِّر إلى الدليل الجديد (إذا لم تعُد النافذة الطرفية مفتوحة، انقر على الزر Terminal أو فتح الوحدة الطرفية لاستعادتها):
git clone https://github.com/GoogleCloudPlatform/testing-with-duet-ai-codelab.git
cd testing-with-duet-ai-codelab
افتح main.py في أداة التعديل، ثم افتح نافذة Gemini Chat بالنقر على رمز المحادثة في Gemini Chat على يسار أداة التعديل. تتوفّر نافذة Gemini Chat هذه في بيئة تطوير متكاملة (IDE) وتتضمّن الرمز في بيئة التطوير المتكاملة (IDE) كسياق للمناقشة. أدخِل الطلب توضيح ذلك واطّلِع على الإجابة:
يمكنك التمرير في نافذة المحادثة هذه للاطّلاع على الإجابة بالكامل. يشير التفسير إلى أنّه يمكننا تشغيل هذا البرنامج على الجهاز باستخدام الأمر python3 main.py
في النافذة الطرفية.
4. التشغيل محليًا
يمكنك التغيير إلى دليل المستودع باستخدام cd ~/testing-with-duet-ai-codelab
إذا لزم الأمر، وإدخال الأمر python3 main.py
في النافذة الطرفية:
انقر على الرابط http://127.0.0.1:8080 لفتح علامة تبويب متصفح جديدة للانتقال إلى الصفحة الرئيسية للتطبيق:
يعمل التطبيق "محليًا". في الواقع، أجرى محرّر Cloud Shell القليل من التحسين هنا. يعمل التطبيق في Cloud Shell، وليس على جهاز الكمبيوتر الخاص بك. عند النقر على الرابط، فتح علامة تبويب ليس إلى العنوان المحلي الفعلي http://127.0.0.1:8080، بل إلى خادم وكيل تم إعداده لهذا الغرض فقط من خلال Cloud Shell. يكون التأثير مماثلاً إذا كنت تشغّله محليًا.
ننصحك بتجربته الآن. أدخِل 25 واضغط على تحويل.
هذا صحيح، 25 هو XXV بالأرقام الرومانية! يجب إكمال هذه الخطوة هنا.
يُرْجَى التَّحَقُّقْ مِنْ بَعْضِ الْأَرْقَامْ الْأُخْرَى. 25 نجحت، ماذا عن 24؟
ربما كنا متعجلين بعض الشيء في الاعتقاد بأن كل شيء على ما يرام. هل التحويل 24 هو التحويل الصحيح لـ 24؟ أليس من المفترض أن تكون XXIV؟
يمكننا القول إن الـ XXIIII ليست صحيحة، ولكنها ليست ما يتوقعه الناس عادةً. وبما أنّ هذه المسألة ليست خاطئة، (يُرجى العِلم أنّ العديد من الساعات تعرض الرقم 4 كرقم روماني IIII) يمكن مواصلة هذه المشكلة لتحسينها في المستقبل.
ماذا عن تجربة الأرقام السالبة؟ صفر؟ ولا توجد طريقة لتمثيل هذه الأرقام بالأرقام الرومانية. ويبدو أنّه لا يوجد شيء يظهر مرة أخرى للمستخدم، وهو ما يبدو وكأنه خطأ يجب إصلاحه.
يمكن أن يساعد الاختبار في العثور على الأخطاء وإزالتها، ويمكن أن يساعدنا Gemini Code Assist في كتابة الاختبارات واستخدامها.
5- إضافة اختبارات
الرجوع إلى نافذة Gemini Chat وطرح أسئلة
How can I test the number_to_roman function?
اقرأ الردّ الذي يتضمّن مناقشة وحدة unittest ووحدة pytest.
ننصحك بتكليف Gemini Code Assist بكتابة هذه الاختبارات نيابةً عنك. افتح calendar.py، حيث يتوفّر رمز الإحالة الناجحة، في المحرّر ثم ارجع إلى نافذة Gemini Chat واسأله مرة أخرى.
How can I test the number_to_roman function?
أصبح الردّ أكثر تحديدًا الآن، بما في ذلك تضمين وحدة unittest التي يمكنك نسخها أو إدخالها في ملف جديد:
import unittest
import calendar
class NumberToRomanTest(unittest.TestCase):
def test_convert_1(self):
self.assertEqual(calendar.number_to_roman(1), "I")
def test_convert_4(self):
self.assertEqual(calendar.number_to_roman(4), "IV")
def test_convert_9(self):
self.assertEqual(calendar.number_to_roman(9), "IX")
def test_convert_40(self):
self.assertEqual(calendar.number_to_roman(40), "XL")
def test_convert_90(self):
self.assertEqual(calendar.number_to_roman(90), "XC")
def test_convert_400(self):
self.assertEqual(calendar.number_to_roman(400), "CD")
def test_convert_900(self):
self.assertEqual(calendar.number_to_roman(900), "CM")
def test_convert_1990(self):
self.assertEqual(calendar.number_to_roman(1990), "MCMXC")
def test_convert_2023(self):
self.assertEqual(calendar.number_to_roman(2023), "MMXXIII")
قد تظهر لك رمز مختلف عن المثال أعلاه. يتم تعديل النماذج الأساسية في Gemini Code Assist من حين لآخر، لذلك قد تختلف الإجابات دائمًا. إذا ظهرت لك مجموعة مختلفة من الرموز، يمكنك الآن اختيار ما إذا كنت تريد متابعة استخدام العيّنات المعروضة في هذا الدرس التطبيقي حول الترميز عن طريق نسخ الرمز الظاهر هنا، أو يمكنك تجربة الإجابة البديلة التي يوفّرها Gemini Code Assist الآن. وإذا كان لديك متسع من الوقت، يمكنك أيضًا تجربة كلا المسارين. Gemini Code Assist هو مساعد في الترميز يمكنك استخدامه بالطريقة التي تناسبك.
يمكنك النقر على السهم المتّجه مزدوجة في أعلى يسار نافذة Gemini Chat لإنشاء ملف جديد يحتوي على رمز اختبار الوحدة، أو استخدام بيئة التطوير المتكاملة (IDE) لإنشاء ملف جديد ولصق الرمز الظاهر في هذا التمرين. اضغط على CTRL-S أو CMD-S في هذه النافذة لحفظه، واستدعِ الملف المحفوظ calendar-unittest.py.
ارجع إلى الوحدة الطرفية واضغط على CTRL-C لإيقاف تشغيل خادم الويب الذي تركته في وقت سابق، واحصل على طلب واجهة المستخدم. أدخِل الأمر.
python3 calendar-unittest.py
لإجراء الاختبارات الجديدة.
لا يوجد أي ناتج. ليس هذا ما كان متوقعًا. هل مر كل شيء بدون إزعاج؟ أنت تريد معرفة ذلك بالتأكيد. اطّلِع على الإجابة من Gemini Code Assist التي تضمّنت الرمز الاختباري. يوجد أسفل الرمز مزيد من المعلومات عن كيفية تشغيل حالة الاختبار:
جرِّب تشغيل الأمر المقترَح:
python -m unittest discover
قد تحدث مشكلة إذا لم يُعطى جهازك اسمًا مستعارًا للأمر python3
باسم python
، وفي هذه الحالة شغِّل:
python3 -m unittest discover
يتم تشغيل الأمر، ولكنه يعرض Ran 0 tests in 0.000s
. تشمل الوحدة عدة اختبارات. ماذا يحدث؟
إنها الكلمة الأخيرة في الأمر، discover
. من أين أتت؟ على ما يبدو، توقّع Gemini Code Assist حفظ الرمز الاختباري في ملف باسم discover
أو discover.py
، لكنه لم يحدِّد هذا الإجراء. بما أنّك حفظت الملف في calendar-unittest.py
، جرِّب تشغيل الأمر:
python3 -m unittest calendar-unittest
أنت الآن ترى الكثير من الإخراج، بدءًا من شيء مثل هذا:
$ python3 -m unittest calendar-unittest
.F.FFFFFF
======================================================================
FAIL: test_convert_1990 (calendar-unittest.NumberToRomanTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/charles_engelke/testing-with-duet-ai-codelab/calendar-unittest.py", line 28, in test_convert_1990
self.assertEqual(calendar.number_to_roman(1990), "MCMXC")
AssertionError: 'MDCCCCLXXXX' != 'MCMXC'
- MDCCCCLXXXX
+ MCMXC
يعرض السطر الأول مدة كل اختبار ناجح، وF
لكل اختبار ناجح. معظم الاختبارات لا تنجح! يسرد بعد ذلك الاختبارات التي لم تجتَز بشكل فردي، وتعرض المخرجات المتوقعة والنتيجة الفعلية. ليس من الواضح بعض الشيء ترتيب إجراء هذه الاختبارات. كان الترتيب أبجديًا حسب اسم الاختبار، وليس الترتيب الذي تظهر به الاختبارات في الملف. لذلك تم تشغيل test_convert_1
أولاً، ثم test_convert_1990
، ثم test_convert_2023
، وهكذا. إنّ حالات اختبار 1
و2023
هي فقط التي تم اجتيازها.
عندما جرّبت هذا الرمز لأوّل مرة، لاحظت أنّه تم تحويل 24
إلى XXIIII
، وهو أمر لم يكن خاطئًا تمامًا، ولكنه ليس النموذج الشائع حيث يتم تحويل IIII
إلى IV
. كانت جميع الاختبارات الفاشلة لحالات مماثلة. وعندما تم رصد هذه المشكلة للمرة الأولى، ذكر المختبر ما يلي: "بما أنّ هذه المشكلة ليست خاطئة على الإطلاق (يُرجى العلم أنّ العديد من الساعات تعرض رمز 4
كرقم روماني IIII
)، يمكنك ترك هذه المشكلة لتحسين أدائها في المستقبل".
يمكنك تغيير حالات الاختبار لتوقُّع النتيجة "ليست خاطئة حقًا" وقبولها. يجيب على التعليمات البرمجية المقدمة، أو اقبل أن الوقت قد حان لهذا "التحسين المستقبلي". وبالتالي، ستكون خطوتك التالية هي إصلاح الرمز البرمجي من خلال الاستعانة بـ Gemini Code Assist للحصول على الإجابات الأكثر قبولاً التي تتوقّعها الاختبارات.
6- جارٍ تحسين الرمز البرمجي
تذكر أن الردود مثل XXIIII
لـ 24
، بدلاً من XXIV
الأكثر شيوعًا، تم اعتبارها "غير صحيحة حقًا" وتم تأجيلها لتحسينها في المستقبل. أصبح ذلك المستقبل الآن. هذه الاقتراحات "ليست خاطئة حقًا" الإجابات لا تزال مزعجة.
القاعدة الأولى للأرقام المتكررة في الأرقام الرومانية هي: أنه في أي وقت يكون لديك فيه أربعة أرقام متطابقة في صف واحد، يجب أن يستبدلها أحد الأرقام متبوعة بالرقم الأعلى التالي. لذلك يجب استبدال XXIIII
بـ XXIV
. وبالمثل، يجب تغيير XXXX
إلى XL
، ويجب أن يصبح CCCC
CD
.
اطلب من Gemini Code Assist كيفية تغيير قيمة المتغيّر roman بهذه الطريقة قبل عرضها مباشرةً باستخدام number_to_roman:
If the final value of roman has IIII in it, that should be replaced by IV. Similarly XXXX should be replaced by XL, and CCCC should become CD. How can I make those changes?
الاقتراح هو إضافة بعض التعليمات البرمجية في النهاية:
انسخ هذه الأسطر أو الصقها أو اكتبها في المحرر، ثم راجع ما يحدث:
أضاف Gemini Code Assist المزيد من السطور للتعامل مع الطلبات التي قد ينتهي بها الأمر بعد إجراء المجموعة الأولى من البدائل. على سبيل المثال، سيتم تحويل الرقم 19 إلى الرقم 18، ثم إلى اليوم السادس عشر، وأخيرًا إلى رقم 19 الصحيح.
إذا قدّم Gemini Code Assist اقتراحات مفيدة بشكل واضح، اضغط على Tab لقبول الاقتراحات، وحفظ الملف، وتشغيل خادم الويب مرة أخرى. بخلاف ذلك، أضف السطور المعروضة في المثال هنا يدويًا، واحفظ الملف. محاولة إجراء تحويل حقيقي: 1999:
إجابتك صحيحة
يُرجى إعادة إجراء الاختبارات الآن. انْتَقَلْتْ جَمِيعُ الْخِيَارَاتْ.
يبدو أن تطبيق الويب جاهز للإنتاج.
7. النشر إلى التشغيل في السحابة الإلكترونية
تشغّل Cloud Run تطبيقًا محاطًا على الإنترنت نيابةً عنك. بالنسبة إلى التطبيقات المكتوبة باستخدام أُطر العمل الشائعة، مثل Flash، سينشئ الأمر gcloud run deploy
هذه الحاوية نيابةً عنك قبل تطبيقها. شغِّل الأمر:
gcloud run deploy
في الوحدة الطرفية. عند سؤالك عن موقع رمز المصدر، اضغط على Enter لقبول الموقع الجغرافي الصحيح الذي يقترحه. وبالمثل، عند طلب اسم خدمة، اضغط على Enter لقبول الاقتراح.
قد يتعذّر تنفيذ الأمر لأن gcloud لا يمكنه تحديد المشروع الذي سيتم استخدامه. في هذه الحالة، شغّل الأمر:
gcloud config set core/project <project-id>
حيث يتم استبدال
بمعرّف مشروعك، والذي قد يكون مطابقًا لاسمه. بعد ذلك، يُرجى إعادة تشغيل الأمر gcloud run deploy
.
- سيطلب منك الأمر التأكد من الحاجة إلى واجهات برمجة تطبيقات معيّنة ولم يتم تفعيلها بعد. أدخِل y ليتم تفعيلها لك.
- عندما يُطلب منك تحديد منطقة، اختَر منطقة تناسبك. يُرجى العِلم أنّ إدخال الرقم المقابل لـ "
us-central1
" هو خيار آمن. - أدخِل Y للمتابعة عندما يُطلب منك ذلك.
- ستحتاج إلى السماح بالاستدعاءات غير المُصدَّق عليها لخدمة Cloud Run هذه. يُعد خيار المصادقة الذي تستخدمه Cloud Run مناسبًا للاستخدام بواسطة البرامج التي تتصل بالخدمة. بما أن هذا موقع إلكتروني، لن تستخدم المصادقة.
ستنشئ خدمة Google Cloud الحاوية وتنشرها وتوجِّه حركة البيانات إليها وتضبط سياسات الوصول، ثم تعرض لك رابطًا إلى الصفحة الرئيسية:
يمكنك الانتقال إلى ذلك الرابط والوصول إلى تطبيقك.
أدخل رقمًا واضغط على Enter، ثم tada!
ماذا!؟!
تمت العملية على جهازك. لماذا لم ينتهِ ذلك؟
اكتشف. طرح سؤال على Gemini Code Assist
Why am I getting an internal server error on cloud run?
على ما يبدو، بإمكان Gemini Code Assist قراءة ملف السجلّ. لنطلب من Gemini Code Assist كيفية التحقّق من السجلات بنفسك:
امضِ قدمًا وافعل ذلك. البحث عن السطور التي تحتوي على اللون الأحمر !! مؤشرات الخطأ، على النحو التالي:
ويتبع ذلك العديد من أسطر التفاصيل حول حزمة الاتصال التي تصل إلى هنا، ولكن هناك ما يلي:
عند الاطّلاع على ملف calendar.py، تظهر لك الدالة number_to_roman هناك. وأنت تعلم أن هذا صحيح لأنه تم عمله على جهازك. ما الذي يمكن أن يختلف في Cloud Run؟
الإجابة صعبة. هناك وحدة قياسية مضمّنة في Python3 تسمى calendar، تمامًا مثل ملف calendar.py الذي يتم تعريفه الدالة number_to_roman. عندما بحثت بايثون عن وحدة تُعرف باسم calendar على جهازك المحلي، بحثت أولاً في دليل التطبيق. يبدو أنّ لغة Python على Cloud Run قد بحثت أولاً عن الوحدات العادية، ثم استوردتها، ولم تعثر على الدالة number_to_roman.
هذه الأنواع من الاختلافات في البيئات ممكنة دائمًا. ولحسن الحظ، عند نقل أحد التطبيقات إلى حاويات، فإنه يحمل بيئته بداخله، لذلك يمكنك توقع السلوك نفسه أينما تم تشغيله. إذا كنت قد شغّلت التطبيق المحوَّل نفسه الذي يحتوي عليه Cloud Run على الجهاز، ستكون المشكلة نفسها.
حل هذه المشكلة. تحتاج إلى تغيير اسم وحدة التقويم المحلي إلى شيء ليس كذلك اسم وحدة قياسية. أعِد تسمية ملف calendar.py إلى my_calendar.py، ثم غيِّر أسطر import calendar
في main.py وcalendar-unittest.py إلى import my_calendar
. أخيرًا، غيِّر الخط
roman = calendar.number_to_roman(number)
إلى
roman = my_calendar.number_to_roman(number)
ننصحك بتجربته على الجهاز، ثم إجراء الاختبارات وإعادة نشره:
gcloud run deploy
والآن، تعمل هذه الميزة:
يمكنك مشاركة عنوان URL هذا، ويمكن لكل من يحتاج إلى أداة تحويل الأرقام الروماني أن يستخدم أداة التحويل الخاصة بك.
8. اختياري: تحسين مظهرك
يعمل تطبيقك بشكل جيد ويمكن لأي شخص على الويب الوصول إليه. لكنها تبدو بسيطة بعض الشيء. قبل أن تخبر الجميع عنه، لماذا لا تطلب من Gemini Code Assist تحسين مظهره؟
افتح ملف templates/index.html
. في نافذة محادثة Gemini، يمكنك طرح الأسئلة التالية:
Make this index.html file use material design.
الرد هو إجراء إضافات على الملف الحالي، مما ينتج عنه شيء مشابه لما يلي:
<!DOCTYPE html>
<html>
<head>
<title>Roman Numerals</title>
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
</head>
<body>
<h1 class="mdl-typography--title">Roman Numerals</h1>
<form action="/convert" method="post">
<div class="mdl-textfield mdl-js-textfield">
<input class="mdl-textfield__input" type="text" id="number" name="number" required />
<label class="mdl-textfield__label" for="number">Enter a number:</label>
</div>
<button class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored">
Convert!
</button>
</form>
</body>
</html>
استخدِم الرمز لنسخ الرمز المقترَح والصقه فوق المحتوى الحالي في index.html. في الوحدة الطرفية، شغِّل python3 main.py
وانقر على الرابط لفتح نافذة معاينة. أصبحت الصفحة الآن أقلّ وضوحًا:
يمكنك تكرار هذا الإجراء باستخدام الملف convert.html إذا أردت.
يعرف Gemini Code Assist قدرًا كبيرًا من لغة CSS، ويمكنك الاستعانة به لمساعدتك في تصميم صفحات التطبيقات بطرق مختلفة. هذه ليست سوى البداية.
نظرًا لأنك تريد مشاركة هذا التطبيق، فلا تنسَ إعادة نشره في Cloud Run:
gcloud run deploy
يمكنك تمرير عنوان URL إلى الأشخاص الذين يحتاجون إلى التحويل إلى الأرقام الرومانية.
9. تهانينا!
تهانينا، لقد نجحت في الاستعانة بخدمة Gemini Code Assist لإضافة اختبارات إلى أحد التطبيقات وإصلاح الأخطاء فيه وإضافة وظائف محسَّنة.
عند الانتهاء من استخدام التطبيق الذي تنشئه، يمكنك حذفه من لوحة بيانات Cloud Console لإيقاف أي رسوم مستقبلية محتملة.