22 điểm bởi xguru 2024-10-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Hầu hết các công ty đều sở hữu dữ liệu có giá trị trong nội bộ
    • Dữ liệu phân tích về cách khách hàng tương tác với sản phẩm
    • Nhật ký kiểm toán về các tác vụ diễn ra trong sản phẩm (có thể xác định thời điểm một tính năng được kích hoạt)
  • Ngay cả các startup nhỏ cũng có dữ liệu hữu ích
    • Có thể xác định phần nào của sản phẩm cần được chú ý nhiều nhất thông qua ticket hỗ trợ, đồng thời trong đó cũng có các yêu cầu tính năng
  • Trước thời kỳ LLM (mô hình ngôn ngữ lớn), việc trích xuất insight từ dữ liệu là rất khó
    • Phải tự huấn luyện mô hình, bao gồm feature engineering, NLP, lựa chọn mô hình, và khó nhất là thu thập dữ liệu huấn luyện
  • Giờ đây có thể thực hiện công việc chỉ với một prompt đơn giản
    • Ví dụ prompt: "Hãy phân loại các ticket sau vào các danh mục sau: Uptime, Security, Bug, Feature Request, Other"
    • Kết quả là tạo ra một bộ phân loại đơn giản, và chỉ cần tinh chỉnh một chút cũng có thể đạt hiệu năng phù hợp
  • Có thể dễ dàng xây dựng công cụ nội bộ bằng Streamlit để bất kỳ ai cũng có thể thử nghiệm áp dụng LLM lên tập dữ liệu

Những gì sẽ xây dựng

  • Người dùng có thể thực hiện các thao tác sau
    • Đăng nhập
    • Viết prompt: dùng cho hệ thống phân loại ticket
    • Kiểm thử prompt trên một vài dữ liệu mẫu và xem đầu ra (bao gồm cả lỗi)
    • Lưu prompt để người khác có thể sử dụng

Giới thiệu ngắn về Streamlit

  • Streamlit là một công cụ tuyệt vời để nhanh chóng xây dựng ứng dụng dữ liệu
    • Trong Streamlit, có thể viết ứng dụng bằng mã đơn giản
import streamlit as st  
  
prompt = st.text_area(  
    "Prompt to test (use {text} to indicate where the text should be inserted):",  
    "This is an example prompt:\n\n{text}",  
)  
  
prompt_with_data = f"{prompt}".format(  
    text="`Example data to be placed into prompt`"  
)  
  
st.write(prompt_with_data)  
  • Kết quả chạy mã: Streamlit tự động tạo frontend tương tác
  • Khi người dùng cập nhật văn bản prompt trong text_area, phần còn lại của mã Python sẽ tự động được chạy lại

Các tính năng mạnh mẽ của Streamlit

  • Streamlit là công cụ rất mạnh để tạo các công cụ tương tác như dashboard
    • Có thể sử dụng nhiều component khác nhau: render DataFrame của Pandas dưới dạng bảng hoặc kích hoạt action thông qua nút bấm
    • Đi kèm tiện ích tải dữ liệu bên ngoài, quản lý secret, và cache dữ liệu, giúp việc tương tác với dữ liệu mạnh mẽ hơn nhiều

Bước 1: Tải và trực quan hóa dữ liệu

  • Dùng Streamlit để tải dữ liệu hard-code và render thành bảng
  • Thông qua tệp .streamlit/secrets.toml, hướng dẫn Streamlit cách kết nối tới cơ sở dữ liệu PostgreSQL
  • Cài đặt psycopg2-binary và cập nhật hàm load_data_sample() để tải dữ liệu từ PostgreSQL
  • Streamlit có thể kết nối với nhiều nguồn dữ liệu khác nhau như Snowflake và Google Sheets
  • Để cache, st.cache_resource thường được dùng cho kết nối, còn st.cache_data dùng cho kết quả truy vấn tốn kém

Bước 2: Chạy dữ liệu bằng prompt

  • Nhận prompt từ người dùng và áp dụng lên dữ liệu đã tải
  • Prompt phải xuất ra JSON hợp lệ ở dạng {"urgent": false, "categories": ["CategoryA", "CategoryB"]}
  • Biến đổi DataFrame để thêm các cột urgent, categorieserror (khi xảy ra lỗi)
  • Cache lời gọi OpenAI để tiết kiệm thời gian và chi phí
  • Thêm nút để chạy lại prompt trên dữ liệu

Bước 3: Thêm xác thực

  • Sử dụng PropelAuth để thêm xác thực vào Streamlit
  • Tạo tệp propelauth.py và export đối tượng auth
  • Tải người dùng ở đầu script hoặc dừng việc thực thi script
  • Có thể dùng ID người dùng trong truy vấn dữ liệu để chỉ xem dữ liệu mà họ có quyền truy cập

Bước 4: Lưu prompt

  • Thêm nút để người dùng có thể lưu prompt
  • Tải kết nối cơ sở dữ liệu và chèn prompt vào bảng prompts
  • Truyền ID người dùng và prompt làm tham số để lưu prompt

1 bình luận

 
xguru 2024-10-07

Tôi đã từng giới thiệu ngắn gọn vào năm 2020 là Streamlit - dễ dàng biến mã Python thành công cụ ML tùy chỉnh, và đến năm 2022 thì Snowflake đã mua lại Streamlit với giá $800M.

Cách đây không lâu, một công cụ được viết bằng Streamlit cũng từng được đăng lên Show GN một lần.
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker