- Nhiều lập trình viên thử dùng LLM để viết mã rồi gặp phải hiện tượng ảo giác (hallucination) và mất niềm tin
- Việc LLM bịa ra các phương thức hoặc thư viện không tồn tại là chuyện rất thường gặp
- Nhưng ảo giác trong mã lại là loại ảo giác ít nguy hiểm nhất
- Nguy hiểm nhất là khi LLM tạo ra lỗi nhưng trình biên dịch hoặc trình thông dịch không phát hiện ngay lập tức
- Các phương thức bị ảo giác thường gây lỗi ngay khi chạy nên khá dễ phát hiện
- Thậm chí có thể dán lại thông báo lỗi cho LLM để nó tự sửa
- Khác với ảo giác trong văn bản thông thường, mã có thể được kiểm chứng thực tế bằng cách chạy
- LLM có chức năng tự sửa lỗi
- Các công cụ như ChatGPT Code Interpreter, Claude Code cho phép LLM chạy đoạn mã nó viết, phát hiện lỗi và tự sửa
- Đánh giá mã do LLM viết mà còn không chạy thử là điều thiếu hiệu quả
- Một số lập trình viên muốn bác bỏ cả công nghệ này chỉ vì LLM tạo ra các phương thức bị ảo giác
- Nhưng để dùng hiệu quả thì việc học hỏi và thử nghiệm là điều bắt buộc
- Tác giả đã nghiên cứu việc viết mã dựa trên AI hơn 2 năm và vẫn đang tiếp tục học các kỹ thuật mới
- Kiểm thử thủ công với mã là bắt buộc
- Mã chạy được không có nghĩa là nó hoạt động đúng như kỳ vọng
- Chỉ dựa vào review mã hoặc kiểm thử tự động cũng không thể xác minh hoàn toàn tính chính xác của mã
- Quá trình tự chạy và tự kiểm chứng là điều thiết yếu
- Mã do LLM tạo ra thường rất dễ đọc nên dễ khiến người ta mất cảnh giác
- Mã do con người viết cũng vậy, không nên tin tưởng trước khi tự chạy thử
- Cách giảm ảo giác
- Dùng mô hình khác: Chọn mô hình có dữ liệu huấn luyện phong phú hơn cho nền tảng cụ thể
- Ví dụ: Claude 3.7 Sonnet (bật thinking mode), OpenAI o3-mini-high, GPT-4o (kèm Python Code Interpreter)
- Tận dụng ngữ cảnh (context): Dù LLM không biết một thư viện cụ thể, nó vẫn có thể học được mẫu nếu được cung cấp mã ví dụ
- Chọn công nghệ ổn định: Nếu chọn các thư viện lâu đời, khả năng LLM xử lý tốt hơn sẽ cao hơn
- Tầm quan trọng của review mã
- Bài viết phản bác quan điểm rằng "nếu phải review toàn bộ mã do LLM viết thì tự viết còn nhanh hơn"
- Đây cũng có thể là phát biểu cho thấy khả năng review mã còn thiếu
- Việc review mã do LLM tạo ra có thể là cơ hội tốt để nâng cao năng lực
- Phần thưởng thêm: phản hồi từ Claude 3.7 Sonnet
- Tác giả đã nhờ Claude 3.7 Sonnet ở "extended thinking mode" xem lại bản nháp bài blog
- Tác giả yêu cầu: "Hãy xem lập luận của bài này có thuyết phục không, có điểm nào cần cải thiện không, và có nội dung nào còn thiếu không"
- Claude đã giúp làm cho giọng điệu của bản nháp trở nên mềm mại hơn
- Liên kết cuộc trò chuyện phản hồi với Claude
1 bình luận
Ý kiến trên Hacker News
Tác giả đồng ý với bài viết trước đó, nhưng không đồng ý với bài này
Ngay cả khi mã do LLM sinh ra hoạt động tốt, nếu không phải người viết thì rất khó tìm ra bug hoặc lỗi logic
Mã do LLM tạo ra trông gọn gàng, nhưng lại khiến người ta tốn nhiều thời gian hơn cho QA và dọn dẹp
The Primeagen và Casey Muratori đã rà soát đầu ra của các trình tạo mã LLM mới nhất
Một loại lỗi khác mà Simon bỏ qua là kiểu ảo giác khi mô hình quên mất chức năng
Các phương thức bị ảo giác ra chỉ là trở ngại nhỏ, và khi mọi người than phiền về điều đó thì người ta thường cho rằng họ chỉ bỏ ra rất ít thời gian để học cách dùng hệ thống một cách hiệu quả
Bản thân ảo giác không phải là rủi ro lớn nhất mà LLM đặt ra
Nó chỉ ít nguy hiểm hơn trong ngữ cảnh hẹp của lỗi biên dịch
Để có kết quả tốt từ LLM cần rất nhiều công sức
Kinh nghiệm viết mã để tìm phòng khám 'chính' của bệnh nhân tại một trung tâm y tế