Đơn vị 1 / 12

Trí tuệ nhân tạo cho nhóm phần mềm: Mô hình làm việc và giới hạn

Lợi nhuận:

  • Khả năng giải thích cách trợ lý mã hóa hoạt động như một mô hình ngôn ngữ và các khái niệm về mã thông báo, cửa sổ ngữ cảnh, ảo giác
  • Khả năng phân biệt các tác vụ phần mềm nơi AI mạnh và yếu bằng bản đồ tinh thần
  • Khả năng áp dụng chu trình làm việc cơ bản của việc đề xuất-sản xuất-xác minh vào nhiệm vụ của chính họ

Một ngày của nhà phát triển phần mềm hiếm khi được dành để "viết mã từ đầu". Thời gian thực; Đọc mã do người khác viết, cố gắng tái tạo lỗi, quét nhật ký (dòng nhật ký do ứng dụng tạo ra trong khi chạy), viết kiểm tra, viết PR (yêu cầu kéo - yêu cầu hợp nhất trong đó gửi thay đổi mã để nhóm xem xét) giải thích và cập nhật tài liệu. Trí tuệ nhân tạo (AI) là một hệ số nhân tốc độ có thể chạm tới hầu hết những công việc chưa được nhìn thấy này. Nhưng điều kiện đầu tiên để sử dụng nó một cách an toàn là phải hiểu chính xác nó là gì và không phải là gì.

Trong phần này, trước tiên chúng tôi giải thích công nghệ cơ bản của trợ lý mã hóa bằng ngôn ngữ đơn giản; sau đó chúng tôi tạo ra một bản đồ tinh thần về điểm mạnh và điểm yếu của mô hình; Cuối cùng, chúng tôi thiết lập kỷ luật làm việc cơ bản mà chúng tôi sẽ sử dụng trong toàn bộ mô-đun: đề xuất, sản xuất, xác minh. Ba bước này là xương sống của 11 đơn vị tiếp theo.

Lưu ý: Mô-đun này là một khóa đào tạo chung. Trong phần mềm quan trọng về bảo mật (xử lý thanh toán, chăm sóc sức khỏe, xác thực, cơ sở hạ tầng quan trọng), đầu ra AI không thể thay thế cho việc xem xét và phê duyệt của kỹ sư có trình độ. AI là trợ lý; Người ký là kỹ sư.

Trợ lý mã hóa thực sự làm gì?

Hầu hết các trợ lý mã hóa đều được xây dựng trên một mô hình ngôn ngữ lớn (LLM—một AI được đào tạo về số lượng lớn văn bản và mã để dự đoán “đoạn” có khả năng xảy ra tiếp theo nhất). Mô hình không “hiểu” mã như con người; Nó tạo ra khả năng tiếp tục cao nhất của bối cảnh mà bạn đưa ra, dựa trên các mẫu mà nó học được từ một kho ví dụ khổng lồ. Cơ chế có vẻ đơn giản này mang lại kết quả hiệu quả đáng ngạc nhiên trong thực tế — bởi vì hầu hết phần mềm đều bao gồm các mẫu lặp lại: yêu cầu HTTP, vòng lặp, kiểm tra rỗng, mẫu thử nghiệm.

Ba thuật ngữ rất quan trọng ở đây. Mã thông báo là đơn vị nhỏ nhất mà mô hình xử lý bằng cách chia văn bản; Nó đại khái là một vài chữ cái hoặc một phần của một từ. Cửa sổ ngữ cảnh là số lượng mã thông báo mà mô hình có thể "nhìn thấy" cùng một lúc; Mã, thông báo lỗi và hướng dẫn của bạn phải vừa với cửa sổ này. Lời nhắc là tất cả các hướng dẫn và ngữ cảnh mà bạn đưa ra cho mô hình. Chất lượng đầu ra mà bạn nhận được phụ thuộc trực tiếp vào hai điều này: bạn đưa ra mô hình càng tốt bối cảnh và hướng dẫn rõ ràng thì bạn sẽ nhận được kết quả càng tốt. Đầu vào kém tạo ra đầu ra kém, ngay cả khi đó là một mô hình thông minh - quy tắc phần mềm cổ điển “vào rác, ra rác” cổ điển cũng áp dụng cho AI.

Bản đồ điểm mạnh và điểm yếu

Để hướng AI đến những công việc phù hợp, cần phải biết nó tỏa sáng ở đâu và vấp ngã ở đâu. Việc ghi nhớ bản đồ này sẽ khiến bạn băn khoăn với mỗi nhiệm vụ tiếp theo “Tôi nên thuê công việc này cho AI hay tự mình làm?” Nó cho phép bạn trả lời câu hỏi trong vài giây.

Điểm mạnh của nó là: Tạo mã soạn sẵn, dịch từ ngôn ngữ này sang ngôn ngữ khác, viết biểu thức chính quy (regex), mô tả hàm, tạo khung kiểm tra, giải thích thông báo lỗi, soạn thảo tài liệu, đề xuất tên biến/hàm và tái cấu trúc nhỏ (cải thiện cấu trúc của mã mà không thay đổi hành vi của nó).

Điểm yếu: Biết các quy tắc kinh doanh dành riêng cho công ty của bạn, ghi nhớ toàn bộ cơ sở mã của bạn, thực sự chạy và xác minh mã, biết chắc chắn các phiên bản thư viện mới nhất, phát hiện các lỗ hổng bảo mật với sự đảm bảo trăm phần trăm. Điều nguy hiểm nhất là ảo giác: mô hình phát minh ra một hàm, thư viện hoặc API (giao diện cho phép trao đổi dữ liệu giữa các ứng dụng) không tồn tại bằng ngôn ngữ rất thuyết phục. Rủi ro này thực sự có thể trở thành lợi thế của bạn, vì mã, không giống như văn bản thuần túy, có thể được kiểm tra để xem liệu nó có “hoạt động” hay không - chỉ cần đừng bỏ qua bước xác minh.

Loại nhiệm vụ

Vai trò của AI

vai trò của đàn ông

Sản xuất tấm/khung xương

tạo ra bản nháp

Thích nghi, đánh giá

Mô tả mã

Cung cấp một bản tóm tắt nhanh chóng

Xác minh phần quan trọng trong mã

viết bài kiểm tra

Trường hợp gợi ý

Xác nhận phạm vi bảo hiểm và độ chính xác

Logic quan trọng về bảo mật

ý tưởng hữu ích

Quyết định và trách nhiệm hoàn toàn thuộc về con người.

Sử dụng API/thư viện

Tạo mẫu

Xác minh sự tồn tại và phiên bản

quyết định kiến trúc

Các loại tùy chọn

Lựa chọn và bảo vệ việc biết bối cảnh

Từng bước: Chu trình làm việc cơ bản

  1. Làm rõ nhiệm vụ. Nếu bạn không thể viết những gì bạn muốn trong một câu thì người mẫu cũng vậy. Đầu vào càng không chắc chắn thì đầu ra càng lớn.
  2. Đưa ra bối cảnh. Thêm mã liên quan, thông báo lỗi đầy đủ, phiên bản ngôn ngữ/khung và các ràng buộc vào lời nhắc. Đừng nói "sửa lỗi này", hãy nói "Python 3.11, FastAPI 0.110; hàm này báo lỗi 500, nó sẽ phát nổ khi nội dung yêu cầu trống".
  3. Vai trò và hình thức áp đặt. Một khuôn khổ như "Bạn là nhà phát triển Go cấp cao; chỉ cần cung cấp mã và lý do cơ bản gồm hai câu" sẽ tập trung vào đầu ra.
  4. Yêu cầu nhỏ. Chia nó thành nhiều bước thay vì một yêu cầu khổng lồ; Xác minh từng bước riêng biệt. Những thay đổi lớn tiềm ẩn nhiều rủi ro vì chúng khó xác minh và dễ che giấu lỗi.
  5. Xác minh. Chạy nó, kiểm tra nó, đọc nó một cách trực quan. Mã AI chưa được xác minh chỉ là "bản phác thảo", không phải là "giải pháp". Đây là bước không thể thương lượng nhất của chu trình.

Ba hộp nhỏ

Trường hợp 1 - Việc tiết kiệm thời gian là có thật nhưng còn khiêm tốn. Khi một nhóm xây dựng các điểm cuối CRUD (Tạo-Đọc-Cập nhật-Xóa) mới bằng AI, thời gian soạn thảo đầu tiên đã giảm từ khoảng 40 phút xuống còn 8 phút. Tuy nhiên, với phần ôn tập và kiểm tra, tổng thời gian là 25 phút; vì vậy mức tăng thực sự là từ 40 đến 25, khoảng 38%. Tỷ lệ này được đo lường thay vì kỳ vọng “chúng ta đã tăng tốc gấp 10 lần” là mức tăng bền vững.

Trường hợp 2 - Ảo giác rất tốn kém. Một nhà phát triển đã sử dụng lệnh gọi request.get_json() do AI đề xuất mà không xác thực; Không có phương pháp nào như vậy (chính xác là reply.json()). Mất 20 phút khi mã không được biên dịch. Một câu hỏi đơn giản "phương pháp này có thực sự tồn tại không?" xác minh sẽ thiết lập lại sự mất mát.

Trường hợp 3 - Bối cảnh tốt sẽ tăng gấp đôi sản lượng. Đối với cùng một lỗi, một nhà phát triển chỉ cần viết "Tôi đang gặp lỗi" và người kia đã thêm dấu vết ngăn xếp, phiên bản và mẫu đầu vào đầy đủ. Người sau đã nhận được giải pháp chính xác trong lần thử đầu tiên; Người đầu tiên trải qua ba lượt. Sự khác biệt không nằm ở mô hình mà ở đầu vào.

Bốn mẫu có thể sao chép

Lời nhắc khởi động mạnh mẽ, có mục đích chung:

Vai trò: Bạn là nhà phát triển {{ngôn ngữ}} có kinh nghiệm. Nhiệm vụ: {{what_want}}Ngữ cảnh:- Khung/phiên bản: {{framework_and_version}}- Ràng buộc: {{hiệu suất, phong cách, quy tắc phụ thuộc}}Quy tắc:- Không sử dụng thư viện/chức năng không tồn tại; Nếu bạn không chắc chắn, hãy đánh dấu là "xác minh". - Đầu tiên đưa ra một kế hoạch ngắn gọn, sau đó là đoạn mã, sau đó là 2 câu giải thích. - Tạo mã làm việc, có thể kiểm tra được.

Để lọc sự không chắc chắn trở lại mô hình:

Trước khi giải bài tập dưới đây, hãy liệt kê ÍT NHẤT 3 điểm mà bạn thấy còn thiếu hoặc chưa rõ ràng dưới dạng câu hỏi. KHÔNG viết mã trước khi tôi trả lời. Nhiệm vụ: {{task}}

Để tự kiểm tra đầu ra:

Bạn đã tạo ra đoạn mã sau. Bây giờ hãy thay đổi vai trò của bạn và phê bình mã này:- Liệt kê 3 trường hợp (trường hợp đặc biệt) có thể không hoạt động.- Bạn có thể đã tạo ra bất kỳ API/chức năng nào không? Đánh dấu.- Đưa ra phiên bản đã sửa.Code:{{code}}

Để chia nhỏ một quyết định thành các lựa chọn:

Đề xuất 2-3 cách tiếp cận giải pháp cho {{vấn đề}}. Đối với mỗi: mô tả ngắn gọn, cộng/trừ, khi nào nên chọn. Đưa ra dưới dạng bảng. KHÔNG chọn thay tôi; chỉ cần làm rõ tùy chọn.

Dấu nhắc yếu / Dấu nhắc mạnh

Yếu: "Sửa lỗi trong mã này." (Lỗi nào? Ngôn ngữ nào? Hành vi mong đợi là gì?)
Mạnh: "Python 3.11 / FastAPI 0.110. Điểm cuối sau trả về 500 với KeyError khi nội dung yêu cầu trống; tôi muốn nó trả về 400 và thông báo có ý nghĩa trên nội dung trống. Đầu tiên hãy giải thích lý do, sau đó đưa ra hàm đã sửa, sau đó viết bài kiểm tra cho kịch bản này. [code]"

