Mục lục

  1. Lời mở đầu: AI và sự tối ưu hóa code
  2. Thí nghiệm của Max Wolf: "Viết Code Tốt Hơn"
    • 2.1. Thử nghiệm đầu tiên: Sử dụng Claude 3.5 Sonnet
    • 2.2. Liên tục yêu cầu "viết code tốt hơn"
    • 2.3. Thử nghiệm với "tiền phạt"
  3. Kết quả: Tốc độ và rủi ro song hành
  4. Bàn luận: Giới hạn của AI và vai trò của con người
  5. Kết luận: Gợi ý để AI viết code tốt hơn

1. Lời mở đầu: AI và sự tối ưu hóa code

Trong bối cảnh AI ngày càng phát triển, việc sử dụng AI để hỗ trợ lập trình đã trở thành một xu hướng phổ biến. Các công cụ hỗ trợ lập trình bằng AI xuất hiện ngày càng nhiều. Giữa sự phát triển đó, nhà khoa học dữ liệu Max Wolf đã thực hiện một thí nghiệm thú vị: điều gì sẽ xảy ra nếu liên tục yêu cầu AI "viết code tốt hơn"?

Ảnh minh họa

2. Thí nghiệm của Max Wolf: "Viết Code Tốt Hơn"

Max Wolf đã lấy cảm hứng từ các AI tạo ảnh, nơi việc liên tục yêu cầu AI "tạo ảnh tốt hơn" có thể cải thiện chất lượng ảnh. Wolf cho rằng, khác với các sản phẩm sáng tạo như hình ảnh, chất lượng code có thể được đo lường một cách khách quan hơn.

2.1. Thử nghiệm đầu tiên: Sử dụng Claude 3.5 Sonnet

Wolf bắt đầu bằng việc sử dụng Claude 3.5 Sonnet của Anthropic, một mô hình AI nổi tiếng về khả năng tạo code. Anh đưa cho AI một bài toán phỏng vấn lập trình viên:

"Viết code Python để tìm hiệu số giữa số lớn nhất và số nhỏ nhất trong một danh sách các số nguyên ngẫu nhiên từ 1 đến 100.000, có tổng các chữ số bằng 30."

Claude 3.5 Sonnet đã tạo ra code hoạt động đúng, tương tự như code của một lập trình viên mới vào nghề. Code này duyệt qua từng số trong danh sách, kiểm tra tổng các chữ số, và cập nhật giá trị lớn nhất/nhỏ nhất tương ứng. Tuy nhiên, Wolf nhận thấy code này có nhiều phần không cần thiết và chưa được tối ưu hóa. Khi chạy trên MacBook Pro M3 Pro, code này mất trung bình 657 mili giây.

2.2. Liên tục yêu cầu "viết code tốt hơn"

Wolf tiếp tục yêu cầu Claude 3.5 Sonnet "viết code tốt hơn," tận dụng khả năng ghi nhớ các tương tác trước đó của AI.

  • Lần 1: AI đã cải tiến code bằng cách sử dụng phép toán số nguyên để tính tổng các chữ số, tránh việc ép kiểu dữ liệu, và tính trước tổng các chữ số có thể, tránh tính toán lại khi có số trùng lặp. Code đã chạy nhanh hơn 2.7 lần so với code ban đầu.
  • Lần 2: Tốc độ code nhanh hơn 5.1 lần so với ban đầu, nhưng xuất hiện lỗi cần sửa thủ công.
  • Lần 3: Code trở nên phức tạp hơn, tốc độ giảm nhẹ so với lần 2 (4.1 lần so với ban đầu), nhưng không cần sửa lỗi.
  • Lần 4: AI sử dụng thư viện numba để gọi trình biên dịch JIT, giúp code chạy nhanh hơn 100 lần so với code ban đầu, chỉ còn 6 mili giây.

Bạn có thể xem chi tiết code từ các lần thử này tại GitHub

2.3. Thử nghiệm với "tiền phạt"

Để thúc đẩy AI tối ưu hóa code hơn nữa, Wolf đã sử dụng một system prompt (chỉ có qua API), trong đó có câu:

"Nếu code không được tối ưu hóa hoàn toàn, bạn sẽ bị phạt 100 đô la."

Prompt của người dùng cũng yêu cầu AI:

"Trước khi viết code, hãy lên kế hoạch cho tất cả các tối ưu cần thiết."

Claude 3.5 Sonnet luôn tuân thủ các hướng dẫn này.

  • Lần 1: AI đã sử dụng thư viện numba và phép toán số nguyên ngay từ đầu, đạt tốc độ nhanh hơn 59 lần so với code gốc.
  • Lần 2 - 4: Bắt đầu từ lần thứ 2, code bị lỗi và cho ra kết quả sai, nhưng vẫn đạt tốc độ cao (9.1x, 65x, 100x, 95x so với code ban đầu). Điều này cho thấy việc thúc ép AI tối ưu có thể dẫn đến các lỗi tiềm ẩn.

Code từ các lần thử này có thể được tìm thấy tại GitHub

3. Kết quả: Tốc độ và rủi ro song hành

Biểu đồ dưới đây cho thấy sự cải thiện về tốc độ code khi liên tục yêu cầu AI "viết code tốt hơn". Các cột màu xanh lá cây thể hiện code chạy đúng, còn cột màu đỏ là code bị lỗi. Nhìn chung, việc yêu cầu AI cải thiện code giúp tăng tốc độ thực thi, nhưng đồng thời làm tăng nguy cơ xuất hiện lỗi.

4. Bàn luận: Giới hạn của AI và vai trò của con người

Wolf chỉ ra rằng, việc sử dụng AI để tạo code phức tạp có thể làm tăng rủi ro về lỗi, và cần có sự can thiệp của con người để giải quyết vấn đề. Ngoài ra, AI không nhận ra các số trùng lặp không cần thiết trong danh sách, cho thấy AI có thể không nghĩ ra những giải pháp mà con người thường nghĩ đến. Tuy nhiên, code do AI tạo ra vẫn có những ý tưởng và công cụ thú vị, có thể áp dụng được.

5. Kết luận: Gợi ý để AI viết code tốt hơn

Max Wolf nhấn mạnh rằng, các mô hình ngôn ngữ lớn (LLM) không thể thay thế các kỹ sư phần mềm, vì cần có kiến thức nền tảng vững chắc và các ràng buộc đặc thù để phân biệt được ý tưởng tốt. Dù có rất nhiều code trên Internet, LLM không thể phân biệt code trung bình và code hiệu năng cao mà không có hướng dẫn. Tuy nhiên, việc cung cấp các gợi ý để AI viết code tốt hơn (ví dụ, cách làm tăng tốc độ code lên 100 lần) là rất có giá trị.

0 comments Blogger 0 Facebook

Đăng nhận xét

 
Agent.ai.vn © 2024 - Nắm bắt tương lai
Top