Hướng dẫn sử dụng AI như một Senior Developer: Tối ưu hóa LLM và Agent trong lập trình
Bài viết chia sẻ quy trình 'AI Guidance' giúp các lập trình viên Senior tận dụng sức mạnh của LLM và AI Agent để tăng tốc độ phát triển phần mềm mà không bị lạc hướng. Thay vì để AI viết code tùy hứng, phương pháp này tập trung vào hướng dẫn chi tiết, lập kế hoạch module hóa và kiểm soát chặt chẽ từng bước triển khai.

Mỗi năm tôi đều dành thời gian thử nghiệm các mô hình ngôn ngữ lớn (LLM), và giờ đây tôi tin rằng các AI Agent cuối cùng đã đủ khả năng để thực hiện những việc hữu ích. Dưới đây là cách tôi tận dụng AI vai trò một Senior Developer.
Tôi thường xuyên thử nghiệm nhiều ý tưởng khác nhau, vì vậy việc sở hữu một công nghệ có thể nhanh chóng hiện thực hóa những gì đang trong đầu tôi thực sự là một bước ngoặt lớn.
Meme về vòng lặp lập trình
Tuy nhiên, LLM thường tạo ra rất nhiều "code rác" nếu bạn không chỉ dẫn cực kỳ cụ thể những gì cần làm. Nhưng nếu bạn đã biết chính xác phải làm gì, bạn có thể tự triển khai nó nhanh gấp 10 lần bất kỳ AI nào đang đi lòng vòng.
Đây không phải là bí mật chưa từng được thảo luận, mà là một mô hình rất phổ biến gọi là AI Guidance. Tôi đã áp dụng lại nó và thực sự tiến triển với các triển khai thực tế.
Nâng cao mức độ suy luận
Trái ngược với bạn (một Senior Developer), LLM cần những chỉ dẫn cụ thể hơn là những hướng dẫn chung chung. Bạn có thể chỉ cần đi code những gì mình cần, nhưng để LLM làm được việc đó, nó cần những gợi ý và định hướng rõ ràng.
Để tận dụng tốt khả năng định hướng của LLM, về cơ bản bạn cần đặt mức độ suy luận ở mức cao nhất, nếu không nó sẽ thường xuyên đi lạc hướng.
Cách hiệu quả với tôi là sử dụng thiết lập xHigh trong Copilot. Mặc dù nó mất khá nhiều thời gian để "nghĩ", nhưng kết quả đầu ra rất sát ý. Và điều thú vị là nó không tiêu tốn giới hạn hàng tháng của bạn!
Chiến lược xây dựng Prompt
Rất đơn giản: hãy viết những gì bạn muốn ở phần đầu, và thêm mọi tài nguyên mà bạn có thể nghĩ ra để hỗ trợ ý tưởng triển khai của mình.
Điều này cực kỳ quan trọng vì nếu không cung cấp tất cả các tài nguyên bạn đang giữ trong đầu, AI có thể sẽ bỏ sót điều gì đó. Điều này có vẻ hiển nhiên, nhưng chúng ta thường quên nó khi đưa ra prompt, có lẽ vì chúng ta vẫn nghĩ LLM là một chương trình toàn năng có thể đọc được suy nghĩ.
Quy trình triển khai đa bước
Chuẩn bị
Vì chúng ta là kỹ sư phần mềm chuyên nghiệp, chúng ta sẽ không yêu cầu AI triển khai toàn bộ một website hay ứng dụng ngay lập tức.
Thay vào đó, chúng ta làm công việc của con người trước:
- Nghĩ về ứng dụng của mình dưới dạng các module/thư viện - những công việc thủ công mà không ai muốn trả tiền để làm.
- Thực hiện lệnh
git initvà thêm một số tệp khởi đầu nếu cần.
Lập kế hoạch
Làm những điều hiển nhiên mà bạn thường làm để có kết quả tốt hơn cho bản thân, sau đó yêu cầu Agent trong chế độ Agent Mode lập một kế hoạch toàn diện cho việc triển khai trong tương lai, tập trung vào một hoặc vài tệp.
Sau đó, hãy xem độ dài của (các) tệp kế hoạch. Bạn không cần đi sâu vào chi tiết, hãy coi chúng như các Pull Request (PR) từ đồng nghiệp - chỉ đọc những gì ở bề mặt!
Hãy yêu cầu Agent lặp lại kế hoạch cho đến khi bạn hài lòng với độ dài của các kế hoạch (hãy tưởng tượng xem sẽ mất bao nhiêu văn bản nếu bạn tự viết những thứ đó).
Nếu bạn nhớ ra những gì đã bị bỏ sót ban đầu, đây là lúc thêm các chi tiết quên hoặc bổ sung.
Và tất nhiên, hãy yêu cầu lặp lại lần nữa.
Phác thảo khung sườn
Sau khi xong, hãy commit các tệp đó và yêu cầu nó lặp lại.
Nó giống như lệnh apt update bạn thấy mỗi khi cài đặt một gói mới vậy.
Sau đó yêu cầu nó vẽ ra chương trình chỉ sử dụng các Interface và Abstract Class. Đây là lúc mọi thứ bắt đầu thú vị.
Nó sẽ xuất ra một số code, bạn phải xem xét kỹ hơn một chút so với các tệp kế hoạch vì đây là nền tảng mà Agent sẽ sử dụng. Nó sẽ tuân theo các interface và lớp này rất cẩn thận nếu chúng hợp lý.
Bạn có thể muốn chỉnh sửa các tệp để đưa ra các sửa đổi, nhưng Agent có khả năng sẽ bỏ qua chúng. Thay vào đó, hãy sao chép các thay đổi theo từng phần và đưa ra cùng một lúc.
Cá nhân tôi tự chỉnh sửa code rồi sao chép từng phần cho Agent, đôi khi giải thích cách/cái gì/tại sao rồi mới đưa ra prompt.
Commit các tệp.
Loại bỏ và tập trung
Hãy xem lại các tệp phác thảo, nghĩ xem还有什么 có thể tách nhỏ hoặc tối thiểu hóa thêm, vì bạn muốn Agent tập trung hoàn toàn vào việc triển khai cốt lõi. Bạn nên hướng dẫn nó bỏ qua bất cứ thứ gì có thể gây lãng phí thời gian thay vì quan tâm đến phần chính.
Ví dụ: Particle System (Hệ thống hạt) là một phần của hệ thống lớn hơn, nhưng nó cũng bao gồm các hệ thống con. Bạn nên chọn khéo léo phần mà Agent nên tập trung vào.
Triển khai thực tế
Khi bạn hài lòng với bản phác thảo — đây là một thời điểm rất thú vị vì thường có nghĩa là bạn đang đi đúng hướng và có hiểu biết rất tốt về triển khai tiềm năng (điều bạn nên làm trước khi tiếp tục).
Điều đó có nghĩa là Agent cũng sẽ có sự hiểu biết tương tự và bạn có thể tiến hành yêu cầu Agent triển khai nó bằng toàn bộ cơ sở kiến thức, các kế hoạch và bản phác thảo.
Khi xong, hãy xem nhanh xem nó có thực sự tuân theo bản phác thảo và trông giống thứ có thể hoạt động được không.
Commit.
Tạo bản Demo
Để thực sự xem nó tốt hay dở, hãy yêu cầu nó tạo một bản demo cực kỳ tối thiểu chỉ trong một file HTML, sử dụng module/thư viện này.
Xem lại file demo, tìm cách sử dụng module/thư viện, nó sẽ cho bạn biết các interface có đủ tốt không:
- Nếu việc cài đặt module của bạn rất tối thiểu và đơn giản, đó là thành công.
- Nếu việc sử dụng nó phức tạp hơn mức bạn muốn, bạn nên tiến hành tinh chỉnh nó.
Dù sao thì cũng commit.
Tinh chỉnh
Tinh chỉnh có thể là khó khăn nhất vì Agent sẽ cần theo dõi và cập nhật các tệp Plan/Sketch/Implementation/Demo — đó là lý do chúng tôi bám theo cách tiếp cận module thay vì toàn bộ ứng dụng — chưa có LLM nào có thể làm được điều đó vào lúc này.
Không có lời khuyên nào để làm tốt hơn điều này, hãy đảm bảo bạn thực hiện commit và xem xét các thay đổi code quan trọng với bạn.
Nó có khả năng sẽ thay đổi triển khai và demo một cách riêng lẻ và lười biếng — điều này tốt, hãy hỏi những thứ như "có thể làm ... trong demo với triển khai hiện tại không?".
Tiếp tục lặp lại cho đến khi việc sử dụng trong file demo trông đủ sạch sẽ và kiểm tra hiệu suất (tab Performance của devtools trong trình duyệt).
Các interface rất quan trọng vì chúng là những thứ mà bạn sẽ làm việc cùng và chúng là ràng buộc tự nhiên cho Agent.
Hợp nhất
Tiếp tục cho đến khi bạn triển khai các phiên bản hài lòng của tất cả các module mà bạn thấy ứng dụng của mình bao gồm.
Khi bạn đã "xây dựng" xong các module, bạn có thể cuối cùng tham gia hoàn toàn vào quá trình mà không cần AI và có thể bắt đầu nhận mức lương xứng đáng.
Sử dụng AI/LLM/Agent ở giai đoạn này rất nguy hiểm vì nó có thể làm hỏng tất cả các thư viện và chính code đó, vì lý do [chia công việc cho Agent thành nhiều phần] là để nó không "quên" nhiều chi tiết và thực hiện công việc tập trung, thay vì liên tục bị tràn ngữ cảnh và nén dữ liệu.
Đây là giai đoạn để bạn tỏa sáng!
Sau này bạn có thể refactor hoàn toàn các module do AI xây dựng.
Kết luận
Vâng, nó trông giống hệt như cách bạn làm dự án với mức lương 200.000 đô la, điều mà chúng ta thường không làm, vì vậy chúng ta luôn quên rằng sự bình thường đó tồn tại.
Tôi đã kiểm tra phương pháp này trên dự án lớn của mình, nó hoạt động khá tốt. Nó tất nhiên mất thời gian, nhưng ít nhất bây giờ tôi có thể ít bị mất động lực hơn vì LLM có thể xây dựng một cái gì đó trông giống một giải pháp hoạt động được trong 1 ngày, so với tôi thì mất 2 tháng để xây dựng một thứ không hoạt động — Viva!



