chào bạn, chúc bạn một ngày tốt lành, chào mừng trở lại với series xây dựng hệ thống hỗ trợ tuyển dụng với AI từ A đến Z.
Ở bài 1, chúng ta đã cùng nhau phác thảo ý tưởng và kiến trúc tổng quan cho một hệ thống MVP. Tiếp nối trong bài 2, chúng ta đã đi sâu vào workflow đầu tiên: tự động trích xuất thông tin từ CV của ứng viên và lưu vào database. Và ở bài 3, chúng ta đã làm phần quan trọng nhất là đánh giá CV. Giúp HR có cái nhìn chính xác hơn về CV.
Hôm nay, trong bài thứ 4, chúng ta sẽ tiếp tục với những workflow cuối cùng: Tự động tạo câu hỏi phỏng vấn và Tự động chấm điểm phỏng vấn, đường nhiên cũng là sử dụng AI để làm việc này.
Hãy cùng bắt đầu!
1. Workflow 1: AI Tạo Câu Hỏi Phỏng Vấn
Sau khi đã có thông tin ứng viên trong hệ thống, bước tiếp theo là chuẩn bị cho vòng phỏng vấn. Ở WF này chúng ta sẽ lấy ra thông tin đánh giá ứng viên từ WF trước cùng với JD tương ứng và yêu cầu AI cho ra bộ câu hỏi tương ứng (tùy theo chúng ta yêu cầu bộ câu hỏi dễ hay khó). Bộ câu hỏi này sẽ được dùng để phỏng vấn ứng viên trong tương lai.
Dưới đây là luồng hoạt động chi tiết:
Giải thích các bước:
Kích hoạt Workflow: Ở bước này tùy theo WebApp của chúng ta. Tôi thì để cả node manual trigger lẫn webhook cho WF. Mục đích là vừa để WF khác gọi được nó, và cũng có thể cho HR tự tạo câu hỏi phỏng vấn cho 1 ứng viên nhất định.
Nguồn dữ liệu: Hệ thống lấy thông tin chi tiết của ứng viên (đã được bóc tách từ CV ở bài 2) làm đầu vào. Đây là bước cực kỳ quan trọng, vì chất lượng câu hỏi phụ thuộc rất nhiều vào "đề bài" mà chúng ta cung cấp cho AI. Việc đưa dữ liệu từ file vào database thật sự là vàng phải không các bạn?
AI Tạo câu hỏi:
Dữ liệu ứng viên được đưa vào prompt và gửi đến hai mô hình ngôn ngữ lớn là ChatGPT và Gemini. (theo cơ chế fallback, hình trên chưa thể hiện được điều đó, WF dưới sẽ đúng là fallback)
Nếu bạn muốn sử dụng một model AI xịn hơn để kiểm tra lại kết quả, thì bạn có thể tạo thêm 1 prompt nữa, và truyền dữ liệu vào Model AI khác để check lại bộ câu hỏi vừa tạo trước khi qua bước sau.
Một phần của prompt:
YÊU CẦU TẠO CÂU HỎI:
1. **Câu hỏi đầu tiên (câu 1)** PHẢI là: "Chào bạn, cảm ơn bạn đã dành thời gian tham gia buổi phỏng vấn hôm nay. Để bắt đầu, bạn có thể giới thiệu về bản thân, kinh nghiệm làm việc và lý do bạn quan tâm đến vị trí này không?"
2. **9 câu hỏi còn lại** cần:
- Sử dụng ngôn ngữ tự nhiên, thân thiện, không cứng nhắc
- Tập trung vào điểm mạnh để khai thác sâu hơn
- Khám phá điểm yếu một cách tinh tế và xây dựng
- Sử dụng thuật ngữ chuyên ngành phù hợp với lĩnh vực ${safeString(candidateData.job_title)}
- Đánh giá kỹ năng thực tế thông qua tình huống giả định
- Kiểm tra cultural fit và động lực làm việc
- Phù hợp với mức độ kinh nghiệm và trình độ của ứng viên
- Không gợi ý ứng viên hỏi lại AI.
3. **Định dạng output:**
- Trả về dạng JSON array
- Mỗi câu hỏi là một object với các field: question_number, question_text, question_purpose, expected_focus
- Đánh số từ 1 đến 10
ĐỊNH DẠNG TRẢ VỀ:
Trả về JSON array với mỗi câu hỏi là một object chứa:
- question_number: Số thứ tự câu hỏi (1-10)
- question_text: Nội dung câu hỏi hoàn chỉnh
- question_purpose: Mục đích của câu hỏi
- expected_focus: Điều cần tập trung khi đánh giá câu trả lời
Hãy tạo 10 câu hỏi chất lượng cao, phù hợp với profile ứng viên và yêu cầu công việc.
Xử lý & Lưu:
- Trích xuất nội dung: Hệ thống tách lấy phần nội dung câu hỏi từ response của AI. Và lấy ra danh sách bộ câu hỏi từ AI.
- Thông báo & Giám sát: Bước này nhìn đơn giản nhưng cực kỳ hữu ích, nó như là cái console trả ra thông báo để chúng ta biết lỗi từ đâu và ở node nào. Mình sử dụng Discord để monitor.
- Thông tin thêm: Sau khi bộ câu hỏi được tạo và phê duyệt, hệ thống sẽ tự động tạo một link phỏng vấn (cái này là hệ thống riêng mình làm với python, websocket chỉ để phỏng vấn với ứng viên thông qua hệ thống chat) và gửi email mời phỏng vấn đến cho ứng viên. Quá trình này là một chuỗi tự động hóa đơn thuần nên tôi không trực quan hóa thành workflow để các bạn tập trung vào phần xử lý của AI.
2. Workflow 2: AI Xử Lý & Chấm Điểm Phỏng Vấn
Khi buổi phỏng vấn kết thúc, hệ thống sẽ tiếp tục đi chấm điểm cho buổi phỏng vấn, vẫn là phụ thuộc vào prompt, chúng ta yêu cầu chấm khắt khe hay nhẹ nhàng.
Dưới đây là luồng AI chấm điểm:
Giải thích các bước:
Kích hoạt Workflow: Quy trình được kích hoạt sau khi ứng viên hoàn thành bài phỏng vấn và hệ thống nhận ghi nhận buổi phỏng vấn hoàn thành.
Lấy thông tin phỏng vấn: Hệ thống tổng hợp lại toàn bộ dữ liệu của buổi phỏng vấn, bao gồm bộ câu hỏi đã tạo và câu trả lời của ứng viên.
Tạo Prompt gửi AI: Dưới là một phần prompt tôi đang dùng.
## INTERVIEW Q&A PAIRS
${qaSection}
## SCORING INSTRUCTION
Hãy chấm điểm từng cặp câu hỏi-trả lời trên thang điểm 10, chỉ chấm điểm theo số nguyên, trả về JSON format:
YÊU CẦU:
- Chỉ trả về JSON, KHÔNG trả về markdown hoặc text khác.
- TUYỆT ĐỐI KHÔNG ĐƯỢC thay đổi question_id - phải giữ nguyên question_id từ danh sách trên.
- Chấm điểm dựa trên so sánh câu trả lời với CV và yêu cầu công việc.
- Giải thích rõ ràng lý do cho mỗi điểm số.
- Đánh giá tổng thể và đưa ra khuyến nghị tuyển dụng.
JSON FORMAT (PHẢI GIỮ NGUYÊN QUESTION_ID):
{
"candidate_id": "${safeString(candidateData.candidate_id)}",
"interview_id": "${safeString(candidateData.interview_id)}",
"evaluation_timestamp": "${new Date().toISOString()}",
"scoring_results": ${JSON.stringify(expectedScoringResults, null, 2).replace(/"7\.5"/g, '7.5')},
"overall_assessment": {
"average_score": 6.8,
"total_score": 68,
"recommendation": "PASS",
"confidence_level": 85,
"key_strengths": ["Điểm mạnh tổng thể"],
"key_weaknesses": ["Điểm yếu tổng thể"],
"hiring_notes": "Ghi chú tuyển dụng..."
}
Xử lý chấm điểm: Prompt được gửi đến Gemini để thực hiện việc chấm điểm.
Fallback: Trong trường hợp Gemini gặp lỗi hoặc không phản hồi, hệ thống sẽ tự động chuyển sang ChatGPT như một phương án dự phòng, đảm bảo quy trình không bị gián đoạn.
Trích xuất thông tin: Dựa vào json trả ra mà chúng ta dùng node code để tách theo keyword.
Cập nhật cơ sở dữ liệu: Toàn bộ kết quả chấm điểm được lưu lại vào profile của ứng viên.
Hoàn thành Workflow: Quy trình kết thúc.
Lời Kết
Nếu bạn đã đọc đủ 4 bài cho tới lúc này, thì cũng đã nắm được cách thức hệ thống tuyển dụng ứng dụng AI - Automation nó hoạt động thế nào. Với hệ thống này dù tự động hoàn toàn hay bán tự động thì rõ ràng HR sẽ có cái nhìn rõ ràng và tổng quan hơn về 1 ứng viên. Từ đó sẽ dễ hơn trong việc chọn được ứng viên phù hợp. Song song đó, nó cũng cho ứng viên thêm một cơ hội khác (khi hệ thống nhận thấy JD khác phù hợp hơn).
Việc ứng dụng n8n sẽ giúp chúng ta nhanh chóng có 1 bản MVP để chạy cách nhanh chóng. Nhưng n8n cũng có giới hạn của nó. Với hệ thống này tôi đã phải sử dụng đến 18 workflow lớn nhỏ để có thể chạy tự động từ đầu đến cuối. Nếu sử dụng code thì sẽ ít workflow hơn nhiều. Chi tiết về lợi ích và bất lợi giữa Low Code và Code mình sẽ nói ở bài sau như một cách để kết thúc serie này.


0 Nhận xét