شعار زيفيرنت

عزز مراجعة التعليمات البرمجية وكفاءة الموافقة باستخدام الذكاء الاصطناعي التوليدي باستخدام Amazon Bedrock | خدمات الويب الأمازون

التاريخ:

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

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

مع صعود الذكاء الاصطناعي التوليدي (الذكاء الاصطناعي)، يمكن للمديرين الآن تسخير هذه التكنولوجيا التحويلية ودمجها مع مجموعة أدوات وخدمات النشر لدى AWS لتبسيط عملية المراجعة والموافقة بطريقة لم تكن ممكنة من قبل. في هذا المنشور، نستكشف حلاً يوفر سير عمل نشر متكاملًا وشاملاً يتضمن تحليل التغيير الآلي وتلخيصه مع وظيفة سير عمل الموافقة. نحن نستخدم أمازون بيدروك، وهي خدمة مُدارة بالكامل تجعل النماذج الأساسية (FMs) من الشركات الناشئة الرائدة في مجال الذكاء الاصطناعي وAmazon متاحة عبر واجهة برمجة التطبيقات (API)، بحيث يمكنك الاختيار من بين مجموعة واسعة من نماذج FM للعثور على النموذج الأكثر ملاءمة لحالة الاستخدام الخاصة بك. مع تجربة Amazon Bedrock بدون خادم، يمكنك البدء بسرعة، وتخصيص FMs بشكل خاص باستخدام بياناتك الخاصة، ودمجها ونشرها في تطبيقاتك باستخدام أدوات AWS دون الحاجة إلى إدارة أي بنية تحتية.

حل نظرة عامة

يوضح الرسم البياني التالي بنية الحل.

مخطط العمارة

يتكون سير العمل من الخطوات التالية:

  1. يدفع المطور تغييرات التعليمات البرمجية الجديدة إلى مستودع التعليمات البرمجية الخاص به (مثل كود AWS)، والذي يؤدي تلقائيًا إلى بدء تشغيل خط أنابيب AWS نشر.
  2. يمر رمز التطبيق عبر عملية بناء التعليمات البرمجية، ويقوم بإجراء عمليات فحص الثغرات الأمنية، وإجراء اختبارات الوحدة باستخدام الأدوات المفضلة لديك.
  3. AWS كود البناء يسترد المستودع وينفذ أمر git show لاستخراج اختلافات التعليمات البرمجية بين إصدار الالتزام الحالي وإصدار الالتزام السابق. يؤدي هذا إلى إنتاج مخرجات سطرًا تلو الآخر تشير إلى تغييرات التعليمات البرمجية التي تم إجراؤها في هذا الإصدار.
  4. يقوم CodeBuild بحفظ الإخراج إلى ملف الأمازون DynamoDB الجدول مع معلومات مرجعية إضافية:
    1. معرف تشغيل CodePipeline
    2. منطقة AWS
    3. اسم CodePipeline
    4. رقم بناء CodeBuild
    5. التاريخ والوقت
    6. الحالة
  5. تدفقات أمازون DynamoDB يلتقط تعديلات البيانات مصنوعة على الطاولة.
  6. An AWS لامدا يتم تشغيل الوظيفة بواسطة دفق DynamoDB لمعالجة السجل الذي تم التقاطه.
  7. تستدعي الوظيفة نموذج Anthropic Claude v2 على Amazon Bedrock عبر Amazon Bedrock واجهة برمجة تطبيقات InvocModel يتصل. يتم توفير اختلافات التعليمات البرمجية، جنبًا إلى جنب مع الموجه، كمدخل للنموذج للتحليل، ويتم إرجاع ملخص لتغييرات التعليمات البرمجية كمخرجات.
  8. يتم حفظ مخرجات النموذج مرة أخرى في نفس جدول DynamoDB.
  9. يتم إخطار المدير عن طريق خدمة البريد الإلكتروني البسيطة من أمازون (Amazon SES) ملخص تغييرات التعليمات البرمجية وأن موافقتها مطلوبة للنشر.
  10. يقوم المدير بمراجعة البريد الإلكتروني ويقدم قراره (إما الموافقة أو الرفض) بالإضافة إلى أي تعليقات مراجعة عبر وحدة تحكم CodePipeline.
  11. يتم التقاط قرار الموافقة وتعليقات المراجعة بواسطة أمازون إيفينت بريدج، مما يؤدي إلى تشغيل وظيفة Lambda لحفظها مرة أخرى في DynamoDB.
  12. في حالة الموافقة، يقوم المسار بنشر رمز التطبيق باستخدام الأدوات المفضلة لديك. في حالة الرفض، ينتهي سير العمل ولا يستمر النشر.

في الأقسام التالية، يمكنك نشر الحل والتحقق من سير العمل الشامل.

المتطلبات الأساسية المسبقة

لاتباع الإرشادات الواردة في هذا الحل، تحتاج إلى المتطلبات الأساسية التالية:

الوصول إلى نموذج الأساس

انشر الحل

لنشر الحل ، أكمل الخطوات التالية:

  1. اختار قم بتشغيل Stack لإطلاق حزمة CloudFormation بتنسيق us-east-1:
    قم بتشغيل Stack
  2. في حالة عنوان البريد الإلكتروني، أدخل عنوان البريد الإلكتروني الذي يمكنك الوصول إليه. سيتم إرسال ملخص تغييرات الكود إلى عنوان البريد الإلكتروني هذا.
  3. في حالة معرف النموذج، اتركه كنموذج anthropic.claude-v2 الافتراضي، وهو نموذج Anthropic Claude v2.

معلمة معرف النموذج

سيستغرق نشر القالب حوالي 4 دقائق.

  1. عندما تتلقى بريدًا إلكترونيًا من Amazon SES للتحقق من عنوان بريدك الإلكتروني، اختر الرابط المقدم لتخويل عنوان بريدك الإلكتروني.
  2. ستتلقى بريدًا إلكترونيًا بعنوان "ملخص التغييرات" للالتزام الأولي لمستودع العينات في CodeCommit.
  3. في وحدة تحكم AWS CloudFormation ، انتقل إلى ملف النواتج علامة تبويب المكدس المنشور.
  4. انسخ قيمة RepoCloneURL. أنت بحاجة إلى هذا للوصول إلى نموذج مستودع التعليمات البرمجية.

اختبر المحلول

يمكنك اختبار سير العمل من البداية إلى النهاية من خلال تولي دور المطور وإجراء بعض التغييرات في التعليمات البرمجية. تم إعداد مجموعة من نماذج الأكواد لك في CodeCommit. ل الوصول إلى مستودع CodeCommit، أدخل الأوامر التالية في IDE الخاص بك:

git clone <replace_with_value_of_RepoCloneURL>
cd my-sample-project
ls

ستجد بنية الدليل التالية لـ مجموعة تطوير سحابة AWS تطبيق (AWS CDK) الذي يقوم بإنشاء دالة Lambda لإجراء فرز فقاعي على سلسلة من الأعداد الصحيحة. يمكن الوصول إلى وظيفة Lambda عبر عنوان URL متاح للعامة.

.
├── README.md
├── app.py
├── cdk.json
├── lambda
│ └── index.py
├── my_sample_project
│ ├── __init__.py
│ └── my_sample_project_stack.py
├── requirements-dev.txt
├── requirements.txt
└── source.bat

قمت بإجراء ثلاثة تغييرات على رموز التطبيق.

  1. لتعزيز الوظيفة لدعم كل من خوارزمية الفرز السريع وخوارزمية فرز الفقاعات، خذ معلمة للسماح باختيار الخوارزمية المراد استخدامها، وقم بإرجاع كل من الخوارزمية المستخدمة والمصفوفة التي تم فرزها في الإخراج، واستبدل المحتوى بالكامل lambda/index.py مع الكود التالي:
