Cách dùng Grok viết code
Bùi Tấn Lực
- 103
- 06/10/2026
Grok không chỉ được dùng để hỏi đáp, viết nội dung hay phân tích thông tin mà còn có thể hỗ trợ khá nhiều công việc lập trình như tạo mã nguồn, giải thích code, tìm lỗi, sửa lỗi, refactor, viết truy vấn cơ sở dữ liệu và xây dựng từng phần của một ứng dụng. Điểm quan trọng là chất lượng kết quả phụ thuộc rất lớn vào cách bạn mô tả yêu cầu và cách kiểm tra mã nguồn sau khi nhận được.
Nếu chỉ yêu cầu Grok “viết cho tôi một website” hoặc “viết code chức năng đăng nhập”, câu trả lời thường khó sát với dự án thực tế. Ngược lại, khi cung cấp rõ ngôn ngữ, framework, cấu trúc dữ liệu, quy tắc xử lý và kết quả mong muốn, Grok có thể trở thành một trợ lý lập trình hữu ích trong nhiều giai đoạn của quá trình phát triển phần mềm.
Bài viết này hướng dẫn cách dùng Grok để viết code theo hướng thực tế, từ việc chuẩn bị yêu cầu, tạo mã nguồn mới, sửa code có sẵn cho đến kiểm tra và hoàn thiện sản phẩm. Mục tiêu không phải là để AI thay thế hoàn toàn lập trình viên mà là tận dụng AI để giảm thời gian xử lý những công việc lặp lại và hỗ trợ giải quyết vấn đề nhanh hơn.

