Logo Zephyrnet

Nâng cao hiệu quả phê duyệt và đánh giá mã bằng AI tổng hợp bằng cách sử dụng Amazon Bedrock | Dịch vụ web của Amazon

Ngày:

Trong thế giới phát triển phần mềm, việc xem xét và phê duyệt mã là các quy trình quan trọng để đảm bảo chất lượng, tính bảo mật và chức năng của phần mềm đang được phát triển. Tuy nhiên, các nhà quản lý được giao nhiệm vụ giám sát các quy trình quan trọng này thường phải đối mặt với nhiều thách thức, chẳng hạn như sau:

  • Thiếu chuyên môn kỹ thuật – Người quản lý có thể không có hiểu biết kỹ thuật sâu về ngôn ngữ lập trình được sử dụng hoặc có thể không tham gia vào lĩnh vực công nghệ phần mềm trong một thời gian dài. Điều này dẫn đến lỗ hổng kiến ​​thức có thể khiến họ khó đánh giá chính xác tác động và tính đúng đắn của những thay đổi mã được đề xuất.
  • Hạn chế thời gian – Xem xét và phê duyệt mã có thể là một quá trình tốn thời gian, đặc biệt là trong các dự án lớn hơn hoặc phức tạp hơn. Người quản lý cần cân bằng giữa tính kỹ lưỡng của việc xem xét và áp lực phải đáp ứng các mốc thời gian của dự án.
  • Khối lượng yêu cầu thay đổi – Xử lý khối lượng lớn yêu cầu thay đổi là một thách thức chung đối với các nhà quản lý, đặc biệt nếu họ đang giám sát nhiều nhóm và dự án. Tương tự như thách thức về hạn chế về thời gian, người quản lý cần có khả năng xử lý các yêu cầu đó một cách hiệu quả để không cản trở tiến độ dự án.
  • Nỗ lực thủ công – Việc đánh giá mã đòi hỏi nỗ lực thủ công của người quản lý và việc thiếu tự động hóa có thể gây khó khăn cho việc mở rộng quy trình.
  • Tài liệu – Tài liệu thích hợp về quy trình xem xét và phê duyệt quy tắc rất quan trọng để đảm bảo tính minh bạch và trách nhiệm giải trình.

Với sự gia tăng của trí tuệ nhân tạo sáng tạo (AI), các nhà quản lý hiện có thể khai thác công nghệ biến đổi này và tích hợp nó với bộ công cụ và dịch vụ triển khai AWS để hợp lý hóa quy trình xem xét và phê duyệt theo cách chưa từng có trước đây. Trong bài đăng này, chúng tôi khám phá một giải pháp cung cấp quy trình triển khai từ đầu đến cuối tích hợp kết hợp phân tích và tóm tắt thay đổi tự động cùng với chức năng quy trình phê duyệt. Chúng tôi sử dụng nền tảng Amazon, một dịch vụ được quản lý hoàn toàn giúp cung cấp các mô hình nền tảng (FM) từ các công ty khởi nghiệp AI hàng đầu và Amazon thông qua API, vì vậy, bạn có thể chọn từ nhiều loại FM để tìm ra mô hình phù hợp nhất cho trường hợp sử dụng của mình. Với trải nghiệm Amazon Bedrock serverless, bạn có thể bắt đầu nhanh chóng, tùy chỉnh FM riêng tư bằng dữ liệu của riêng mình, đồng thời tích hợp và triển khai chúng vào ứng dụng của mình bằng các công cụ AWS mà không cần phải quản lý bất kỳ cơ sở hạ tầng nào.

Tổng quan về giải pháp

Sơ đồ sau minh họa kiến ​​trúc giải pháp.

Sơ đồ kiến ​​trúc

Quy trình làm việc bao gồm các bước sau:

  1. Nhà phát triển đẩy các thay đổi mã mới vào kho lưu trữ mã của họ (chẳng hạn như Cam kết mã AWS), tự động kích hoạt sự bắt đầu của một Đường ống dẫn mã AWS triển khai.
  2. Mã ứng dụng trải qua quy trình xây dựng mã, thực hiện quét lỗ hổng và tiến hành kiểm tra đơn vị bằng các công cụ ưa thích của bạn.
  3. Xây dựng mã AWS truy xuất kho lưu trữ và thực hiện lệnh git show để trích xuất sự khác biệt về mã giữa phiên bản cam kết hiện tại và phiên bản cam kết trước đó. Điều này tạo ra kết quả từng dòng cho biết những thay đổi về mã được thực hiện trong bản phát hành này.
  4. CodeBuild lưu kết quả đầu ra vào một Máy phát điện Amazon bảng với thông tin tham khảo bổ sung:
    1. ID chạy CodePipeline
    2. Khu vực AWS
    3. Tên đường ống Code
    4. Số bản dựng CodeBuild
    5. Ngày và thời gian
    6. Trạng thái
  5. Luồng Amazon DynamoDB nắm bắt các sửa đổi dữ liệu được thực hiện trên bàn.
  6. An AWS Lambda được kích hoạt bởi luồng DynamoDB để xử lý bản ghi đã ghi.
  7. Hàm gọi mô hình Anthropic Claude v2 trên Amazon Bedrock thông qua Amazon Bedrock API gọi mô hình gọi. Những khác biệt về mã, cùng với lời nhắc, được cung cấp làm đầu vào cho mô hình để phân tích và bản tóm tắt các thay đổi mã được trả về dưới dạng đầu ra.
  8. Đầu ra từ mô hình được lưu trở lại cùng một bảng DynamoDB.
  9. Người quản lý được thông báo qua Dịch vụ Email Đơn giản của Amazon (Amazon SES) về bản tóm tắt các thay đổi mã và cần có sự phê duyệt của họ để triển khai.
  10. Người quản lý xem xét email và đưa ra quyết định của họ (phê duyệt hoặc từ chối) cùng với mọi nhận xét đánh giá thông qua bảng điều khiển CodePipeline.
  11. Quyết định phê duyệt và ý kiến ​​đánh giá được ghi lại bởi Sự kiện Amazon, kích hoạt hàm Lambda để lưu chúng trở lại DynamoDB.
  12. Nếu được phê duyệt, quy trình sẽ triển khai mã ứng dụng bằng các công cụ ưa thích của bạn. Nếu bị từ chối, quy trình làm việc sẽ kết thúc và quá trình triển khai sẽ không tiếp tục nữa.

Trong các phần sau, bạn triển khai giải pháp và xác minh quy trình làm việc toàn diện.

Điều kiện tiên quyết

Để làm theo hướng dẫn trong giải pháp này, bạn cần có các điều kiện tiên quyết sau:

Truy cập mô hình Bedrock

Triển khai giải pháp

Để triển khai giải pháp, hãy hoàn thành các bước sau:

  1. Chọn Khởi chạy Stack để khởi chạy ngăn xếp CloudFormation trong us-east-1:
    Khởi chạy Stack
  2. Trong Địa chỉ email, hãy nhập địa chỉ email mà bạn có quyền truy cập. Bản tóm tắt các thay đổi về mã sẽ được gửi đến địa chỉ email này.
  3. Trong id mẫu, hãy để mặc định là anthropic.claude-v2, là mô hình Anthropic Claude v2.

Thông số ID mẫu

Việc triển khai mẫu sẽ mất khoảng 4 phút.

  1. Khi bạn nhận được email từ Amazon SES để xác minh địa chỉ email của mình, hãy chọn liên kết được cung cấp để ủy quyền địa chỉ email của bạn.
  2. Bạn sẽ nhận được email có tiêu đề “Tóm tắt các thay đổi” cho cam kết ban đầu của kho lưu trữ mẫu vào CodeCommit.
  3. Trên bảng điều khiển AWS CloudFormation, điều hướng đến Kết quả đầu ra tab của ngăn xếp được triển khai.
  4. Sao chép giá trị của RepoCloneURL. Bạn cần điều này để truy cập vào kho lưu trữ mã mẫu.

Kiểm tra giải pháp

Bạn có thể kiểm tra quy trình công việc từ đầu đến cuối bằng cách đảm nhận vai trò của nhà phát triển và thực hiện một số thay đổi về mã. Một bộ mã mẫu đã được chuẩn bị cho bạn trong CodeCommit. ĐẾN truy cập kho lưu trữ CodeCommit, hãy nhập các lệnh sau trên IDE của bạn:

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

Bạn sẽ tìm thấy cấu trúc thư mục sau đây cho một Bộ công cụ phát triển đám mây AWS (AWS CDK) ứng dụng tạo hàm Lambda để thực hiện sắp xếp nổi bật trên một chuỗi số nguyên. Hàm Lambda có thể truy cập được thông qua một URL có sẵn công khai.

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

Bạn thực hiện ba thay đổi đối với mã ứng dụng.

  1. Để tăng cường chức năng hỗ trợ cả thuật toán sắp xếp nhanh và sắp xếp bong bóng, hãy lấy một tham số cho phép lựa chọn thuật toán để sử dụng và trả về cả thuật toán đã sử dụng và mảng đã sắp xếp ở đầu ra, thay thế toàn bộ nội dung của lambda/index.py với mã sau:
# 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. Để giảm cài đặt thời gian chờ của hàm từ 10 phút xuống còn 5 giây (vì chúng tôi không mong đợi hàm này chạy lâu hơn vài giây), hãy cập nhật dòng 47 trong my_sample_project/my_sample_project_stack.py như sau:
timeout=Duration.seconds(5),

  1. Để hạn chế việc gọi hàm bằng IAM nhằm tăng cường bảo mật, hãy cập nhật dòng 56 trong my_sample_project/my_sample_project_stack.py như sau:
auth_type=_lambda.FunctionUrlAuthType.AWS_IAM

  1. Đẩy các thay đổi mã bằng cách nhập các lệnh sau:
git commit -am 'added new changes for release v1.1'
git push

Việc này bắt đầu quy trình triển khai CodePipeline từ Bước 1–9 như được nêu trong phần tổng quan về giải pháp. Khi gọi mô hình Amazon Bedrock, chúng tôi đã đưa ra lời nhắc sau:

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:

Trong vòng vài phút, bạn sẽ nhận được email thông báo rằng bạn có quy trình triển khai đang chờ phê duyệt, danh sách các thay đổi mã đã thực hiện và bản phân tích về bản tóm tắt các thay đổi do mô hình tạo ra. Sau đây là một ví dụ về đầu ra:

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.

Cuối cùng, bạn đảm nhận vai trò người phê duyệt để xem xét và phê duyệt (hoặc từ chối) việc triển khai. Trong email của bạn, có một siêu liên kết sẽ đưa bạn đến bảng điều khiển CodePipeline để bạn nhập nhận xét đánh giá và phê duyệt việc triển khai.

Đường ống phê duyệt

Nếu được phê duyệt, quy trình sẽ tiến hành bước tiếp theo là triển khai ứng dụng. Nếu không, đường ống kết thúc. Vì mục đích của thử nghiệm này, hàm Lambda sẽ không thực sự được triển khai vì không có bước triển khai nào được xác định trong quy trình.

Xem xét bổ sung

Sau đây là một số cân nhắc bổ sung khi triển khai giải pháp này:

  • Các mô hình khác nhau sẽ tạo ra kết quả khác nhau, vì vậy bạn nên tiến hành thử nghiệm với các mô hình nền tảng khác nhau và các lời nhắc khác nhau cho trường hợp sử dụng của mình để đạt được kết quả mong muốn.
  • Các phân tích được cung cấp không nhằm thay thế sự đánh giá của con người. Bạn nên lưu ý đến những ảo giác tiềm ẩn khi làm việc với AI tổng quát và chỉ sử dụng phân tích như một công cụ để hỗ trợ và tăng tốc độ xem xét mã.

Làm sạch

Để dọn sạch các tài nguyên đã tạo, hãy đi tới bảng điều khiển AWS CloudFormation và xóa ngăn xếp CloudFormation.

Kết luận

Bài đăng này khám phá những thách thức mà các nhà quản lý phải đối mặt trong quá trình xem xét mã và giới thiệu cách sử dụng AI tổng quát như một công cụ tăng cường để đẩy nhanh quá trình phê duyệt. Giải pháp được đề xuất tích hợp việc sử dụng Amazon Bedrock trong quy trình triển khai điển hình và cung cấp hướng dẫn về cách triển khai giải pháp trong môi trường của bạn. Thông qua việc triển khai này, giờ đây các nhà quản lý có thể tận dụng sức mạnh hỗ trợ của AI tổng hợp và giải quyết những thách thức này một cách dễ dàng và hiệu quả.

Hãy thử triển khai này và cho chúng tôi biết suy nghĩ của bạn trong phần bình luận.


Lưu ý

Hồ sơ ẢnhXan Hoàng là Kiến trúc sư giải pháp cấp cao của AWS và có trụ sở tại Singapore. Anh làm việc với các tổ chức tài chính lớn để thiết kế và xây dựng các giải pháp an toàn, có thể mở rộng và có tính khả dụng cao trên đám mây. Ngoài công việc, Xan dành phần lớn thời gian rảnh rỗi cho gia đình và được cô con gái 3 tuổi quản lý. Bạn có thể tìm thấy Xan trên LinkedIn.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img