# function to perform bubble sort on an array of integers
def bubble_sort(arr):
    for i in range(len(arr)):
        for j in range(len(arr)-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

# function to perform quick sort on an array of integers
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        less = [i for i in arr[1:] if i <= pivot]
        greater = [i for i in arr[1:] if i > pivot]
        return quick_sort(less) + [pivot] + quick_sort(greater)

# lambda handler
def lambda_handler(event, context):
    try:
        algorithm = event['queryStringParameters']['algorithm']
        numbers = event['queryStringParameters']['numbers']
        arr = [int(x) for x in numbers.split(',')]
        if ( algorithm == 'bubble'):
            arr = bubble_sort(arr)
        elif ( algorithm == 'quick'):
            arr = quick_sort(arr)
        else:
            arr = bubble_sort(arr)

        return {
            'statusCode': 200,
            'body': {
                'algorithm': algorithm,
                'numbers': arr
            }
        }
    except:
        return {
            'statusCode': 200,
            'body': {
                'algorithm': 'bubble or quick',
                'numbers': 'integer separated by commas'
            }
        }

  1. لتقليل إعداد مهلة الوظيفة من 10 دقائق إلى 5 ثوانٍ (لأننا لا نتوقع أن تعمل الوظيفة لفترة أطول من بضع ثوانٍ)، قم بتحديث السطر 47 في my_sample_project/my_sample_project_stack.py كما يلي:
timeout=Duration.seconds(5),

  1. لتقييد استدعاء الوظيفة باستخدام IAM لمزيد من الأمان، قم بتحديث السطر 56 بوصة my_sample_project/my_sample_project_stack.py كما يلي:
auth_type=_lambda.FunctionUrlAuthType.AWS_IAM

  1. ادفع تغييرات الكود عن طريق إدخال الأوامر التالية:
git commit -am 'added new changes for release v1.1'
git push

يؤدي هذا إلى بدء سير عمل نشر CodePipeline من الخطوات من 1 إلى 9 كما هو موضح في النظرة العامة على الحل. عند استدعاء نموذج Amazon Bedrock، قدمنا ​​المطالبة التالية:

Human: Review the following "git show" output enclosed within <gitshow> tags detailing code changes, and analyze their implications.
Assess the code changes made and provide a concise summary of the modifications as well as the potential consequences they might have on the code's functionality.
<gitshow>
{code_change}
</gitshow>

Assistant:

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

Based on the diff, the following main changes were made:

1. Two sorting algorithms were added - bubble sort and quick sort.
2. The lambda handler was updated to take an 'algorithm' query parameter to determine which sorting algorithm to use. By default it uses bubble sort if no algorithm is specified. 
3. The lambda handler now returns the sorting algorithm used along with the sorted numbers in the response body.
4. The lambda timeout was reduced from 10 mins to 5 seconds. 
5. The function URL authentication was changed from none to AWS IAM, so only authenticated users can invoke the URL.

Overall, this adds support for different sorting algorithms, returns more metadata in the response, reduces timeout duration, and tightens security around URL access. The main functional change is the addition of the sorting algorithms, which provides more flexibility in how the numbers are sorted. The other changes improve various non-functional attributes of the lambda function.

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

الموافقة على خط الأنابيب

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

اعتبارات إضافية

فيما يلي بعض الاعتبارات الإضافية عند تنفيذ هذا الحل:

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

تنظيف

لتنظيف الموارد التي تم إنشاؤها، انتقل إلى وحدة تحكم AWS CloudFormation واحذف مكدس CloudFormation.

وفي الختام

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

جرب هذا التنفيذ وأخبرنا بأفكارك في التعليقات.


عن المؤلف

الملف الشخصي بيكزان هوانغ هو أحد كبار مهندسي الحلول لدى AWS ومقره في سنغافورة. وهو يعمل مع المؤسسات المالية الكبرى لتصميم وبناء حلول آمنة وقابلة للتطوير ومتاحة للغاية في السحابة. خارج العمل، يقضي زان معظم وقت فراغه مع عائلته ويسيطر على ابنته البالغة من العمر 3 سنوات. يمكنك أن تجد زان على لينكدين:.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة