Xây dựng ứng dụng hỗ trợ luyện viết tiếng Anh bằng ChatGPT API và NextJS

Tram Ho

Xin chào tất cả các bạn!

Nhân dịp năm mới xin chúc tất cả các bạn đọc của Viblo một năm an khang thịnh vượng, đạt được nhiều thành công trong sự nghiệp và cuộc sống!

Chắc hẳn các bạn đều biết tới ChatGPT, 1 con bot AI nổi lên trong thời gian gần đây với khả năng trò chuyện và trả lời về hầu như mọi lĩnh vực trong cuộc sống. Dù còn nhiều tranh cãi về tính đúng sai của dữ liệu nhưng không thể phủ nhận được sức mạnh rất lớn của công cụ này cũng như AI trong việc giúp tăng năng suất của con người trong nhiều ngành nghề khác nhau như lập trình, marketing,…

Trong bài viết này, chúng ta sẽ sử dụng API của nó để viết 1 ứng dụng đơn giản hỗ trợ người dùng trong việc học tiếng Anh, và cụ thể hơn là tối ưu việc viết bài luận IELTS Writing và Speaking.

Và tất nhiên, khá nhiều đoạn code trong ứng dụng này được chính ChatGPT viết 😃

Vì OpenAI chưa mở public đến API của chính ChatGPT, nên mình sẽ sử dụng API Text Completion với tính năng generate text tương tự như ChatGPT.

Các bạn có thể tham khảo ở đây.

OpenAI API

Các tính năng của ứng dụng này bao gồm:

  • Từ kiểu bài luận: IELTS Writing task 2 và đề bài do người dùng nhập, ứng dụng cung cấp gợi ý, tạo bài mẫu
  • Chỉnh sửa lỗi, gợi ý câu văn, giải thích nghĩa của từ,… dựa theo đoạn văn bản người dùng đã nhập và đề bài luận

Các bạn có thể check source code của project ở đây.

https://github.com/ngviethoang/ai-writing-assistant

Demo ứng dụng.

Writing Assistant

Cài đặt

Khởi tạo NextJS project

Cài đặt các thư viện: OpenAI client, ChakraUI (UI framework)

Đăng ký OpenAI API key

Đăng nhập tài khoản OpenAI tại trang https://platform.openai.com/

Tạo API Secret Key

Tạo file .env trong project và lưu secret key

Thêm file .env này vào file .gitignore để tránh bị lộ key khi commit code

Tạo prompt để giao tiếp với API

Để giao tiếp với Text Completion API, ta cần sử dụng các câu truy vấn (prompt). Đây là bước quan trọng để có thể ra được output chính xác như những gì ta mong muốn. Theo thuật ngữ trong NLP là prompt engineering.

Ví dụ như 1 prompt mẫu để tạo outline mẫu cho bài viết theo đề bài của IELTS Writing task:

Ở đây ta có thể định nghĩa các parameter có thể truyền lên từ UI:

  • actor: an IELTS test taker with a band score of 8.0
  • question: IELTS Writing Task 2 question
  • content: đoạn text do người dùng nhập

Tạo hàm xây dựng prompt dùng cho việc truy vấn API dựa trên các parameter actor, question, content.

Tạo API handler trong NextJS

Để tạo API handler xử lý kết quả truy vấn từ Text Completion, tạo API route trong thư mục pages/api/prompt.ts

Các tham số trong Text Completion API được sử dụng

  • model: sử dụng model text-davinci-003 mới nhất và mạnh nhất trong các GPT-3 model
  • prompt: câu truy vấn đã build ở step trước
  • temperature: quyết định độ ổn định của kết quả, temperature càng cao model ra kết quả càng đa dạng hơn
  • max_tokens: số lượng token tối đa trả về, có thể giới hạn số lượng token trả về mỗi prompt để giảm chi phí

Code giao diện

Tiếp theo là phần frontend cho ứng dụng, mình sẽ viết các component cơ bản như

  • Text editor để nhập câu hỏi, nội dung bài viết
  • Các button dùng để gọi API tương ứng với các function như tạo outline bài viết, tạo bài viết sample, chữa lỗi chính tả, nhận xét,…
  • Component hiển thị kết quả trả về từ API

Tạo các component và layout cho page bằng ChakraUI

Render các button để generate prompt và kết quả gợi ý từ API

Kết quả trả về từ API:

GPT API này có chi phí khá cao nên chúng ta có thể sử dụng cache để lưu lại kết quả các truy vấn trước đó.

Gọi API /api/prompt khi click các button trên để hiển thị kết quả gợi ý

Chạy ứng dụng

Giao diện ứng dụng

Kết luận

Qua việc xây dựng ứng dụng này, hy vọng bạn đã nắm được cách để tích hợp AI vào ứng dụng của mình để phục vụ các use case khác như chatbot, gia sư dạy học, PT lên lịch tập,…

Hẹn gặp lại ở các bài viết sau!

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo