Zephyrnet Logosu

Amazon Bedrock'u kullanarak üretken yapay zeka ile kod inceleme ve onay verimliliğini artırın | Amazon Web Hizmetleri

Tarih:

Yazılım geliştirme dünyasında kod incelemesi ve onayı, geliştirilmekte olan yazılımın kalitesini, güvenliğini ve işlevselliğini sağlamak için önemli süreçlerdir. Ancak bu kritik süreçleri denetlemekle görevli yöneticiler çoğu zaman aşağıdakiler gibi çok sayıda zorlukla karşı karşıya kalır:

  • Teknik uzmanlık eksikliği – Yöneticiler, kullanılan programlama dili hakkında derinlemesine bir teknik anlayışa sahip olmayabilir veya uzun süredir yazılım mühendisliğiyle ilgilenmiyor olabilir. Bu, önerilen kod değişikliklerinin etkisini ve sağlamlığını doğru bir şekilde değerlendirmelerini zorlaştırabilecek bir bilgi boşluğuna neden olur.
  • Zaman kısıtlayıcıları – Kodun gözden geçirilmesi ve onaylanması, özellikle daha büyük veya daha karmaşık projelerde zaman alıcı bir süreç olabilir. Yöneticilerin incelemenin kapsamlılığı ile proje zaman çizelgelerine uyma baskısı arasında denge kurması gerekir.
  • Değişiklik taleplerinin hacmi – Yüksek hacimli değişiklik talepleri ile uğraşmak, özellikle birden fazla ekip ve projeyi yönetiyorlarsa, yöneticiler için yaygın bir zorluktur. Zaman kısıtlaması zorluğuna benzer şekilde, proje ilerlemesini engellememek için yöneticilerin bu talepleri verimli bir şekilde yerine getirebilmeleri gerekir.
  • Manuel efor – Kod incelemesi, yöneticilerin manuel çabasını gerektirir ve otomasyon eksikliği, süreci ölçeklendirmeyi zorlaştırabilir.
  • belgeleme – Kural inceleme ve onay sürecinin uygun şekilde belgelenmesi şeffaflık ve hesap verebilirlik açısından önemlidir.

Yükselişi ile üretken yapay zeka (AI) sayesinde yöneticiler artık bu dönüştürücü teknolojiden yararlanabilir ve inceleme ve onay sürecini daha önce mümkün olmayan bir şekilde kolaylaştırmak için bunu AWS dağıtım araçları ve hizmetleri paketiyle entegre edebilir. Bu yazıda, otomatik değişiklik analizi ve özetlemeyi onay iş akışı işlevselliğiyle birleştiren entegre bir uçtan uca dağıtım iş akışı sunan bir çözümü araştırıyoruz. Kullanırız Amazon Ana KayasıÖnde gelen yapay zeka girişimlerinin ve Amazon'un temel modellerini (FM'ler) bir API aracılığıyla kullanıma sunan, tam olarak yönetilen bir hizmettir; böylece kullanım durumunuza en uygun modeli bulmak için geniş bir FM yelpazesi arasından seçim yapabilirsiniz. Amazon Bedrock sunucusuz deneyimiyle hızlı bir şekilde başlayabilir, FM'leri kendi verilerinizle özel olarak özelleştirebilir ve herhangi bir altyapıyı yönetmeye gerek kalmadan AWS araçlarını kullanarak bunları uygulamalarınıza entegre edip dağıtabilirsiniz.

Çözüme genel bakış

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

mimari diyagram