Phiên bản mạnh mẽ; Nó cung cấp ngôn ngữ, phiên bản, lỗi thực tế, hành vi dự kiến ​​và định dạng đầu ra. Mô hình không còn phải dự đoán nữa.

Những lỗi thường gặp

  • Tin tưởng mà không cần xác minh. Sai lầm phổ biến nhất và tốn kém nhất. Đừng nói "đã giải quyết" cho đến khi mã được biên dịch và kiểm tra.
  • Đặt câu hỏi không có ngữ cảnh. Câu trả lời không có phiên bản, văn bản lỗi và hạn chế là chung chung và thường sai.
  • Một yêu cầu rất lớn. Việc không thể yêu cầu và xem xét quy trình sản xuất 300 dây chuyền cùng một lúc sẽ khiến cho sai sót trở nên vô hình.
  • Lầm tưởng sự tự tin của người mẫu là bằng chứng. AI có thể tự tin nói sai điều gì đó; Âm thanh không phải là một chỉ số về độ chính xác.
  • Dán ngẫu nhiên bí mật công ty. Không nên nhập khóa riêng, dữ liệu khách hàng hoặc mã nguồn riêng vào các công cụ chưa được phê duyệt (chúng ta sẽ đi sâu vào chủ đề này ở bài 10).
Mẹo: Hãy coi mọi kết quả đầu ra của AI là “đây là bản nháp”. Thói quen tinh thần duy nhất này sẽ dập tắt hầu hết các rủi ro mà bạn sẽ thấy trong suốt học phần.

Tóm lại

Trợ lý mã hóa là một mô hình ngôn ngữ dự đoán đoạn có khả năng xảy ra tiếp theo; Nó không hiểu mật mã, nó tạo ra các mẫu. Đó là lý do tại sao anh ấy mạnh mẽ trong những công việc lặp đi lặp lại, có tính công thức; Nó nên được sử dụng một cách thận trọng cho công việc yêu cầu xác minh cụ thể cho bối cảnh của bạn. Nguy cơ lớn nhất chính là ảo giác, thuốc giải độc duy nhất chính là xác minh. Nguyên tắc mà chúng tôi sẽ tuân theo trong toàn bộ mô-đun rất rõ ràng: làm rõ nhiệm vụ, đưa ra bối cảnh, yêu cầu những điều nhỏ nhặt, xác thực từng sản phẩm có thể thực hiện được.

Nhiệm vụ ứng dụng

Viết ra ba tác vụ phần mềm bạn đã thực hiện trong tuần trước (ví dụ: sửa lỗi, kiểm tra, cập nhật README). Nhìn vào “bản đồ điểm mạnh và điểm yếu” của từng điểm và mô tả bằng một câu vai trò của bạn và AI sẽ như thế nào nếu bạn để AI làm việc này. Sau đó giao một trong những nhiệm vụ này cho AI bằng mẫu “lời nhắc bắt đầu” ở trên rồi chạy và xác minh đầu ra; Lưu ý bạn đã tiết kiệm được bao nhiêu phút và bạn phải sửa bao nhiêu lỗi.

danh sách kiểm tra

  • [ ] Tôi nhận ra rằng LLM tạo ra các mẫu chứ không phải "hiểu" mã.
  • [ ] Tôi có thể giải thích các khái niệm về token, cửa sổ ngữ cảnh và lời nhắc trong một câu.
  • [ ] Tôi có thể phân biệt giữa các loại nhiệm vụ mà AI mạnh và yếu.
  • [ ] Tôi biết ảo giác là gì và thuốc giải độc duy nhất là xác minh.
  • [ ] Tôi đã điều chỉnh chu trình “đề xuất, sản xuất, xác minh” cho phù hợp với nhiệm vụ của mình.
  • [ ] Tôi có thể chỉ ra sự khác biệt giữa dấu nhắc mạnh và dấu nhắc yếu bằng một ví dụ cụ thể.