AI Tools

Xây dựng ứng dụng phỏng vấn AI: Công nghệ và kế hoạch

Tìm hiểu cách xây dựng ứng dụng phỏng vấn thử AI bằng Django: chọn Python, Django, OpenAI Agents SDK, lập kế hoạch tính năng và khởi tạo dự án.

Ảnh đại diện Long Nguyen

Long Nguyen

Lập trình viên Fullstack · Kỹ sư AI · Nhà nghiên cứu

3 phút đọc
Công cụ phỏng vấn thử tiếng Anh miễn phí bằng AI — AI Interviewer
Công cụ phỏng vấn thử tiếng Anh miễn phí bằng AI — AI Interviewer

Chúng ta sẽ xây dựng gì?

Trong chuỗi bài này, chúng ta sẽ xây dựng một ứng dụng phỏng vấn AI bằng Django, từ một thư mục trống đến sản phẩm hoạt động hoàn chỉnh: bạn tải CV lên, AI đọc nội dung và tạo một buổi phỏng vấn phù hợp, bạn trả lời các câu hỏi rồi nhận phản hồi. Tôi đã xây dựng phiên bản thực tế của ứng dụng này vì chính mình cần nó — là một lập trình viên người Việt, tiếng Anh không phải ngôn ngữ đầu tiên của tôi, và việc nói câu trả lời thành tiếng dưới áp lực là điều mà đọc thêm bao nhiêu cũng không thể khắc phục. Mọi công cụ luyện tập tôi từng thử đều che phần luyện tập thực sự sau bước đăng ký, tường phí và hàng loạt màn hình thiết lập. Tôi chỉ muốn tải CV lên và bắt đầu nói. Khoảng trống đó chính là lý do dự án này ra đời.

Chúng ta sẽ xây dựng công khai, đúng theo thứ tự tôi đã thực hiện. Phần đầu tiên này là bản đồ tổng thể: xem sản phẩm hoàn thiện, lựa chọn công nghệ và giải thích lý do cho từng lựa chọn, lập kế hoạch tính năng rồi khởi tạo dự án. Chưa có mã tính năng nào ở đây — chỉ là những quyết định giúp các phần sau diễn ra suôn sẻ.

Xem ứng dụng hoàn thiện

Trước khi viết dòng mã đầu tiên, hãy xem đích đến của chúng ta — một video ngắn giới thiệu ứng dụng đang hoạt động:

Bạn có thể dùng thử ngay bây giờ — hoàn toàn miễn phí và không cần tài khoản: ai-interviewer.tech. Tất cả nội dung trong mười phần của chuỗi bài đều hướng đến sản phẩm này.

Vì sao chọn Python?

Python là ngôn ngữ nền tảng vì một lý do đơn giản: những công cụ chúng ta cần đều có sẵn trong hệ sinh thái này. Các thư viện phân tích CV, bộ SDK AI và gần như mọi model client đều ưu tiên Python, nên xây dựng bằng Python giúp giảm số lớp kết nối và lượng mã trung gian. Python cũng cho phép viết mã nhanh, điều đặc biệt quan trọng khi bạn là người xây dựng sản phẩm một mình và muốn đưa nó đến tay người dùng. Cụ thể, dự án này chạy trên Python 3.11 — những cải thiện hiệu năng ở các phiên bản gần đây là lợi ích miễn phí mà không cần thêm công sức.

Vì sao chọn Django thay vì FastAPI?

Đây là lựa chọn mà nhiều bài hướng dẫn về AI thường mặc định theo xu hướng mới nhất. Câu hỏi đúng không phải là “framework nào nhanh nhất?” — mà là “ứng dụng này thực sự cần làm tốt điều gì?”. Đây không phải một lớp API mỏng; nó là một sản phẩm hoàn chỉnh với dữ liệu, khu vực quản trị và luồng sử dụng thực tế. Đó chính là thế mạnh của Django:

  • ORM tích hợp sẵn — chúng ta có thể mô hình hóa các buổi phỏng vấn, câu hỏi và câu trả lời trực tiếp mà không phải tự kết nối thêm một lớp cơ sở dữ liệu riêng.
  • Trang quản trị tích hợp sẵn — một bảng điều khiển có thể dùng ngay để kiểm tra dữ liệu thực trong quá trình phát triển, vô cùng hữu ích khi gỡ lỗi kết quả do AI tạo ra.
  • Đầy đủ công cụ cần thiết — xác thực, migration, biểu mẫu và định tuyến đều được tích hợp, giúp chúng ta nhanh chóng thiết kế cả ứng dụng thay vì lắp ghép từng phần.

FastAPI rất xuất sắc — với các API async thuần túy có yêu cầu đồng thời cao, đây thường là lựa chọn tốt hơn. Tuy nhiên, trong ứng dụng này, các lệnh gọi AI không phải nút thắt về khả năng xử lý đồng thời, còn thời gian tiết kiệm được nhờ bộ công cụ tích hợp của Django lớn hơn lợi thế async của FastAPI. Hãy chọn công cụ dựa trên các ràng buộc thực tế, thay vì bắt các ràng buộc phải chạy theo công cụ.

Vì sao chọn OpenAI Agents SDK?

Ở lớp AI, chúng ta sử dụng OpenAI Agents SDK — nhưng không phải vì sự kỳ diệu của “agent tự vận hành”. Giá trị thực sự nằm ở điều ngược lại: khả năng kiểm soát rõ ràng toàn bộ quy trình. Chúng ta quyết định từng bước và điều phối chúng bằng mã, thay vì trao cho model quyền tự do không giới hạn rồi hy vọng nó hoạt động đúng. Một hệ thống dễ dự đoán đến từ việc giới hạn thành phần có tính xác suất, chứ không phải mù quáng tin tưởng nó.

  • Kiểm soát toàn bộ quy trình — chúng ta gọi model theo từng bước và giữ logic trong mã của mình, nhờ đó hệ thống dễ gỡ lỗi và đáng tin cậy hơn.
  • Không phụ thuộc nhà cung cấp — thông qua giao diện model chat-completions, SDK có thể kết nối đến bất kỳ endpoint tương thích với OpenAI nào, bao gồm cả model tự lưu trữ. Chúng ta vẫn có khả năng điều phối của SDK mà không bị khóa vào một nhà cung cấp duy nhất.

Sự kết hợp giữa khả năng kiểm soát và tự do thay đổi model nền tảng chính xác là điều một sản phẩm thực tế cần, bởi chi phí, quyền riêng tư hoặc khả năng cung cấp có thể khiến bạn muốn đổi model về sau.

Lập kế hoạch tính năng

Sau khi chốt công nghệ, đây là bản đồ đầy đủ các tính năng của chuỗi bài, để mỗi phần tiếp theo đều có vị trí rõ ràng:

  • Tải CV và trích xuất văn bản — lấy phần văn bản sạch và đáng tin cậy từ CV định dạng PDF và DOCX.
  • Xác thực CV và phát hiện vị trí công việc — xác nhận tệp tải lên thực sự là CV, sau đó suy ra vai trò và cấp độ kinh nghiệm.
  • Tạo câu hỏi bằng AI — một buổi phỏng vấn được tùy chỉnh dựa trên nền tảng thực tế của ứng viên, thay vì một ngân hàng câu hỏi chung chung.
  • Trả lời bằng giọng nói và chuyển giọng nói thành văn bản — trả lời thành tiếng như trong một buổi phỏng vấn thực tế.
  • Chấm điểm và phản hồi — một báo cáo mà ứng viên thực sự có thể học hỏi từ đó.
  • Trải nghiệm bắt đầu nhanh, không cần đăng nhập — nguyên tắc cốt lõi khởi nguồn cho toàn bộ dự án: tải lên và bắt đầu.

Khởi tạo cấu trúc dự án

Giờ chúng ta bắt đầu xây dựng thực sự. Cấu trúc bạn tạo cho dự án ngay từ ngày đầu tiên sẽ quyết định mức độ vất vả khi phát triển nó về sau — và một ứng dụng AI thường có thêm nhiều phần chuyển động như phân tích dữ liệu, agent và tác vụ bất đồng bộ, nên một chút kỷ luật lúc này sẽ đem lại lợi ích lớn về sau:

  • Môi trường — tạo môi trường ảo trên Python 3.11, cài đặt Django và cố định phiên bản trong requirements.txt để quá trình xây dựng có thể tái lập.
  • Cấu trúc — tách riêng project và app, đồng thời dành không gian rõ ràng để bổ sung các module phân tích và AI sau này thay vì dồn tất cả vào một tệp.
  • Thông tin bí mật — đưa API key và các thiết lập nhạy cảm vào biến môi trường thông qua tệp .env ngay từ đầu, và tuyệt đối không commit chúng.
django-admin startproject ai_interviewer
cd ai_interviewer
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Bạn có thể tải chính xác tệp requirements.txt được sử dụng trong dự án này tại đây: requirements.txt.

Cấu trúc dự án AI Interviewer
Cấu trúc dự án AI Interviewer

Đó là nền móng của dự án. Chúng ta đã chọn từng công cụ một cách có chủ đích, lập bản đồ những gì sẽ xây dựng và thiết lập một dự án không cần viết lại khi các tính năng thực tế xuất hiện. Nếu muốn bỏ qua toàn bộ quá trình xây dựng và bắt đầu từ mã nguồn hoàn thiện, sẵn sàng cho môi trường production, bạn có thể xem toàn bộ mã trong bộ khởi đầu — nếu không, hãy tiếp tục với phần 2, nơi chúng ta thiết kế các model cơ sở dữ liệu để biến kế hoạch này thành cấu trúc dữ liệu thực tế.

CÂU HỎI THƯỜNG GẶP

Câu hỏi thường gặp

Vì sao chọn Django thay vì FastAPI cho một ứng dụng AI?

Django có sẵn ORM, trang quản trị và hệ thống xác thực, giúp đẩy nhanh quá trình xây dựng một ứng dụng hoàn chỉnh có dữ liệu, chứ không chỉ là API. FastAPI nổi bật với các dịch vụ API async thuần túy, nhưng dự án này cần cả bộ công cụ đầy đủ, nên Django tiết kiệm nhiều thời gian hơn phần chi phí do không được thiết kế ưu tiên async mang lại.

Sử dụng OpenAI Agents SDK có khiến tôi bị phụ thuộc vào OpenAI không?

Không. Thông qua giao diện model chat-completions, SDK có thể kết nối đến các backend không phải OpenAI nhưng cung cấp endpoint tương thích với OpenAI, bao gồm cả model tự lưu trữ. Bạn vẫn có khả năng điều phối của SDK và tự do thay đổi model nền tảng.

Tôi có cần kinh nghiệm về AI để theo dõi chuỗi bài này không?

Không. Bạn chỉ cần có kiến thức Python cơ bản và sẵn sàng học Django. Các phần chuyên về AI bắt đầu từ khoảng phần 6. Mọi nội dung trước đó đều là công việc Python và Django tiêu chuẩn.

Tôi có thể sử dụng dự án này làm sản phẩm portfolio không?

Có. Đến cuối các phần miễn phí, bạn sẽ có một ứng dụng AI hoạt động và có thể trình diễn, có khả năng phân tích một CV thực tế và thực hiện một buổi phỏng vấn được tùy chỉnh — đây là một sản phẩm portfolio nổi bật và khác biệt, đặc biệt phù hợp với sinh viên và lập trình viên mới vào nghề.

Cập nhật cùng Netalith

Nhận tài nguyên lập trình, cập nhật sản phẩm và ưu đãi đặc biệt ngay trong hộp thư của bạn.