İş akışı aşağıdaki adımlardan oluşur:

  1. Bir geliştirici, yeni kod değişikliklerini kod deposuna aktarır (örneğin, AWS CodeCommit), otomatik olarak bir başlangıcı tetikler AWS Kod Ardışık Düzeni dağıtım.
  2. Uygulama kodu bir kod oluşturma sürecinden geçer, güvenlik açığı taramaları gerçekleştirir ve tercih ettiğiniz araçları kullanarak birim testleri gerçekleştirir.
  3. AWS Kod Oluşturma depoyu alır ve mevcut taahhüt sürümü ile önceki taahhüt sürümü arasındaki kod farklarını çıkarmak için bir git show komutunu gerçekleştirir. Bu, bu sürümde yapılan kod değişikliklerini gösteren satır satır bir çıktı üretir.
  4. CodeBuild çıktıyı bir Amazon DinamoDB ek referans bilgileri içeren tablo:
    1. CodePipeline çalıştırma kimliği
    2. AWS Bölgesi
    3. Kod Pipeline adı
    4. CodeBuild yapı numarası
    5. Tarih ve saat
    6. Durum
  5. Amazon DynamoDB Akışları veri değişikliklerini yakalar masaya yapıldı.
  6. An AWS Lambda işlevi, yakalanan kaydı işlemek için DynamoDB akışı tarafından tetiklenir.
  7. İşlev, Amazon Bedrock'ta Anthropic Claude v2 modelini Amazon Bedrock aracılığıyla çağırır InvokeModel API'si Arama. Kod farklılıkları, bir bilgi istemiyle birlikte analiz için modele girdi olarak sağlanır ve kod değişikliklerinin özeti çıktı olarak döndürülür.
  8. Modelin çıktısı aynı DynamoDB tablosuna kaydedilir.
  9. Yönetici aracılığıyla bilgilendirilir Amazon Basit E-posta Hizmeti (Amazon SES) kod değişikliklerinin özetini ve dağıtım için onaylarının gerekli olduğunu bildirdi.
  10. Yönetici e-postayı inceler ve kararını (onaylama veya reddetme) CodePipeline konsolu aracılığıyla inceleme yorumlarıyla birlikte sunar.
  11. Onay kararı ve inceleme yorumları şu şekilde yakalanır: Amazon EventBridge, bunları DynamoDB'ye geri kaydetmek için bir Lambda işlevini tetikler.
  12. Onaylanırsa işlem hattı tercih ettiğiniz araçları kullanarak uygulama kodunu dağıtır. Reddedilirse iş akışı sona erer ve dağıtım daha fazla ilerlemez.

Aşağıdaki bölümlerde çözümü dağıtacak ve uçtan uca iş akışını doğrulayacaksınız.

Önkoşullar

Bu çözümdeki talimatları takip etmek için aşağıdaki önkoşullara ihtiyacınız vardır:

Ana Kaya Modeli Erişimi

Çözümü dağıtın

Çözümü dağıtmak için aşağıdaki adımları tamamlayın:

  1. Klinik Yığını Başlat CloudFormation yığınını başlatmak için us-east-1:
    Yığını Başlat
  2. İçin E, erişiminiz olan bir e-posta adresi girin. Kod değişikliklerinin özeti bu e-posta adresine gönderilecektir.
  3. İçin model kimliği, Anthropic Claude v2 modeli olan anthropic.claude-v2'yi varsayılan olarak bırakın.

Model Kimliği Parametresi

Şablonun dağıtılması yaklaşık 4 dakika sürecektir.

  1. Amazon SES'ten e-posta adresinizi doğrulamak için bir e-posta aldığınızda e-posta adresinizi yetkilendirmek için sağlanan bağlantıyı seçin.
  2. Örnek havuzun CodeCommit'e ilk kaydedilmesi için "Değişikliklerin Özeti" başlıklı bir e-posta alacaksınız.
  3. AWS CloudFormation konsolunda şuraya gidin: Çıkışlar dağıtılan yığının sekmesi.
  4. RepoCloneURL'nin değerini kopyalayın. Örnek kod deposuna erişmek için buna ihtiyacınız vardır.

Çözümü test edin

Geliştirici rolünü üstlenerek ve bazı kod değişikliklerini uygulayarak iş akışını uçtan uca test edebilirsiniz. CodeCommit'te sizler için bir takım örnek kodlar hazırlandı. İle CodeCommit deposuna erişinIDE'nize aşağıdaki komutları girin:

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

Bir dizi için aşağıdaki dizin yapısını bulacaksınız. AWS Bulut Geliştirme Kiti (AWS CDK) bir tam sayı dizisi üzerinde kabarcık sıralaması gerçekleştirmek için Lambda işlevi oluşturan uygulama. Lambda işlevine herkese açık bir URL aracılığıyla erişilebilir.

.
├── 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

Uygulama kodlarında üç değişiklik yapıyorsunuz.

  1. İşlevi hem hızlı sıralama hem de kabarcık sıralama algoritmasını destekleyecek şekilde geliştirmek için, kullanılacak algoritmanın seçimine izin verecek bir parametre alın ve hem kullanılan algoritmayı hem de sıralanan diziyi çıktıda döndürün, içeriğin tamamını değiştirin. lambda/index.py aşağıdaki kodla:
# 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. İşlevin zaman aşımı ayarını 10 dakikadan 5 saniyeye düşürmek için (çünkü işlevin birkaç saniyeden uzun çalışmasını beklemiyoruz), satır 47'yi güncelleyin. my_sample_project/my_sample_project_stack.py aşağıdaki gibidir:
timeout=Duration.seconds(5),

  1. Daha fazla güvenlik amacıyla IAM kullanarak işlevin çağrılmasını kısıtlamak için, içindeki 56. satırı güncelleyin. my_sample_project/my_sample_project_stack.py aşağıdaki gibidir:
auth_type=_lambda.FunctionUrlAuthType.AWS_IAM

  1. Aşağıdaki komutları girerek kod değişikliklerini gerçekleştirin:
git commit -am 'added new changes for release v1.1'
git push

Bu, çözüme genel bakış bölümünde özetlendiği gibi CodePipeline dağıtım iş akışını 1-9. Adımlardan başlatır. Amazon Bedrock modelini çağırırken aşağıdaki istemi sağladık:

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:

Birkaç dakika içinde, onayınızı bekleyen bir dağıtım hattınız olduğunu, yapılan kod değişikliklerinin listesini ve model tarafından oluşturulan değişikliklerin özetine ilişkin bir analizin bulunduğunu bildiren bir e-posta alacaksınız. Aşağıda çıktının bir örneği verilmiştir:

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.

Son olarak, dağıtımı incelemek ve onaylamak (veya reddetmek) için onaylayan rolünü üstlenirsiniz. E-postanızda, inceleme yorumlarınızı girmeniz ve dağıtımı onaylamanız için sizi CodePipeline konsoluna yönlendirecek bir köprü bulunmaktadır.

Ardışık Düzeni Onayla

Onaylanırsa işlem hattı, uygulamayı dağıtan bir sonraki adıma ilerleyecektir. Aksi takdirde boru hattı sona erer. Bu testin amacı doğrultusunda, işlem hattında tanımlanmış dağıtım adımları olmadığından Lambda işlevi gerçekte dağıtılmayacaktır.

Ek hususlar

Bu çözümü uygularken dikkate alınması gereken bazı ek noktalar şunlardır:

  • Farklı modeller farklı sonuçlar üretecektir, bu nedenle istediğiniz sonuçları elde etmek için farklı temel modelleri ve kullanım durumunuza yönelik farklı istemlerle deneyler yapmalısınız.
  • Sağlanan analizlerin insan yargısının yerini alması amaçlanmamaktadır. Üretken yapay zeka ile çalışırken olası halüsinasyonlara karşı dikkatli olmalı ve analizi yalnızca kod incelemesine yardımcı olacak ve hızlandıracak bir araç olarak kullanmalısınız.

Temizlemek

Oluşturulan kaynakları temizlemek için AWS CloudFormation konsoluna gidin ve CloudFormation yığınını silin.

Sonuç

Bu gönderi, yöneticilerin kod inceleme sürecinde karşılaştığı zorlukları araştırıyor ve onay sürecini hızlandırmak için üretken yapay zekanın artırılmış bir araç olarak kullanımını tanıtıyor. Önerilen çözüm, Amazon Bedrock kullanımını tipik bir dağıtım iş akışına entegre eder ve çözümün ortamınızda dağıtılmasına ilişkin rehberlik sağlar. Bu uygulama sayesinde yöneticiler artık üretken yapay zekanın yardımcı gücünden yararlanabilir ve bu zorlukların üstesinden kolaylıkla ve verimli bir şekilde gelebilir.

Bu uygulamayı deneyin ve yorumlarınızda düşüncelerinizi bize bildirin.


Yazar Hakkında

Profil fotoğrafıXan Huang AWS'de Kıdemli Çözüm Mimarıdır ve merkezi Singapur'dadır. Bulutta güvenli, ölçeklenebilir ve yüksek oranda kullanılabilir çözümler tasarlamak ve oluşturmak için büyük finans kurumlarıyla birlikte çalışıyor. Xan, iş dışında boş zamanlarının çoğunu ailesiyle geçiriyor ve 3 yaşındaki kızının patronluğu altında kalıyor. Xan'ı şu adreste bulabilirsiniz: LinkedIn.

spot_img

En Son İstihbarat

spot_img