Dự án này được phát triển bởi nhóm MNT (Math and Technology), một nhóm trẻ đam mê công nghệ và toán học từ trường Đại học Khoa học Tự nhiên (University of Science), đại học Quốc Gia Thành phố Hồ Chí Minh, với mong muốn tìm hiểu và ứng dụng các công cụ AI. Đây là một dự án nhỏ nhưng có mục tiêu rõ ràng: nghiên cứu, triển khai một AI với data từ Linkedin để phục vụ cho mọi người có thể search về detail job và nhờ AI chuẩn bị giúp về roadmap, techniques hay đơn giản là so sánh giữa các job với nhau. Chúng tôi mong muốn tạo ra một nền tảng có tính thực tiễn cao, đồng thời học hỏi và chia sẻ kiến thức với tất cả mọi người.
Lưu ý: Vì đây là 1 dự án phi lợi nhuận nên các công cụ đều là free-plan, chủ yếu nhắm vào kỹ thuật, code chứ không hoàn toàn tăng performance của website hay độ thông minh của AI cao như xài các model trả phí, mong được mọi người thông cảm.
Lấy tất cả thông tin từ job liên quan về từ khóa: tất cả các keyword về công nghệ (Computer Science and Technology).
- Automation ETL với selenium để lấy toàn bộ thông tin về job.
- Sử dụng airflow để tự động quá trình này.
Dự án có các chức năng cơ bản như:
- Tạo new chat.
- Xóa chat.
- Chat về job mới nhất trên linkedin, search theo keyword, so sánh benefit, roadmap cho từng nghành nghề, techniques cần chuẩn bị.
- Xem lịch sử chat (không phát triển phần này vì nhóm chúng mình không có role chuyên về frontend và backend nên việc tạo 1 account là rất khó khăn nên hệ thống sẽ tự động xóa chat kể từ 3 ngày cho lần chat đầu tiên)
Video demo: Updated later
Link trải nghiệm: https://linkedin-chatbot-job-mnt-team.streamlit.app/
git clone <link to github project>
pip install -r requiremnents
Sau đó bạn hãy tạo 1 file secrets.toml, bạn cần tạo các API sau
EMAIL="your_username" PASSWORD="your_password"
GROQ_API_KEY="your_api"
MONGO_URI="your_api"
HOST_AIVEN="your_api"
USER_AIVEN="your_api"
PASSWORD_AIVEN="your_api"
DB_AIVEN="your_api"
PORT_AIVEN="your_api"
TABLE_AIVEN="your_api"
S3_BUCKET_JOB="your_api"
S3_BUCKET_LOG="your_api"
S3_BUCKET_VECTORDB="your_api"
PREFIX_VECTORDB="your_api"
AWS_ACCESS_KEY_ID="your_api"
AWS_SECRET_ACCESS_KEY="your_api"
Bạn vẫn tạo 1 file và điền các thông tin như trên nhưng cần phải chỉnh khá nhiều, vì tụi mình build trên streamlit nên tụi mình xài .streamlit secrets luôn thay vì environment như các dự án thông thường.
pip install -e .
cd "<current_path>/linkedin-chatbot-job-MNT-team/web_scrapping"
python main.py
or
python "<current_path>/linkedin-chatbot-job-MNT-team/web_scrapping/main.py"
Chạy Vectordatabase (Manual)
cd "<current_path>/linkedin-chatbot-job-MNT-team/vector_database"
python rag.py
or
python "<current_path>/linkedin-chatbot-job-MNT-team/vector_database/rag.py"
Chạy app
streamlit run streamlit_app/app/main.py
Chúng tôi sử dụng Aiven platform, DBMS sử dụng là MySQL, với cấu hình là:
- 1 CPU
- 1 GB RAM (processing)
- 5 GB Storage
là bản free-plan hỗ trợ cho các dự án phi lợi nhuận, tham khảo tại đây: https://console.aiven.io/
- Nếu bạn tự tạo database, thì bạn có thể vào service của bạn và nhấn vào quick connnect và chọn python.
- Còn nều bạn không phải owner, thì aiven có feature là add user vào.
- Aiven hiện tại không có feature view table trên chính nền tảng của họ, nên chỉ có thể sử dụng code với các command để check.
Chúng tôi sử dụng Mongo Atlas, là phiên bản mongodb nhưng trên cloud hỗ trợ rất nhiều cho developer phát triển. Một số lưu ý khi bạn sử dụng mongo atlas:
- Nếu muốn connect thì bạn cần URI, và mongo atlas bảo mật rất tốt nên chỉ có thể sử dụng connection (0.0.0.0, tức là cho phép mọi địa chỉ IP truy cập vào), thông thường sẽ bị chặn toàn bộ IP, trừ IP local của bạn.
- Nên xem kĩ các dung lượng lưu trữ của Mongo atlas, vì free-plan nên giới hạn cũng khá nhiều, bạn không thể sử dụng VPC hay các cách kết nối nâng cao khác ngoài 0.0.0.0, nếu xài free-plan.
Kết nối vào S3, thì các bạn cần đăng nhập và lấy được các thông tin sau:
- Vào IAM
- Tạo access keys
- Tạo xong thì copy 2 phần là: AWS Access key ID và AWS secret access key
- S3 thì bạn cần tạo thêm bucket trong s3, nếu bạn cần tạo folder ví dụ FAISS, thì phải có folder riêng với BM25, nên sẽ có 1 prefix là vector_database/faiss
Leader: Hàng Tấn Tài (US)
Member: Nguyễn Hoàng Nam (US)
Member: Hồ Quốc Tuấn (US)
This project is licensed under the MIT License - see the LICENSE file for details