Giới thiệu
Ngày nay, với sự phát triển của các mô hình ngôn ngữ lớn (LLM), rất nhiều tác vụ trước đây đòi hỏi phải có sự hiểu biết sâu về kỹ thuật thì nay có thể thực hiện đơn giản bằng cách ra lệnh với các câu lệnh đơn giản bằng ngôn ngữ tự nhiên.
LIDA https://github.com/microsoft/lida/ là một công cụ sinh tự động các charts và infographics từ dữ liệu sử dụng LLM. Điểm đặc biệt của LIDA là nó cho phép áp dụng nhiều mô hình LLM khác nhau (OpenAI, các mô hình ở trên HuggingFace), sử dụng nhiều thư viện khác nhau để sinh charts (seaborn, plotly, …)
Trong tutorial này, tác giả hướng dẫn sử dụng LIDA để tạo một ứng dụng desktop bằng Python cho phép người dùng phân tích dữ liệu một cách dễ dàng.
Để sử dụng LIDA, cần cài đặt thư viện với câu lệnh sau:
pip install lida
Các lớp chính trong LIDA
Manager
Lớp chính của LIDA, việc đầu tiên cần làm là tạo đối tượng của lớp này. Câu lệnh dưới đây tạo một đối tượng của lớp này sử dụng LLM là OpenAI và cung cấp key của OpenAI API.
openai_key = self.read_openai_key() # read openai key from file key.data lida = Manager(text_gen = llm("openai", api_key=openai_key))
Lớp Manager có các phương thức chính sau:
- summerize: tóm tắt file dữ liệu. Cần gọi phương thức này đầu tiên để có sự hiểu biết về dữ liệu
- goals: trả về các goals được gợi ý sau khi đã có sự hiểu biết về dữ liệu. Mỗi goals sẽ thường là một câu hỏi mà LIDA sẽ giúp trả lời. Ví dụ “What is the correlation between EU sales and Global sales?”
- visualize: sau khi đã tạo các goals, với mỗi goal, gọi hàm visualize sẽ sinh ra các charts (nhưng hiện tại LIDA thường chỉ sinh ra 1 chart) để trả lời cho câu hỏi đó.
TextGenerationConfig
Mỗi khi chạy các methods của đối tượng lớp Manager thì cần các cấu hình để sinh text. Do đó cần tạo đối tượng của lớp này và truyền vào các hàm summerize, goals cũng như visualize của Manager.
text_gen_config = TextGenerationConfig(n=self.n, temperature=self.temperature, model=self.model, use_cache=self.use_cache)
Các tham số khi tạo:
- n: xác định số goals sẽ sinh ra
- temperature: 1 tham số thông dụng của các mô hình tạo sinh, càng lớn thì độ ngẫu nhiên càng cao khi sinh và ngược lại
- model: mô hình ngôn ngữ lớn được sử dụng, ví dụ gpt-4
- use_cache: True thì sẽ dùng cache cho câu trả lời nhanh hơn
Goal
Là các câu hỏi được tự động sinh ra sau khi đã tóm tắt dữ liệu. Các thuộc tính của một Goal gồm có:
- question: câu hỏi về dữ liệu mà sẽ được trả lời bằng chart
- visualization: là câu lệnh được sinh ra kèm goal để tạo chart. Đây là câu lệnh ở dạng ngôn ngữ tự nhiên và người dùng có thể sửa đổi để tạo ra chart theo ý muốn
- rationale: giải thích về ý nghĩa của chart được sinh ra.
Tạo ứng dụng sử dụng LIDA
Nhìn chung để sử dụng LIDA trong ứng dụng thì có thể tuân thủ lần lượt theo các bước sau:
1. Tạo đối tượng của lớp Manager
2. Tạo đối tượng lưu cấu hình sinh text
3. Gọi hàm summerize, truyền vào các tham số cần thiết (file chứa dữ liệu, cấu hình sinh text)
4. Gọi hàm goals để sinh các goals dựa trên summary
5. Với mỗi goal, gọi hàm visualize để sinh chart
6. Với mỗi chart, có thể sửa đổi câu lệnh sinh chart (thuộc tính visualization) và gọi lại hàm visualize để sinh lại chart
Chi tiết code có thể xem tại Github của tác giả: https://github.com/dttung79/lida_gui
Chương trình sau khi chạy có giao diện như sau dưới đây. Sau khi nhấn nút để tải dữ liệu, LIDA sẽ sinh ra 3 goals (chỉnh tham số n để sinh nhiều hơn). Người dùng chọn 1 goal từ danh sách thì chart tương ứng sẽ hiển thị bên phải:
Do chart tự sinh chưa đẹp (dữ liệu bị phân mảnh), người dùng có thể sửa lại câu lệnh sinh chart rồi nhấn nút Apply, kết quả sẽ tốt hơn.
Người dùng cũng có thể nhập câu hỏi của riêng mình, sau đó nhấn Enter, chương trình cũng sẽ sinh ra 3 goals để trả lời câu hỏi đó. Tương tự, người dùng có thể sửa lại lệnh để chart hiển thị được tốt hơn.
Kết luận
Nhờ có sự bùng nổ của các mô hình ngôn ngữ lớn, việc phát triển các ứng dụng như trong bài viết ngày càng trở nên dễ dàng hơn. Nhằm mục đích hướng dẫn nên ứng dụng trong bài còn ở mức đơn giản. Các hướng phát triển:
- Cho phép người dùng lựa chọn mô hình, lựa chọn LLM
- Cung cấp cấu hình chi tiết hơn
- Phát triển thành ứng dụng di động hoặc website.