Một ngày đẹp trời, tôi phải đứng lớp dạy môn SpringBoot. Tôi được biết lớp này thầy giáo rất hay cho sinh viên làm những câu hỏi quiz và nói đây là cách để các bạn ôn kiên thức. Để không mất lòng sinh viên tôi cũng cố nghĩ ra vài câu quiz. Nhưng thành thật là tôi vẫn thích code dự án cùng sinh viên hơn. Thế nên tôi quyết định giao việc tạo Quiz cho ChatGPT.

Ra lệnh cho ChatGPT tạo quiz

Để sinh quiz tôi gõ như thế này
Please generate 10 multiple choices with correct answer about Spring Boot framework in Vietnamese

ChatGPT nó trả về thế này:

Sure! Here are 10 multiple-choice questions about the Spring Boot framework in Vietnamese:

  1. Spring Boot là gì?
    a. Một ngôn ngữ lập trình
    b. Một framework phát triển ứng dụng
    c. Một hệ điều hành
    d. Một công cụ quản lý cơ sở dữ liệu
    Đáp án: b

  2. Spring Boot được xây dựng trên nền tảng ngôn ngữ lập trình nào?
    a. Java
    b. Python
    c. C++
    d. JavaScript
    Đáp án: a

  3. Spring Boot giúp đơn giản hóa việc gì trong việc phát triển ứng dụng?
    a. Quản lý cơ sở dữ liệu
    b. Thiết kế giao diện người dùng
    c. Xử lý dữ liệu lớn
    d. Cấu hình và triển khai ứng dụng
    Đáp án: d

  4. Spring Boot là một phần của dự án nổi tiếng nào?
    a. Eclipse
    b. IntelliJ IDEA
    c. NetBeans
    d. Spring Framework
    Đáp án: d

  5. Spring Boot giúp giải quyết vấn đề gì trong việc phát triển ứng dụng?
    a. Tăng hiệu suất mạng
    b. Tối ưu hóa thời gian thực thi
    c. Bảo mật dữ liệu
    d. Tự động cấu hình ứng dụng
    Đáp án: d

  6. Spring Boot sử dụng cơ chế nào để quản lý các dependencies trong ứng dụng?
    a. Maven
    b. Gradle
    c. Ant
    d. Ivy
    Đáp án: a

  7. Spring Boot hỗ trợ việc phát triển ứng dụng web bằng cách sử dụng giao diện người dùng nào?
    a. JSP
    b. PHP
    c. HTML
    d. Thymeleaf
    Đáp án: d

  8. Spring Boot cung cấp tính năng nào để giảm thiểu thời gian khởi động ứng dụng?
    a. Caching
    b. AOP (Aspect-Oriented Programming)
    c. Spring Security
    d. Auto-configuration
    Đáp án: d

  9. Spring Boot hỗ trợ kết nối với cơ sở dữ liệu nào?
    a. MySQL
    b. MongoDB
    c. Oracle
    d. Tất cả các phương án trên
    Đáp án: d

  10. Spring Boot có thể chạy trên nền tảng nào?
    a. Windows
    b. macOS
    c. Linux
    d. Tất cả các phương án
    Đáp án: d

Làm sao để phân tích dữ liệu quiz do ChatGPT sinh ra?

Mình gọi em Huấn, sinh viên đang thực tập lập trình React ở Techmaster vào để làm chức năng copy toàn bộ text của các câu hỏi chắc nghiệm paste vào một ô text lập tức trang web phải phân tích được và nhập vào trong CSDL quan hệ.

Em Đức một lập trình viên kinh nghiệm góp ý “Cái này phải dùng Regex để phân tích”. Trong khi Huấn vẫn đang ngơ ngác chưa biết làm thế nào. Chắc em Huấn dự toán phải học regex 1 tuần, sau đó mới xử lý tác vụ này. Tôi tiếp tục ra lệnh ChatGPT như sau:

suggest me regex pattern to parse following text that contains several multiple choices quiz

ChatGPT nó gợi ý thế này:
To parse the text containing multiple-choice quiz questions and answers, you can use the following regex pattern:
^(.*?)\n((?:[a-d]\.\s.*?\n)+)Đáp án:\s([a-d])
Explanation of the regex pattern:

  • ^ asserts the start of a line.
  • (.*?)\n captures the question text (any characters except a newline) followed by a newline character.
  • ((?:[a-d]\.\s.*?\n)+) captures the multiple-choice options. It matches one or more occurrences of a letter (a-d) followed by a dot and a space, then captures any characters until a newline character.
  • Đáp án:\s([a-d]) captures the correct answer, indicated by “Đáp án:” followed by a space and a letter (a-d).
const text = `
Spring Boot là gì?
a. Một ngôn ngữ lập trình
b. Một framework phát triển ứng dụng
c. Một hệ điều hành
d. Một công cụ quản lý cơ sở dữ liệu
Đáp án: b

Spring Boot được xây dựng trên nền tảng ngôn ngữ lập trình nào?
a. Java
b. Python
c. C++
d. JavaScript
Đáp án: a
`;

const pattern = /^(.*?)\n((?:[a-d]\.\s.*?\n)+)Đáp án:\s([a-d])/gm;
let matches;
while ((matches = pattern.exec(text)) !== null) {
  const question = matches[1].trim();
  const options = matches[2].match(/([a-d])\.\s(.*?)\n/g).map((option) => option.trim());
  const answer = matches[3];

  console.log("Question:", question);
  console.log("Options:");
  options.forEach((option) => console.log(option));
  console.log("Answer:", answer);
  console.log();
}

Kiểm tra gợi ý của ChatGPT trên regex101

Tôi copy thử đoạn regex mà ChatGPT gợi ý ^(.*?)\n((?:[a-d]\.\s.*?\n)+)Đáp án:\s([a-d]) vào https://regex101.com/. Kết quả phải nói là quá ổn.
regex101

Học được gì qua tác vụ này

  1. Muốn giải quyết một tác vụ lập trình nhanh cần phải giỏi tiếng Anh. Câu prompt viết bằng tiếng Anh chuẩn luôn có kết quả đúng rất cao từ ChatGPT.
  2. Cần phải biết những công cụ có thể xử lý vấn đề. Như bạn Đức, chỉ một câu gợi ý sử dụng regex đã giúp Huấn đi đúng hướng ngay từ đầu.
  3. Hãy đến học lập trình và thực tập tại Techmaster vì ở đây các bạn sẽ được tham gia các dự án thực tế ở Techmaster, giao những tác vụ rất nhỏ. Nếu bạn chưa biết cách làm thì các lập trình viên có kinh nghiệm hay giảng viên sẽ hỗ trợ cho bạn.