import json # This file contains mock data for testing the analysis pipeline without calling the Deepgram API. mock_qa_pairs = [ { "qa_id": 1, "question": "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. Trước tiên, bạn có thể giới thiệu ngắn gọn về kinh nghiệm làm việc với các bài toán xử lý ngôn ngữ tự nhiên không?", "answer": "Dạ, em chào anh/chị. Em hiện có hơn 1 năm kinh nghiệm làm việc trong lĩnh vực NLP. Em từng làm tại một startup EdTech, nơi em phát triển các mô hình xử lý ngôn ngữ như chatbot luyện tập cho học sinh. Em sử dụng Hugging Face Transformers kết hợp với PyTorch để huấn luyện mô hình, cụ thể là các mô hình seq2seq có tích hợp BERT nhằm hiểu rõ hơn về ngữ cảnh. Ngoài ra, em cũng xây dựng pipeline trích xuất thực thể từ hợp đồng và có kinh nghiệm xử lý dữ liệu tiếng Việt." }, { "qa_id": 2, "question": "Bạn đã từng triển khai hệ thống nào kết hợp giữa truy xuất thông tin và sinh câu trả lời (RAG) chưa?", "answer": "Dạ có. Em từng thử nghiệm với mô hình RAG trong một dự án nội bộ. Em sử dụng LlamaIndex để xây dựng hệ thống truy xuất văn bản từ các tài liệu PDF và cơ sở dữ liệu, sau đó kết hợp với LLM như LLaMA hoặc GPT để sinh câu trả lời. Em sử dụng LangChain để orchestration các bước và đánh giá đầu ra dựa trên độ phủ thông tin và tính đúng đắn." }, { "qa_id": 3, "question": "Khi làm việc với tiếng Việt, bạn gặp khó khăn gì trong giai đoạn xử lý trước dữ liệu?", "answer": "Tiếng Việt có đặc thù là từ ghép và nhiều từ viết tắt theo ngữ cảnh chuyên ngành. Em thường dùng underthesea hoặc pyvi để tách từ, sau đó tự xử lý thêm bằng regex tùy theo domain. Với dữ liệu từ ngành giáo dục hay y tế, em cũng xây dựng một bộ từ điển nội bộ để chuẩn hóa các thực thể đặc thù trước khi training." }, { "qa_id": 4, "question": "Bạn từng dùng thư viện hay framework nào để xây dựng mô hình NLP?", "answer": "Em dùng chủ yếu là Hugging Face Transformers, kết hợp PyTorch để huấn luyện. Với các task đơn giản như phân loại hoặc TF-IDF vectorization, em sử dụng scikit-learn. Ngoài ra, em cũng có kinh nghiệm sử dụng spaCy và NLTK cho các bước phân tích cú pháp hoặc rút trích thông tin cơ bản." }, { "qa_id": 5, "question": "Bạn đã từng tích hợp mô hình vào hệ thống như thế nào?", "answer": "Em thường đóng gói mô hình bằng Docker, sử dụng FastAPI để tạo REST API phục vụ inference. Sau đó triển khai trên EC2 hoặc server nội bộ bằng Docker Compose. Em cũng có kinh nghiệm theo dõi hiệu năng model bằng Prometheus và Grafana, đảm bảo thời gian phản hồi phù hợp với yêu cầu thực tế." }, { "qa_id": 6, "question": "Bạn đã từng làm việc với cơ sở dữ liệu SQL chưa?", "answer": "Dạ có. Em dùng PostgreSQL trong nhiều dự án để lưu trữ dữ liệu người dùng và kết quả inference. Trong một số dự án NLP tích hợp RAG, em còn xây dựng pipeline truy xuất dữ liệu từ SQL để kết hợp với kết quả sinh văn bản từ mô hình." }, { "qa_id": 7, "question": "Ngoài các công cụ NLP, bạn có sử dụng hoặc tìm hiểu các công nghệ mới trong lĩnh vực như LangChain, LlamaIndex hay vector database không?", "answer": "Dạ có, em rất quan tâm đến các công cụ hỗ trợ triển khai hệ thống NLP hiện đại. Em từng triển khai prototype với LangChain kết hợp FAISS làm vector store để xây dựng hệ thống truy xuất câu trả lời từ tài liệu nội bộ. Em cũng có tìm hiểu về ChromaDB và Milvus để tối ưu tốc độ truy xuất khi hệ thống mở rộng." }, { "qa_id": 8, "question": "Bạn có thể chia sẻ một bài toán AI bạn thấy có “tác động xã hội lớn”?", "answer": "Dạ, em từng thực hiện đề tài nhận diện cảm xúc học sinh qua giọng nói. Em sử dụng mô hình âm thanh kết hợp NLP để đánh giá trạng thái cảm xúc như lo lắng, mệt mỏi. Ứng dụng này hỗ trợ giáo viên điều chỉnh phương pháp giảng dạy phù hợp, đặc biệt hữu ích trong môi trường học trực tuyến." }, { "qa_id": 9, "question": "Bạn có từng làm việc trong nhóm phát triển đa vai trò chưa?", "answer": "Dạ có. Trong dự án chatbot, em phụ trách NLP pipeline, trong khi các bạn khác lo frontend và backend. Chúng em sử dụng Jira để quản lý sprint, phối hợp qua Slack và mỗi tuần đều review kết quả với PO. Em thấy việc phối hợp giữa các vai trò là rất quan trọng để đảm bảo sản phẩm thống nhất." }, { "qa_id": 10, "question": "Cảm ơn bạn đã chia sẻ rất chi tiết. Buổi phỏng vấn hôm nay đến đây là kết thúc. Chúc bạn nhiều thành công trong các dự án sắp tới!", "answer": "Em cảm ơn anh/chị rất nhiều. Em rất vui vì có cơ hội trao đổi và học hỏi trong buổi phỏng vấn này. Chúc anh/chị một ngày làm việc hiệu quả ạ!" } ] mock_transcription_data = { "results": { "channels": [ { "alternatives": [ { "transcript": "mock full transcript", "paragraphs": { "transcript": "mock full transcript", "paragraphs": [ {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[0]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[0]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[1]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[1]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[2]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[2]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[3]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[3]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[4]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[4]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[5]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[5]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[6]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[6]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[7]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[7]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[8]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[8]['answer']}]}, {"speaker": 0, "sentences": [{"transcript": mock_qa_pairs[9]['question']}]}, {"speaker": 1, "sentences": [{"transcript": mock_qa_pairs[9]['answer']}]} ] } } ] } ] } } mock_transcription_result_json = json.dumps(mock_transcription_data) mock_job_description = """ Mô tả công việc Sử dụng các công cụ và framework như TensorFlow, PyTorch, và Hugging Face Transformers để xây dựng các mô hình ngôn ngữ. Sử dụng các kỹ thuật NLP để phân tích, trích xuất thông tin từ văn bản, và xử lý ngôn ngữ tự nhiên. Phát triển các hệ thống truy xuất thông tin từ cơ sở dữ liệu để hỗ trợ quá trình tạo ra câu trả lời chính xác và đầy đủ. Sử dụng các kỹ thuật RAG để kết hợp thông tin truy xuất từ các nguồn dữ liệu với khả năng sinh văn bản của mô hình. Theo dõi và nghiên cứu các xu hướng và công nghệ mới trong lĩnh vực NLP, Chatbot và RAG. Tối ưu hóa thời gian phản hồi và hiệu suất của hệ thống truy xuất thông tin. Yêu cầu ứng viên Có tối thiểu 1 năm kinh nghiệm Tốt nghiệp Cao đẳng/Đại học các chuyên ngành Công nghệ Thông tin, Toán Tin, Điện tử Viễn thông, Điều khiển Tự động, hoặc các ngành liên quan. Kiến thức chuyên môn: Có hiểu biết về Machine Learning và Deep Learning. Kinh nghiệm làm việc với các mô hình ngôn ngữ lớn (LLM) Có kinh nghiệm làm việc với RESTAPI, Langchain, llamaindex, ... Kỹ năng nghiên cứu và nền tảng: Khả năng nghiên cứu và áp dụng các công nghệ mới. Nền tảng vững chắc về cấu trúc dữ liệu và thuật toán. Hiểu biết và có kinh nghiệm lập trình với các ngôn ngữ như C++ và Python. Có kinh nghiệm làm việc với cơ sở dữ liệu SQL. Quyền lợi Mức lương: thỏa thuận khi phỏng vấn Công ty đóng 100% BHYT, BHXH, BHTN Công ty cung cấp thiết bị làm việc Review lương 1 - 2 lần/năm theo năng lực Thưởng ngày lễ 2/9, 30/04, 1/5, ..., Tết, thưởng lương tháng 13 Thưởng kết quả kinh doanh toàn công ty cuối năm Du lịch 2 lần/năm Môi trường làm việc năng động, chuyên nghiệp """ mock_rubric_content = """expertise: description: "Đánh giá mức độ thành thạo về chuyên môn AI, bao gồm kiến thức và kinh nghiệm thực tế với NLP, LLM, RAG, và các công cụ như PyTorch, TensorFlow, HuggingFace, LangChain, REST API. Khả năng áp dụng thuật toán, xử lý dữ liệu và tối ưu hóa hệ thống cũng được xem xét." weight: 0.7 communication: description: "Đánh giá khả năng trình bày ý tưởng rõ ràng, trao đổi kỹ thuật hiệu quả, viết tài liệu hoặc báo cáo kỹ thuật dễ hiểu, và khả năng giao tiếp với các thành viên không chuyên kỹ thuật (PM, khách hàng nội bộ)." weight: 0.3 """