Lợi nhuận:
- Khả năng ánh xạ chế độ trò chuyện để điều chỉnh loại nhiệm vụ bằng cách hoàn thành nội tuyến
- Khả năng viết các lời nhắc sản xuất mạnh mẽ bao gồm các hợp đồng đầu vào/đầu ra, các trường hợp đặc biệt và các ràng buộc về kiểu dáng
- Khả năng xác thực mã được tạo và mọi phụ thuộc mới được đề xuất trước khi hợp nhất
Điểm liên hệ đầu tiên của nhà phát triển với AI thường là tự động hoàn thành — một tính năng gợi ý dòng tiếp theo khi bạn nhập — hoặc nói "nhập chức năng đó" vào cửa sổ trò chuyện. Cả hai đều sử dụng cùng một động cơ nhưng yêu cầu các nguyên tắc khác nhau. Trong đơn vị này, chúng tôi chuyển đổi việc tạo mã từ việc "ghi mã" ngẫu nhiên thành một bước kỹ thuật có đầu ra có thể dự đoán và kiểm chứng được.
Mục tiêu là biến AI từ một công cụ tăng tốc máy đánh máy của bạn thành một người học việc hoạt động trong các giới hạn bạn đặt ra. Một người học việc được hướng dẫn tốt sẽ tiết kiệm được thời gian; Một người học việc không được hướng dẫn sẽ tạo ra một mớ hỗn độn mà sau này bạn phải dọn dẹp.
Hai chế độ sử dụng: Hoàn thành nội tuyến và trò chuyện
Việc hoàn thành nội tuyến sẽ diễn ra khi bạn nhập trình soạn thảo của mình; Bạn gõ một chữ ký hàm hoặc một dòng chú thích và nó sẽ gợi ý phần còn lại. Nó rất tốt về tốc độ, nhưng nó có bối cảnh hẹp: nó chỉ nhìn thấy mã ở khu vực ngay lập tức. Đó là lý do tại sao sẽ hiệu quả nhất khi bạn viết rõ ý định của mình trong bình luận. Ví dụ: // xác thực email người dùng, hãy ném ValidationError nếu nhận xét không hợp lệ sẽ cải thiện đáng kể đề xuất bên dưới.
Chế độ trò chuyện dành cho các tác vụ lớn hơn và có cấu trúc: "Thêm phân trang vào lớp này", "Trích xuất giao diện của dịch vụ đó". Ở đây bạn có thể thoải mái đưa ra vai trò, bối cảnh và hình thức. Nguyên tắc chung là: hoàn thành những nhiệm vụ nhỏ và trôi chảy, trò chuyện đối với những nhiệm vụ đòi hỏi tư duy và cấu trúc.
Mẹo: Đừng mù quáng chấp nhận đề xuất hoàn thành bằng "Tab". Đọc dòng gợi ý trong một giây; Tên biến không chính xác hoặc điều kiện đảo ngược thường bị rò rỉ từ đây.
Các bước để chuyển ý định thành mã
- Xác định hợp đồng. Hành vi đầu vào, đầu ra và lỗi của hàm là gì? Giống như "Nhận email, bình thường hóa nếu hợp lệ, đưa ra lỗi nếu không hợp lệ".
- Nêu các hạn chế. Không sử dụng phụ thuộc bên ngoài? Một hướng dẫn phong cách cụ thể? Có giới hạn hiệu suất không?
- Đưa ra một ví dụ. Cặp đầu vào-đầu ra (“ali@x.com → hợp lệ, ali@ → lỗi”) chuyển sự hiểu biết của mô hình về ý định từ dự đoán sang chính xác.
- Yêu cầu những miếng nhỏ. Một chức năng, một trách nhiệm. Sau đó chuyển sang cái tiếp theo.
- Đọc và chạy mã được tạo. Biên dịch + thử thủ công nhanh chóng là bước đảm bảo rẻ nhất.
Ba hộp nhỏ
Trường hợp 1 - Sản xuất dựa trên nhận xét làm tăng độ chính xác. Lần đầu tiên, một nhà phát triển đã yêu cầu chức năng phân tích ngày tháng với phần thân trống và nhận được kết quả chính xác sau 3 vòng. Trong lần thử thứ hai, khi tôi xác định hàm bằng nhận xét 4 dòng (định dạng được chấp nhận, quy tắc múi giờ, điều kiện lỗi) và yêu cầu hàm đó, mã hoạt động ở vòng đầu tiên đã xuất hiện. Cùng một mẫu, cùng ngày; sự khác biệt chỉ là sự rõ ràng của ý định.
Trường hợp 2 - Không chỉ định phiên bản là tốn kém. Một nhóm gặp khó khăn với API dựa trên lệnh gọi lại cũ thay thế fs.promises trong mã được tạo cho Node.js. Khi dòng "Sử dụng Node 20, ESM, async/await" được thêm vào lời nhắc, quá trình sản xuất đã diễn ra theo dự án ngay lần đầu tiên; Thời gian trung bình dành cho việc chỉnh sửa là 12 phút đã được đặt lại.
Trường hợp 3 - Mức tăng thực sự trong mã soạn sẵn. Một microservice cần có 6 DTO mới (Đối tượng truyền dữ liệu - một lớp dữ liệu đơn giản mang dữ liệu giữa các lớp) và các quy tắc xác thực của chúng. Trước đây, khoảng 90 phút làm việc thủ công đã giảm xuống còn 35 phút khi được AI sản xuất và xem xét; Vì độ lặp lại mã cao và mẫu rõ ràng nên AI đã hoạt động trong lĩnh vực hiệu quả nhất ở đây.
Bốn mẫu có thể sao chép
Tạo chức năng dựa trên hợp đồng:
Vai trò: Bạn là một nhà phát triển {{ngôn ngữ}} siêng năng. Hợp đồng chức năng:- Tên: {{name}}- Đầu vào: {{loại và ý nghĩa của chúng}}- Đầu ra: {{loại và ý nghĩa}}- Trạng thái lỗi: {{cái gì được ném/trả lại khi}}Ràng buộc: {{không có phụ thuộc bên ngoài / kiểu / hiệu suất}}Ví dụ:- {{input_1}} -> {{output_1}}- {{entry_2}} -> {{error_2}}Cung cấp chữ ký + kế hoạch ngắn gọn trước, sau đó viết mã. Viết bài kiểm tra, chỉ cần hoạt động.
Để phù hợp với kiểu hiện có (thích ứng với cơ sở mã):
Dưới đây là một hàm ví dụ từ dự án của chúng tôi; Tìm hiểu cách đặt tên, xử lý lỗi và phong cách bình luận tại đây. Viết hàm cho {{new_task}} với kiểu CÙNG. Ví dụ: {{current_code}}
Từ khung xương đến phần lấp đầy (sơ khai → triển khai):
Điền vào khung chức năng bên dưới theo TODO trong phần bình luận. THAY ĐỔI chữ ký và kiểu trả về. Đừng tạo một hàm trợ giúp không tồn tại; nếu cần, hãy cho tôi biết "cần người trợ giúp này". {{bộ xương_kod}}
So sánh ứng dụng thay thế:
Đưa ra 2 cách triển khai khác nhau cho {{task}}: (a) ưu tiên khả năng đọc, (b) ưu tiên hiệu suất. Viết ra 1 câu "khi nào thì thích hợp hơn" dưới mỗi câu.
Dấu nhắc yếu / Dấu nhắc mạnh
Yếu: "Viết cho tôi chức năng xác minh email."
Strong: "TypeScript 5, chỉ thư viện chuẩn. Viết isValidEmail(input: string): boolean. Cắt bớt khoảng trắng, phân biệt chữ hoa chữ thường, a@b.co là hợp lệ, a@, @b.co, chuỗi trống không hợp lệ. Nếu bạn định sử dụng biểu thức chính quy, đừng quá phức tạp; hãy thêm 2 dòng nhận xét."
Phiên bản mạnh mẽ; Trả về ngôn ngữ, phiên bản, chữ ký, trường hợp cạnh và ràng buộc về kiểu. Do đó, mã được tạo vừa hoạt động vừa phù hợp với dự án của bạn.
Cách tiếp cận
Khi nào nên sử dụng
Chú ý
Hoàn thành nội tuyến
Chèn nhỏ vào dòng chảy
Đừng chấp nhận lời đề nghị mà không đọc nó
Sản xuất dựa trên hợp đồng trong trò chuyện
Chức năng/lớp mới
Cho ví dụ và trường hợp cạnh
Sản xuất theo mẫu phong cách
Thêm vào mã hiện có
Chọn mã mẫu hiện tại
nhồi xương
Đã sửa chữ ký, nội dung trống
Thay đổi chữ ký
Sao chép mã và bẫy phụ thuộc
AI thường đề xuất một thư viện mới để giúp công việc của nó dễ dàng hơn. Đôi khi điều này là chính xác, đôi khi nó thêm phần phụ thuộc không cần thiết vào dự án của bạn hoặc gợi ý một gói không tồn tại (ảo giác). Quy tắc: bạn xác nhận từng phụ thuộc mới. Không thêm nó vào dự án mà không xác minh rằng gói thực sự tồn tại, được duy trì và có giấy phép phù hợp. Hầu hết, một người trợ giúp đã có trong dự án sẽ tốt hơn một gói mới.
Thận trọng: Xem lại các dòng nhập do AI gợi ý. Tên gói không tồn tại (cũng có thể giống với các gói giả được gọi là "lỗi đánh máy") vừa phá vỡ quá trình biên dịch vừa gây ra rủi ro bảo mật.
Những lỗi thường gặp
- Có chữ ký được xác định bởi mô hình. Nếu bạn không sửa các loại đầu vào/đầu ra, một chữ ký khác sẽ đi kèm với mỗi lần sản xuất và tích hợp trở nên khó khăn.
- Chưa kể các trường hợp cạnh. Đầu vào trống, null, số âm, giá trị rất lớn — nếu bạn không chỉ định những giá trị này, mô hình sẽ ghi "đường dẫn hạnh phúc", bỏ qua các cạnh.
- Kết hợp đề xuất mà không kiểm tra nó. Mã có vẻ hoạt động không có nghĩa là nó hoạt động.
- Chấp nhận sự phụ thuộc không cần thiết. Việc thêm toàn bộ thư viện cho một lớp sẽ tạo ra nợ kỹ thuật.
- Phong cách không nhất quán. Việc đặt tên và xử lý lỗi khác với phần còn lại của dự án khiến cho cơ sở mã trở nên chắp vá.
Tóm lại
Việc tạo mã rất hiệu quả khi bạn chuyển ý định thành một hợp đồng rõ ràng. Sử dụng tính năng hoàn thành nội tuyến cho các nhiệm vụ nhỏ, trong dòng và cho các nhiệm vụ thiết lập cấu trúc trong cuộc hội thoại. Bạn chỉ định loại đầu vào/đầu ra, trường hợp cạnh, phiên bản và kiểu; Cho ví dụ về mô hình; xác minh từng phụ thuộc mới; và chạy và đọc từng sản phẩm được tạo ra. AI phát huy tác dụng tốt nhất trong mã lặp đi lặp lại theo công thức — hãy chạy mã đó ngay tại đó, trong giới hạn bạn đặt ra.
Nhiệm vụ ứng dụng
Chọn một hàm nhỏ thực tế từ dự án mà bạn cần viết. Trước tiên, hãy in nó cho AI bằng mẫu “tạo hàm dựa trên hợp đồng”, cung cấp các loại đầu vào/đầu ra, hai trường hợp cạnh và ràng buộc về kiểu. Biên dịch mã được tạo và thử với hai đầu vào khác nhau. Sau đó, hãy hỏi lại chức năng tương tự, lần này “viết cho tôi cái này” mà không có bất kỳ ngữ cảnh nào và so sánh từng dòng của hai kết quả đầu ra: trường hợp nào bị bỏ sót, cần phải chỉnh sửa bao nhiêu lần?
danh sách kiểm tra
- [ ] Tôi biết nơi sử dụng chế độ trò chuyện với tính năng hoàn thành nội tuyến.
- [ ] Tôi xác định hợp đồng đầu vào/đầu ra và các trường hợp cạnh trong việc tạo hàm.
- [ ] Tôi đã tạo thói quen thêm thông tin ngôn ngữ và phiên bản vào lời nhắc.
- [ ] Tôi biên soạn và kiểm tra từng sản phẩm trước khi lắp ráp nó.
- [ ] Tôi xác nhận từng phần phụ thuộc mới mà AI đề xuất bằng cách xác minh sự tồn tại và sự cần thiết của nó.
- [ ] Tôi kiểm tra xem mã được tạo có phù hợp với phong cách của dự án không.