Xây Dựng Ứng Dụng Web Tự Động Hóa Phân Tích Dữ Liệu Với GenAI và Python (Hướng Dẫn Chi Tiết)

By Nguyen Ha DS

TechnologyAIEducation
Share:

Key Concepts

  • Ứng dụng web tự động hóa phân tích dữ liệu: Ứng dụng cho phép người dùng tương tác với dữ liệu thông qua hỏi đáp và trực quan hóa.
  • Mô hình ngôn ngữ lớn (LLM): Sử dụng LLM (ví dụ: GPT-3.5 Turbo) để phân tích và trả lời câu hỏi về dữ liệu.
  • Trực quan hóa dữ liệu: Tạo biểu đồ và dashboard tương tự Tableau mà không cần cài đặt thêm công cụ.
  • Langchain: Thư viện Python hỗ trợ xây dựng ứng dụng LLM, đặc biệt là các agent.
  • Streamlit: Framework Python để tạo ứng dụng web tương tác một cách nhanh chóng.
  • Agent: Công cụ cho phép LLM mở rộng khả năng, ví dụ: tương tác với pandas DataFrame.
  • Pick worker: Thư viện cho phép tạo các biểu đồ tương tác trực tiếp trên Streamlit.
  • Cookiecutter: Công cụ tạo cấu trúc dự án Python chuẩn.
  • Virtual environment: Môi trường ảo Python để quản lý các thư viện riêng biệt cho từng dự án.
  • Git: Hệ thống quản lý phiên bản mã nguồn.

1. Giới thiệu và mục tiêu dự án

  • Mục tiêu: Xây dựng ứng dụng web cho phép người dùng:
    • Hỏi đáp trực tiếp với bộ dữ liệu (tương tự ChatGPT-4).
    • Trực quan hóa dữ liệu (tương tự Tableau).
  • Lợi ích:
    • Tự động hóa quy trình phân tích dữ liệu.
    • Công cụ hỗ trợ công việc hàng ngày.
    • Dự án showcase khi xin việc trong ngành data science/phát triển phần mềm.
  • Kết quả:
    • Dự án lưu trên GitHub với mô tả chi tiết (README).
    • Ứng dụng web cho phép hỏi đáp và trực quan hóa dữ liệu.

2. Thiết lập môi trường và cấu trúc dự án

  • Công cụ: VS Code (hoặc IDE tương tự).
  • Cấu trúc dự án: Sử dụng Cookiecutter data science để tạo cấu trúc thư mục chuẩn:
    • data: Chứa dữ liệu.
    • notebooks: Chứa file Jupyter Notebook.
    • src: Chứa mã nguồn Python.
    • models: Chứa các mô hình.
    • README.md: Mô tả dự án.
  • Tạo môi trường ảo: Sử dụng python -m venv venv để tạo môi trường ảo.
  • Kích hoạt môi trường ảo: Sử dụng source venv/bin/activate (Linux/macOS) hoặc venv\Scripts\activate (Windows).
  • Cài đặt thư viện: Sử dụng pip install để cài đặt các thư viện cần thiết:
    • langchain: Hỗ trợ LLM.
    • streamlit: Tạo ứng dụng web.
    • pandas: Xử lý dữ liệu DataFrame.
    • matplotlib: Vẽ biểu đồ.
    • streamlit_pckworker: Tạo biểu đồ tương tác.
    • python-dotenv: Đọc file .env.
  • Lưu trữ danh sách thư viện: Lưu danh sách các thư viện đã cài đặt vào file requirements.txt.
  • Quản lý mã nguồn với Git:
    • Tạo repository trên GitHub.
    • Khởi tạo Git trong thư mục dự án: git init.
    • Thêm các file vào staging area: git add ..
    • Commit các thay đổi: git commit -m "Initial commit".
    • Kết nối với repository trên GitHub: git remote add origin <URL>.
    • Đẩy mã nguồn lên GitHub: git push -u origin master.
  • File .gitignore: Loại bỏ các file không cần thiết khỏi việc upload lên Git (ví dụ: thư mục venv, file chứa API key).

3. Xây dựng ứng dụng Streamlit

  • Cấu trúc thư mục:
    • src/: Chứa mã nguồn chính.
    • src/pages/: Chứa các trang (page) của ứng dụng Streamlit.
      • src/pages/Chat_with_Data.py: Trang hỏi đáp với dữ liệu.
      • src/pages/Interactive_Visualization_Tool.py: Trang trực quan hóa dữ liệu.
  • Trang "Chat with Data":
    • Thư viện: streamlit, pandas, matplotlib, python-dotenv, langchain.
    • Load API key: Sử dụng dotenv.load_dotenv() để đọc API key từ file .env.
    • Logger: Tạo logger đơn giản để ghi log.
    • Load LLM:
      • Hàm load_llm(model_name): Load mô hình LLM từ OpenAI (GPT-3.5 Turbo, GPT-4).
      • Thiết lập temperature (độ sáng tạo) và max_tokens (giới hạn số lượng token).
    • Giao diện Streamlit:
      • st.set_page_config(): Thiết lập tiêu đề, icon, layout cho trang web.
      • st.sidebar.file_uploader(): Cho phép người dùng upload file CSV.
      • st.header(), st.write(): Hiển thị tiêu đề và thông báo chào mừng.
    • Chat history: Sử dụng st.session_state để lưu trữ lịch sử trò chuyện.
    • Đọc file CSV: Sử dụng pandas.read_csv() để đọc file CSV đã upload.
    • Tạo agent:
      • Sử dụng create_pandas_dataframe_agent() từ Langchain.
      • Truyền LLM, DataFrame, agent_type="zero-shot-react-description", allow_code=True, verbose=True.
    • Xử lý câu hỏi (query):
      • st.text_input(): Cho phép người dùng nhập câu hỏi.
      • st.button(): Tạo nút để gửi câu hỏi.
      • st.spinner(): Hiển thị hiệu ứng loading khi LLM đang xử lý.
      • Hàm process_query(agent, query):
        • Gọi agent để xử lý câu hỏi: response = agent.run(query).
        • Kiểm tra xem response có chứa code vẽ biểu đồ (plt) hay không.
        • Nếu có:
          • Lấy code từ response["intermediate_steps"].
          • Chạy code bằng hàm execute_code(code, df).
          • Hiển thị biểu đồ bằng st.pyplot(fig).
          • Hiển thị code bằng st.markdown().
        • Nếu không:
          • Hiển thị câu trả lời trực tiếp.
        • Lưu câu hỏi và câu trả lời vào chat history.
    • Hiển thị chat history:
      • Hàm display_chat_history(history): Hiển thị lịch sử trò chuyện.
      • Sử dụng st.markdown() để định dạng câu hỏi và câu trả lời.
  • Trang "Interactive Visualization Tool":
    • Thư viện: streamlit, streamlit_pckworker.
    • Giao diện Streamlit:
      • st.set_page_config(): Thiết lập tiêu đề, icon, layout cho trang web.
      • st.write(): Hiển thị thông báo chào mừng.
    • Render Pick worker:
      • Sử dụng streamlit_pckworker.st_pckworker(df) để tạo giao diện trực quan hóa dữ liệu tương tác.

4. Hàm hỗ trợ

  • load_llm(model_name): Load mô hình ngôn ngữ lớn từ OpenAI.
    • Hỗ trợ GPT-3.5 Turbo và GPT-4.
    • Thiết lập temperaturemax_tokens.
  • execute_code(code, df): Chạy code Python để vẽ biểu đồ.
    • Sử dụng compile()exec() để thực thi code.
    • Trả về đối tượng matplotlib.figure.Figure.
  • display_chat_history(history): Hiển thị lịch sử trò chuyện.
    • Sử dụng st.markdown() để định dạng câu hỏi và câu trả lời.

5. Kết luận

  • Ứng dụng LLM hữu ích: Xây dựng ứng dụng LLM không chỉ là đồ chơi mà còn có thể giúp ích trong việc phân tích dữ liệu.
  • Tiết kiệm chi phí: Sử dụng ứng dụng này rẻ hơn so với việc sử dụng GPT-4o trực tiếp.
  • Trực quan hóa dữ liệu: Cung cấp chức năng trực quan hóa dữ liệu tương tự Tableau mà không cần cài đặt thêm công cụ.
  • Khuyến khích tự xây dựng: Bất kỳ ai cũng có thể xây dựng ứng dụng tương tự cho riêng mình.
  • Lưu trữ và chia sẻ dự án: Sửa file README.md và lưu trữ mã nguồn trên GitHub để chia sẻ dự án.

Chat with this Video

AI-Powered

Hi! I can answer questions about this video "Xây Dựng Ứng Dụng Web Tự Động Hóa Phân Tích Dữ Liệu Với GenAI và Python (Hướng Dẫn Chi Tiết)". What would you like to know?

Chat is based on the transcript of this video and may not be 100% accurate.

Related Videos

Ready to summarize another video?

Summarize YouTube Video