Grok có thể hỗ trợ những công việc lập trình nào?
Trước khi bắt đầu, cần hiểu đúng vai trò của Grok trong quá trình lập trình. AI có thể tạo ra mã nguồn rất nhanh nhưng không có nghĩa mọi đoạn code được sinh ra đều phù hợp với dự án hoặc có thể đưa thẳng lên môi trường thật.
Trong thực tế, Grok có thể hỗ trợ nhiều nhóm công việc khác nhau:
- Tạo một đoạn code mới dựa trên yêu cầu cụ thể.
- Giải thích chức năng và cách hoạt động của đoạn mã có sẵn.
- Tìm nguyên nhân gây ra lỗi và đề xuất cách sửa.
- Chuyển đổi code giữa các ngôn ngữ hoặc phiên bản.
- Refactor code để dễ đọc, dễ bảo trì hơn.
- Viết các hàm xử lý dữ liệu, validation và logic nghiệp vụ.
- Tạo câu lệnh SQL dựa trên cấu trúc bảng và yêu cầu truy vấn.
- Hỗ trợ xây dựng API và xử lý dữ liệu giữa frontend với backend.
- Viết test cho các hàm hoặc thành phần của ứng dụng.
- Phân tích cấu trúc dự án và đề xuất hướng tổ chức mã nguồn.
- Viết tài liệu kỹ thuật dựa trên code và cấu trúc của dự án.
Grok cũng có thể làm việc với những yêu cầu phức tạp hơn thay vì chỉ sinh một đoạn code đơn lẻ. Với các công cụ và môi trường hỗ trợ lập trình của xAI, Grok có thể tham gia vào quy trình phát triển theo hướng tương tác, trong đó người dùng đưa yêu cầu, xem kết quả, phản hồi và tiếp tục yêu cầu chỉnh sửa.
Tuy nhiên, nên xem mã nguồn do AI tạo ra là một bản triển khai cần được kiểm tra chứ không phải kết quả mặc nhiên đúng. Những vấn đề như xác thực dữ liệu, phân quyền, bảo mật, xử lý ngoại lệ, hiệu suất và khả năng tương thích vẫn cần được kiểm tra trước khi đưa vào sử dụng.
Chuẩn bị yêu cầu trước khi nhờ Grok lập trình
Một trong những sai lầm phổ biến khi dùng AI để code là bắt đầu bằng một câu hỏi quá ngắn. Ví dụ, câu “Grok viết giúp tôi chức năng đăng nhập bằng PHP” chưa cung cấp đủ thông tin để AI biết bạn đang sử dụng PHP phiên bản nào, cơ sở dữ liệu gì, cấu trúc bảng ra sao hay muốn xử lý đăng nhập theo cách nào.
Thay vì chỉ nêu tên chức năng, hãy cung cấp cho Grok bối cảnh cần thiết. Một yêu cầu tốt thường có thể chia thành các phần sau:
Nêu rõ công nghệ đang sử dụng
Hãy cho Grok biết dự án sử dụng ngôn ngữ hoặc framework nào. Chẳng hạn, bạn có thể nói rõ dự án dùng PHP thuần, Laravel, JavaScript, Node.js, Python, React hoặc một công nghệ cụ thể khác.
Thông tin này rất quan trọng vì cùng một chức năng nhưng cách triển khai có thể hoàn toàn khác nhau giữa các nền tảng. Nếu dự án đang sử dụng PHP thuần mà bạn không nói rõ, Grok có thể đưa ra giải pháp dựa trên framework hoặc thư viện mà bạn không muốn sử dụng.
Mô tả chính xác chức năng cần làm
Thay vì yêu cầu “tạo trang quản lý sản phẩm”, hãy mô tả người dùng có thể làm gì trên trang đó.
Ví dụ, yêu cầu có thể bao gồm:
- Quản trị viên có thể thêm, sửa và xóa sản phẩm.
- Mỗi sản phẩm có tên, giá, hình ảnh và trạng thái.
- Giá phải là số dương.
- Tên sản phẩm không được để trống.
- Khi xóa phải yêu cầu xác nhận.
- Dữ liệu được lưu trong MySQL.
- Phần giao diện sử dụng HTML và CSS thuần.
Càng mô tả rõ hành vi mong muốn, khả năng Grok tạo ra code sát với nhu cầu càng cao.
Cung cấp cấu trúc dữ liệu khi cần thiết
Nếu yêu cầu liên quan đến cơ sở dữ liệu, đừng chỉ nói “lưu vào MySQL”. Hãy cung cấp tên bảng, tên cột, kiểu dữ liệu và mối quan hệ giữa các bảng nếu những thông tin này đã có.
Ví dụ, thay vì yêu cầu chung chung:
Hãy tạo chức năng quản lý đơn hàng bằng PHP và MySQL.
Có thể cung cấp bối cảnh cụ thể hơn:
Website sử dụng PHP thuần và MySQL.
Bảng orders:
- id: INT, khóa chính
- user_id: INT
- total: DECIMAL(12,2)
- status: VARCHAR(30)
- created_at: DATETIME
Hãy viết phần PHP lấy danh sách đơn hàng theo user_id,
sắp xếp đơn mới nhất trước và sử dụng prepared statement.
Cách đặt yêu cầu này giúp Grok không phải tự đoán cấu trúc dữ liệu. Khi AI phải tự suy đoán quá nhiều thành phần, nguy cơ tạo ra code không tương thích với dự án sẽ tăng lên.
Cách viết prompt để Grok tạo code sát yêu cầu
Prompt dùng cho lập trình nên được xem như một bản mô tả kỹ thuật ngắn. Không nhất thiết phải viết thật dài, nhưng những thông tin quan trọng phải rõ ràng.
Một prompt tốt có thể đi theo trình tự: bối cảnh → mục tiêu → yêu cầu kỹ thuật → dữ liệu đầu vào → kết quả mong muốn → giới hạn cần tuân thủ.
Ví dụ, nếu muốn tạo một hàm kiểm tra email bằng JavaScript, yêu cầu đơn giản có thể là:
Viết hàm kiểm tra email bằng JavaScript.
Yêu cầu này quá chung. Một phiên bản cụ thể hơn sẽ hữu ích hơn:
Viết một hàm JavaScript tên validateEmail.
Yêu cầu:
- Nhận vào một chuỗi email.
- Loại bỏ khoảng trắng ở đầu và cuối.
- Trả về true nếu email có định dạng hợp lệ.
- Trả về false nếu chuỗi rỗng hoặc sai định dạng.
- Không sử dụng thư viện bên ngoài.
- Viết code ngắn gọn và giải thích cách hoạt động sau đoạn code.
Ở yêu cầu thứ hai, Grok đã biết tên hàm, dữ liệu đầu vào, kết quả cần trả về, giới hạn sử dụng thư viện và cả cách trình bày kết quả. Đây là khác biệt rất lớn giữa việc “hỏi AI viết code” và “giao cho AI một nhiệm vụ lập trình có tiêu chí rõ ràng”.
Yêu cầu Grok giải thích thay vì chỉ đưa code
Nếu bạn đang học lập trình hoặc cần kiểm tra code do AI tạo ra, đừng chỉ yêu cầu mã nguồn. Hãy yêu cầu Grok giải thích từng phần quan trọng.
Chẳng hạn:
Hãy viết chức năng này bằng PHP.
Sau khi đưa code:
1. Giải thích luồng xử lý.
2. Giải thích vai trò của từng hàm quan trọng.
3. Chỉ ra các lỗi bảo mật có thể xảy ra.
4. Đề xuất cách cải thiện nếu code được sử dụng trong môi trường thực tế.
Cách làm này giúp bạn không biến quá trình lập trình thành việc sao chép mã nguồn một cách máy móc. Đồng thời, phần giải thích có thể giúp phát hiện những giả định sai hoặc điểm chưa phù hợp trong giải pháp mà Grok đưa ra.
Yêu cầu AI giữ nguyên phần code không cần thay đổi
Khi sửa một dự án đang hoạt động, đây là nguyên tắc đặc biệt quan trọng. Nếu bạn đưa toàn bộ file cho Grok và chỉ nói “tối ưu code”, AI có thể thay đổi nhiều phần ngoài phạm vi cần thiết.
Thay vào đó, hãy đặt giới hạn rõ ràng:
Hãy sửa lỗi trong hàm xử lý đăng nhập bên dưới.
Yêu cầu:
- Chỉ thay đổi phần cần thiết để sửa lỗi.
- Không đổi tên biến hiện tại nếu không bắt buộc.
- Không thay đổi cấu trúc database.
- Không thêm thư viện mới.
- Giữ nguyên HTML hiện tại.
- Sau khi sửa, giải thích chính xác những dòng đã thay đổi.
Đây là cách làm phù hợp hơn khi Grok được sử dụng để bảo trì một hệ thống đang có sẵn, bởi một thay đổi nhỏ trong code đôi khi có thể ảnh hưởng đến những phần khác của ứng dụng.
Quy trình dùng Grok để viết một chức năng hoàn chỉnh
Đối với những chức năng nhỏ, bạn có thể yêu cầu Grok tạo code ngay. Nhưng với một chức năng có nhiều thành phần, nên chia quá trình thành từng bước thay vì yêu cầu AI viết toàn bộ hệ thống trong một lần.
Một quy trình thực tế có thể bắt đầu bằng việc mô tả yêu cầu và thiết kế giải pháp, sau đó mới triển khai từng thành phần.
Bước 1: Mô tả bài toán trước khi yêu cầu code
Đầu tiên, hãy để Grok hiểu vấn đề cần giải quyết. Chưa cần yêu cầu viết mã nguồn ngay.
Ví dụ:
Tôi đang xây dựng website bán hàng bằng PHP thuần và MySQL.
Tôi cần xây dựng chức năng giỏ hàng.
Người dùng có thể thêm sản phẩm, thay đổi số lượng,
xóa sản phẩm và xem tổng tiền.
Hãy phân tích kiến trúc xử lý phù hợp trước.
Chưa cần viết code.
Cách này cho phép bạn xem xét hướng triển khai trước khi mã nguồn được tạo ra. Nếu kiến trúc chưa phù hợp, bạn có thể điều chỉnh ngay từ đầu thay vì phải sửa hàng loạt file sau đó.
Bước 2: Yêu cầu triển khai từng thành phần
Sau khi thống nhất cách xử lý, có thể yêu cầu Grok viết từng phần. Ví dụ trước tiên tạo cấu trúc dữ liệu, tiếp theo là hàm thêm sản phẩm, sau đó xử lý cập nhật số lượng và cuối cùng mới kết nối với giao diện.
Việc chia nhỏ giúp phạm vi của mỗi lần yêu cầu rõ ràng hơn. Nó cũng khiến việc tìm lỗi dễ dàng hơn vì bạn có thể xác định lỗi phát sinh ở bước nào.
Bước 3: Đưa code thực tế trở lại để kiểm tra
Sau khi nhận được mã nguồn, hãy kiểm tra bằng môi trường phát triển của bạn. Nếu có lỗi, đừng chỉ nói “code bị lỗi”. Hãy gửi thông báo lỗi, đoạn code liên quan và mô tả thao tác khiến lỗi xuất hiện.
Ví dụ:
Đây là lỗi tôi nhận được:
Undefined array key "user_id"
Lỗi xảy ra khi người dùng chưa đăng nhập nhưng truy cập
trang checkout.
Đây là đoạn code hiện tại:
...
Hãy tìm nguyên nhân và sửa theo hướng:
- Không làm phát sinh warning.
- Người chưa đăng nhập phải được chuyển đến trang đăng nhập.
- Không thay đổi cấu trúc database.
Thông tin này có giá trị hơn rất nhiều so với một câu hỏi như “tại sao code không chạy?”. Grok có thêm dữ liệu để khoanh vùng nguyên nhân thay vì phải đoán.
Cách dùng Grok sửa lỗi code hiệu quả
Một trong những trường hợp Grok phát huy hiệu quả rõ nhất là hỗ trợ tìm và sửa lỗi. Tuy nhiên, để nhận được hướng xử lý chính xác, không nên chỉ gửi một thông báo lỗi riêng lẻ. Lỗi lập trình thường liên quan đến dữ liệu đầu vào, môi trường chạy, phiên bản thư viện hoặc cách các thành phần trong chương trình tương tác với nhau.
Khi gặp lỗi, hãy cung cấp cho Grok ít nhất ba nhóm thông tin: hiện tượng xảy ra, thông báo lỗi và đoạn code liên quan. Nếu lỗi phụ thuộc vào một thao tác cụ thể, hãy mô tả chính xác thao tác đó.
Gửi thông báo lỗi đầy đủ
Thông báo lỗi thường chứa những manh mối quan trọng giúp xác định vị trí vấn đề. Vì vậy, không nên tự rút gọn hoặc diễn giải lại lỗi nếu bạn chưa hiểu rõ nguyên nhân.
Ví dụ, thay vì hỏi:
PHP của tôi bị lỗi database, sửa giúp tôi.
Nên cung cấp thông tin cụ thể hơn:
PHP báo lỗi:
SQLSTATE[HY000]: General error: 1364 Field 'email' doesn't have a default value
Lỗi xảy ra khi tôi thêm một tài khoản mới.
Đây là câu lệnh INSERT và cấu trúc dữ liệu liên quan:
...
Hãy xác định nguyên nhân, giải thích vì sao lỗi xảy ra
và đưa ra cách sửa mà không làm mất dữ liệu hiện tại.
Grok lúc này có thể phân tích mối quan hệ giữa câu lệnh INSERT và cấu trúc bảng thay vì chỉ đưa ra một danh sách các cách sửa lỗi chung chung.
Yêu cầu phân tích nguyên nhân trước khi sửa
Nếu bạn yêu cầu AI sửa lỗi ngay, đôi khi nó có thể đưa ra một cách xử lý khiến lỗi biến mất nhưng nguyên nhân gốc vẫn còn. Với những lỗi quan trọng, nên yêu cầu phân tích trước.
Đừng sửa code ngay.
Hãy:
1. Xác định nguyên nhân có khả năng cao nhất.
2. Chỉ ra dòng hoặc phần logic gây ra vấn đề.
3. Giải thích vì sao lỗi xảy ra.
4. Đề xuất phương án sửa.
5. Sau đó mới đưa code đã sửa.
Cách làm này đặc biệt hữu ích với những lỗi liên quan đến logic, bởi chương trình có thể không báo lỗi cú pháp nhưng kết quả trả về vẫn sai.
Dùng Grok để cải thiện code thay vì viết lại toàn bộ
Không phải lúc nào code cũ cũng cần được viết lại. Một đoạn mã có thể đang hoạt động ổn định nhưng khó đọc, lặp lại nhiều logic hoặc chưa được tối ưu. Trong trường hợp này, có thể sử dụng Grok để refactor từng phần.
Refactor nên được thực hiện với mục tiêu cụ thể. Ví dụ, bạn có thể yêu cầu giảm code trùng lặp, tách một hàm quá dài thành nhiều hàm nhỏ hoặc cải thiện cách đặt tên biến.
Hãy refactor đoạn PHP bên dưới.
Mục tiêu:
- Giữ nguyên kết quả đầu ra.
- Không thay đổi cấu trúc database.
- Không thay đổi tên các biến đang được sử dụng ở bên ngoài hàm.
- Giảm code lặp lại.
- Tách logic thành các hàm nhỏ nếu cần.
- Không thêm framework hoặc thư viện mới.
Sau khi refactor, giải thích những thay đổi quan trọng.
Việc đặt giới hạn như trên giúp giảm nguy cơ Grok “tối ưu quá mức” và vô tình làm thay đổi hành vi vốn đang đúng của chương trình.
So sánh code trước và sau khi cải thiện
Với những phần code quan trọng, có thể yêu cầu Grok giải thích sự khác biệt giữa phiên bản ban đầu và phiên bản mới. Điều này giúp bạn đánh giá xem thay đổi có thực sự mang lại lợi ích hay chỉ khiến code phức tạp hơn.
Một yêu cầu phù hợp có thể là:
Hãy so sánh code trước và sau khi refactor.
Cho tôi biết:
- Phần nào được thay đổi.
- Vì sao nên thay đổi.
- Có ảnh hưởng đến kết quả không.
- Có ảnh hưởng đến hiệu suất không.
- Có rủi ro tương thích nào không.
Nếu thay đổi không thực sự cần thiết thì hãy giữ nguyên.
Dùng Grok viết code từ yêu cầu thực tế
AI thường tạo code tốt hơn khi yêu cầu được mô tả theo hành vi mà người dùng cần thực hiện thay vì chỉ mô tả tên chức năng.
Ví dụ, thay vì nói “tạo bộ lọc sản phẩm”, hãy mô tả người dùng chọn điều kiện nào, dữ liệu được lọc ra sao và kết quả hiển thị như thế nào.
Ví dụ với một website bán hàng:
Tôi cần chức năng lọc sản phẩm bằng PHP và MySQL.
Người dùng có thể lọc theo:
- Danh mục.
- Khoảng giá.
- Từ khóa tên sản phẩm.
Các điều kiện có thể được sử dụng đồng thời.
Yêu cầu:
- Sử dụng prepared statement.
- Không nối trực tiếp dữ liệu người dùng vào SQL.
- Nếu không có điều kiện lọc thì lấy toàn bộ sản phẩm.
- Có phân trang.
- Sắp xếp sản phẩm mới nhất trước.
Hãy đề xuất cách xử lý trước, sau đó viết code.
Prompt này cung cấp cả yêu cầu chức năng lẫn yêu cầu kỹ thuật. Grok vì vậy có cơ sở để xây dựng giải pháp gần với hệ thống thực tế hơn.
Nhờ Grok viết code nhưng vẫn kiểm soát chất lượng
Mã nguồn do AI sinh ra có thể nhìn rất hợp lý nhưng vẫn tồn tại lỗi. Một trong những rủi ro lớn nhất là code chạy được nhưng xử lý sai trong một số trường hợp đặc biệt.
Vì vậy, sau khi nhận code, đừng chỉ kiểm tra trường hợp hoạt động bình thường. Hãy yêu cầu Grok suy nghĩ về các trường hợp biên.
Chẳng hạn, với chức năng nhận số lượng sản phẩm, cần xem xét trường hợp người dùng nhập số âm, số bằng 0, số quá lớn, dữ liệu không phải số hoặc bỏ trống.
Hãy kiểm tra đoạn code này theo các trường hợp:
- Dữ liệu hợp lệ.
- Dữ liệu rỗng.
- Dữ liệu sai kiểu.
- Dữ liệu âm.
- Dữ liệu bằng 0.
- Dữ liệu rất lớn.
- Người dùng gửi dữ liệu không đúng định dạng.
- Người dùng cố tình thay đổi dữ liệu gửi lên.
Hãy chỉ ra trường hợp nào code hiện tại chưa xử lý tốt
và đề xuất cách khắc phục.
Đây là cách sử dụng Grok như một người kiểm tra code thay vì chỉ xem nó như công cụ sinh mã nguồn.
Kiểm tra vấn đề bảo mật
Đối với website và ứng dụng có dữ liệu người dùng, bảo mật phải được xem xét riêng. Không nên mặc định rằng code do AI tạo ra đã an toàn.
Có thể yêu cầu Grok rà soát những nhóm vấn đề như SQL injection, XSS, CSRF, kiểm soát quyền truy cập, xử lý file tải lên, xác thực người dùng và quản lý dữ liệu nhạy cảm.
Hãy audit đoạn code dưới đây về mặt bảo mật.
Tập trung vào:
- SQL injection.
- XSS.
- CSRF.
- Kiểm tra dữ liệu đầu vào.
- Xác thực và phân quyền.
- Xử lý file upload nếu có.
- Lộ thông tin nhạy cảm.
- Các lỗi có thể bị khai thác từ phía người dùng.
Không chỉ nói "có thể không an toàn".
Hãy chỉ ra vị trí có vấn đề, giải thích rủi ro
và đưa ra cách sửa cụ thể.
Nếu ứng dụng được sử dụng thực tế, kết quả rà soát của AI vẫn nên được kiểm tra bằng các phương pháp kiểm thử phù hợp. AI có thể bỏ sót lỗ hổng hoặc đưa ra nhận định chưa chính xác về mức độ nghiêm trọng của một vấn đề.
Dùng Grok để viết SQL và xử lý cơ sở dữ liệu
Grok có thể hỗ trợ tạo truy vấn SQL khá nhanh, đặc biệt với những truy vấn có điều kiện lọc, sắp xếp, phân trang hoặc kết hợp nhiều bảng. Nhưng phần quan trọng nhất vẫn là cung cấp cấu trúc database chính xác.
Ví dụ, thay vì yêu cầu “viết SQL lấy đơn hàng của khách”, hãy cho biết các bảng liên quan và mối quan hệ giữa chúng.
Bảng users:
id, name, email
Bảng orders:
id, user_id, total, status, created_at
Bảng order_items:
id, order_id, product_id, quantity, price
Yêu cầu:
Lấy 20 đơn hàng gần nhất của một user_id.
Hiển thị mã đơn, tổng tiền, trạng thái và thời gian tạo.
Sắp xếp theo created_at giảm dần.
Hãy viết truy vấn MySQL và giải thích các JOIN được sử dụng.
Khi đã có truy vấn, bạn có thể tiếp tục yêu cầu Grok kiểm tra hiệu suất:
Hãy phân tích truy vấn MySQL trên khi bảng orders
có khoảng 1 triệu bản ghi.
Cho biết:
- Cột nào nên có index.
- Index nào không cần thiết.
- Truy vấn có điểm nghẽn nào không.
- Có thể cải thiện cách truy vấn hay không.
Không tạo index nếu chưa có lý do kỹ thuật rõ ràng.
Cách tiếp cận này tốt hơn việc yêu cầu AI “tối ưu database” một cách chung chung, vì việc tối ưu phải dựa trên cấu trúc bảng, dữ liệu thực tế và kiểu truy vấn thường xuyên được sử dụng.
Chia code thành từng phần khi dự án lớn
Với một website hoặc ứng dụng có nhiều file, việc đưa toàn bộ dự án vào một yêu cầu duy nhất thường không phải cách tốt nhất. Khối lượng thông tin lớn có thể khiến AI bỏ sót một số chi tiết hoặc thay đổi những phần không liên quan.
Thay vào đó, hãy chia công việc thành những phạm vi rõ ràng. Ví dụ, một chức năng đăng ký tài khoản có thể được tách thành giao diện, validation, xử lý server, lưu database, gửi email và quản lý trạng thái tài khoản.
Mỗi lần yêu cầu nên xác định rõ phần nào đang được xử lý và phần nào phải giữ nguyên.
Phạm vi hiện tại chỉ là phần xử lý PHP khi người dùng
gửi form đăng ký.
Không viết lại HTML.
Không thay đổi CSS.
Không thay đổi database.
Không xử lý chức năng đăng nhập.
Hãy tập trung vào:
- Kiểm tra dữ liệu.
- Kiểm tra email đã tồn tại.
- Hash mật khẩu.
- Tạo tài khoản.
- Trả về thông báo phù hợp.
Cách chia phạm vi như vậy giúp kiểm soát mã nguồn tốt hơn và giảm nguy cơ một yêu cầu nhỏ kéo theo hàng loạt thay đổi ngoài dự kiến.
Kiểm thử code sau khi Grok hoàn thành
Viết xong code chưa có nghĩa là chức năng đã hoàn thiện. Đây là bước nhiều người bỏ qua khi sử dụng AI để lập trình. Một đoạn mã có thể không báo lỗi cú pháp nhưng vẫn cho kết quả sai khi gặp dữ liệu khác với trường hợp thông thường.
Sau khi nhận code từ Grok, nên kiểm thử ít nhất ba nhóm tình huống: trường hợp bình thường, trường hợp dữ liệu bất thường và trường hợp người dùng thực hiện hành vi ngoài dự kiến.
Ví dụ, với một form đăng ký tài khoản, không nên chỉ kiểm tra một email hợp lệ. Cần thử email rỗng, email sai định dạng, email đã tồn tại, mật khẩu quá ngắn, dữ liệu chứa ký tự đặc biệt và trường hợp người dùng gửi trực tiếp dữ liệu lên máy chủ mà không thông qua giao diện.
Có thể yêu cầu Grok tạo danh sách kiểm thử:
Dựa trên chức năng đăng ký tài khoản này,
hãy tạo danh sách test case.
Mỗi test case gồm:
- Điều kiện đầu vào.
- Dữ liệu kiểm thử.
- Kết quả mong đợi.
- Trường hợp lỗi cần kiểm tra.
Ưu tiên các trường hợp có khả năng làm phát sinh
lỗi logic hoặc vấn đề bảo mật.
Cách này biến quá trình kiểm thử thành một danh sách cụ thể thay vì chỉ kiểm tra theo cảm tính.
Yêu cầu tạo test cho từng hàm
Với những dự án có nhiều logic xử lý, bạn có thể yêu cầu Grok viết unit test cho từng hàm hoặc nhóm chức năng. Điều này đặc biệt hữu ích khi code được refactor hoặc thay đổi nhiều lần.
Đây là hàm calculateTotal.
Hãy viết test cho hàm này bằng framework
phù hợp với công nghệ hiện tại.
Kiểm tra:
- Danh sách sản phẩm hợp lệ.
- Danh sách rỗng.
- Số lượng bằng 0.
- Giá trị thập phân.
- Nhiều sản phẩm.
- Dữ liệu không hợp lệ.
Mỗi test cần thể hiện rõ kết quả mong đợi.
Việc có test giúp bạn phát hiện nhanh những thay đổi làm hỏng chức năng cũ. Tuy nhiên, test do AI tạo cũng cần được kiểm tra để bảo đảm điều kiện và kết quả kỳ vọng thực sự đúng với yêu cầu nghiệp vụ.
Cách yêu cầu Grok viết code dễ bảo trì
Một đoạn code ngắn chưa chắc là code tốt. Nếu quá nhiều logic được dồn vào một hàm hoặc tên biến khó hiểu, việc sửa chữa về sau sẽ mất nhiều thời gian hơn.
Khi yêu cầu Grok tạo code, bạn có thể đặt ra các tiêu chí về khả năng bảo trì ngay từ đầu.
- Đặt tên biến và hàm thể hiện đúng mục đích.
- Mỗi hàm nên có trách nhiệm tương đối rõ ràng.
- Hạn chế lặp lại cùng một logic ở nhiều nơi.
- Tách phần xử lý dữ liệu khỏi phần hiển thị khi phù hợp.
- Không tạo ra cấu trúc phức tạp nếu bài toán đơn giản.
- Chỉ thêm abstraction khi nó mang lại lợi ích thực tế.
Ví dụ, thay vì nói “viết code sạch”, hãy đưa ra tiêu chí cụ thể:
Hãy viết lại đoạn code theo hướng dễ bảo trì.
Yêu cầu:
- Không thay đổi hành vi hiện tại.
- Tên hàm phải thể hiện rõ chức năng.
- Không lặp lại cùng một đoạn xử lý.
- Mỗi hàm không nên đảm nhận quá nhiều nhiệm vụ.
- Không tạo class hoặc pattern nếu chưa cần thiết.
- Giữ giải pháp đơn giản và dễ đọc.
Những giới hạn rõ ràng như vậy giúp Grok hiểu rằng mục tiêu không phải là tạo ra code “càng hiện đại càng tốt”, mà là tạo ra code phù hợp với dự án.
Những lỗi dễ gặp khi dùng Grok để lập trình
Dù có thể hỗ trợ nhiều công việc, Grok không phải công cụ có thể thay thế hoàn toàn quá trình phân tích và kiểm tra của lập trình viên. Một số cách sử dụng thiếu kiểm soát có thể khiến code nhanh chóng trở nên khó sửa hoặc phát sinh lỗi mới.
Yêu cầu quá chung chung
“Viết website bán hàng”, “tạo API”, “làm trang đăng nhập” hoặc “tối ưu code” đều là những yêu cầu quá rộng. Với các câu hỏi này, AI phải tự quyết định rất nhiều chi tiết.
Kết quả có thể nhìn đầy đủ nhưng không phù hợp với kiến trúc thực tế của dự án. Vì vậy, nên xác định rõ phạm vi trước khi yêu cầu triển khai.
Copy code mà không kiểm tra
Đây là rủi ro lớn nhất khi sử dụng AI trong lập trình. Một đoạn code có thể trông chuyên nghiệp, có chú thích đầy đủ và vẫn chứa lỗi logic hoặc lỗ hổng bảo mật.
Đặc biệt với những chức năng liên quan đến tài khoản, thanh toán, phân quyền, dữ liệu cá nhân hoặc file upload, việc kiểm tra thủ công và kiểm thử thực tế là rất cần thiết.
Để AI tự đoán cấu trúc dự án
Nếu dự án đã có sẵn kiến trúc, hãy cung cấp cấu trúc liên quan cho Grok. Việc để AI tự đoán tên file, tên bảng, đường dẫn hoặc cách tổ chức code có thể tạo ra kết quả không khớp với hệ thống hiện tại.
Thay vì:
Hãy sửa chức năng đăng nhập.
Nên cung cấp thêm:
Dự án hiện tại có cấu trúc:
/config
database.php
/controllers
AuthController.php
/models
User.php
/views
login.php
Chức năng đăng nhập hiện nằm trong AuthController.php.
Model User.php chịu trách nhiệm truy vấn bảng users.
Hãy sửa lỗi đăng nhập nhưng giữ nguyên cấu trúc trên.
Cho AI sửa quá nhiều file cùng lúc
Khi một yêu cầu thay đổi nhiều thành phần, việc kiểm soát tác động trở nên khó khăn. Nếu có thể, hãy chia công việc thành từng phạm vi nhỏ và kiểm tra sau mỗi thay đổi.
Đặc biệt với dự án đang hoạt động, nên giữ lại phiên bản code trước khi áp dụng thay đổi lớn. Khi có vấn đề, bạn sẽ dễ dàng xác định thay đổi nào gây ra lỗi và khôi phục khi cần.
Cách dùng Grok để học lập trình hiệu quả hơn
Grok không chỉ phù hợp với người đã biết lập trình. Người mới học cũng có thể sử dụng AI như một công cụ giải thích, nhưng nên tránh biến nó thành nơi lấy đáp án mà không hiểu cách hoạt động.
Ví dụ, khi gặp một đoạn JavaScript chưa hiểu, thay vì hỏi “code này làm gì?”, hãy yêu cầu giải thích theo từng bước:
Giải thích đoạn JavaScript dưới đây cho người mới học.
Yêu cầu:
- Giải thích từng phần theo thứ tự thực thi.
- Nói rõ dữ liệu đi vào từ đâu.
- Giải thích từng biến quan trọng.
- Cho biết hàm nào được gọi trước và sau.
- Dùng ví dụ đơn giản để minh họa.
- Không bỏ qua phần có thể gây nhầm lẫn.
Sau đó, bạn có thể tiếp tục yêu cầu Grok đưa ra một bài tập tương tự nhưng không cho sẵn lời giải. Cách này giúp chuyển từ việc đọc code sang tự viết code.
Dùng AI để đặt câu hỏi ngược
Một phương pháp học tốt là yêu cầu Grok đóng vai người kiểm tra kiến thức. Sau khi học một chủ đề, bạn có thể yêu cầu AI đặt câu hỏi và đánh giá câu trả lời.
Tôi đang học PHP về xử lý form và validation.
Hãy đặt cho tôi 10 câu hỏi từ cơ bản đến nâng cao.
Không đưa đáp án ngay.
Sau mỗi câu trả lời của tôi:
- Đánh giá đúng hoặc sai.
- Giải thích điểm chưa chính xác.
- Đưa ra câu trả lời tốt hơn nếu cần.
- Sau đó mới chuyển sang câu tiếp theo.
Cách học này giúp người dùng chủ động suy nghĩ thay vì phụ thuộc vào mã nguồn được AI tạo sẵn.
Kết hợp Grok với quy trình lập trình thực tế
Cách sử dụng hiệu quả nhất không phải là giao toàn bộ dự án cho AI mà là đưa Grok vào những công đoạn phù hợp. Lập trình viên vẫn cần quyết định kiến trúc, xác định yêu cầu, đánh giá rủi ro và chịu trách nhiệm với sản phẩm cuối cùng.
Một quy trình có thể được triển khai như sau:
- Xác định chính xác chức năng cần xây dựng.
- Mô tả công nghệ và giới hạn của dự án.
- Yêu cầu Grok phân tích phương án.
- Chọn phương án phù hợp với hệ thống hiện tại.
- Yêu cầu tạo code theo từng thành phần.
- Chạy code trong môi trường phát triển.
- Gửi lỗi thực tế trở lại để phân tích.
- Kiểm thử các trường hợp bình thường và trường hợp biên.
- Rà soát bảo mật và hiệu suất.
- Chỉ đưa code lên môi trường thật sau khi đã kiểm tra.
Quy trình này giúp AI trở thành một phần của quá trình phát triển thay vì trở thành nơi mà toàn bộ quyết định kỹ thuật được giao phó.
Khi nào không nên phụ thuộc vào Grok để viết code?
Có những trường hợp AI có thể hỗ trợ nhưng không nên là nguồn quyết định duy nhất. Những hệ thống quan trọng về bảo mật, tài chính, dữ liệu cá nhân hoặc yêu cầu độ ổn định cao cần được kiểm tra bởi người có chuyên môn.
Ngay cả khi Grok đưa ra lời giải thích thuyết phục, bạn vẫn cần xác minh các chi tiết quan trọng bằng tài liệu kỹ thuật, môi trường chạy thực tế và kết quả kiểm thử.
Đặc biệt, không nên đưa thông tin bí mật, khóa API, mật khẩu, token truy cập hoặc dữ liệu nhạy cảm của khách hàng vào prompt nếu không cần thiết. Khi muốn AI phân tích một đoạn code có chứa thông tin riêng tư, hãy loại bỏ hoặc thay thế các dữ liệu đó trước.
Cách khai thác Grok để lập trình nhanh nhưng vẫn kiểm soát code
Giá trị lớn nhất của Grok trong lập trình không nằm ở việc tạo ra thật nhiều dòng code trong thời gian ngắn. Điều quan trọng hơn là giảm thời gian cho những công việc mà lập trình viên phải thực hiện lặp đi lặp lại, đồng thời hỗ trợ phân tích những vấn đề khó.
Để đạt được điều đó, hãy bắt đầu bằng yêu cầu rõ ràng, cung cấp đúng bối cảnh, chia chức năng lớn thành những phần nhỏ và luôn kiểm tra kết quả trong môi trường thực tế. Khi gặp lỗi, hãy cung cấp thông báo lỗi cùng đoạn code và điều kiện xảy ra lỗi thay vì chỉ mô tả rằng “code không chạy”.
Đối với code đã hoạt động, ưu tiên yêu cầu Grok phân tích trước khi sửa. Khi refactor, phải xác định rõ phần nào được phép thay đổi. Với chức năng quan trọng, nên yêu cầu kiểm thử các trường hợp biên và rà soát bảo mật.
Nói cách khác, cách dùng Grok viết code hiệu quả không phải là đưa yêu cầu rồi sao chép toàn bộ kết quả. Quy trình tốt hơn là mô tả bài toán, để AI hỗ trợ phân tích, triển khai từng phần, kiểm tra thực tế và tiếp tục cải thiện dựa trên kết quả.
Nếu được sử dụng theo cách này, Grok có thể trở thành một trợ lý lập trình hữu ích cho cả người mới học lẫn lập trình viên đã có kinh nghiệm, đặc biệt trong những công việc như tạo mã nguồn, giải thích code, tìm lỗi, refactor, viết test và hỗ trợ xử lý các vấn đề kỹ thuật.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *