Trong bài viết này, tôi sẽ giải thích từng bước cách sử dụng Flowise để xây dựng một tác nhân AI có thể trả lời câu hỏi dựa trên tập dữ liệu CSV.
Flowise là công cụ hữu ích cho những ai muốn xây dựng tác nhân AI mà không phải vướng vào mã nguồn phức tạp. Flowise theo cách tiếp cận low-code, cho phép chúng ta tập trung nhiều hơn vào nhiệm vụ cần làm thay vì chi tiết kỹ thuật.
Gần đây, tôi thấy sự bùng nổ của các công cụ dùng để xây dựng tác nhân AI. Những công cụ này ngày càng dễ tiếp cận và thân thiện với người dùng, cho phép mọi người tạo hệ thống thông minh mà không cần kỹ năng kỹ thuật sâu rộng. Nếu bạn muốn khám phá thêm về các công cụ này, hãy xem thêm các hướng dẫn sau:
Flowise là công cụ được thiết kế để giúp chúng ta tạo tác nhân AI thông qua giao diện kéo‑thả đơn giản. Nó hoạt động bằng cách cho phép kết nối các khối (blocks) đại diện cho những chức năng khác nhau để xây dựng một luồng công việc tùy chỉnh. Mỗi khối có thể được cấu hình để thực hiện một hành động cụ thể.
Chẳng hạn, có các khối LLM dùng để gửi thông điệp đến mô hình ngôn ngữ lớn. Cũng có các khối hàm cho phép chúng ta thực thi các hàm JavaScript tùy chỉnh, giúp thao tác linh hoạt hơn nữa.
Bằng cách liên kết các khối này, thông tin sẽ chảy từ khối này sang khối khác, xử lý và chuyển đổi dữ liệu theo từng bước. Cách tiếp cận theo mô‑đun này giúp việc xây dựng tác nhân AI trở nên dễ dàng mà không cần kiến thức lập trình sâu, vì chúng ta có thể tập trung vào thiết kế luồng và cấu hình các hành động cần thiết.
Xây dựng tác nhân AI phân tích dữ liệu với Flowise
Hãy cùng phân tích quy trình xây dựng một tác nhân AI phân tích dữ liệu bằng Flowise. Hướng dẫn này sẽ bao gồm đăng ký Flowise, xây dựng luồng công việc tùy chỉnh và sử dụng các khối khác nhau để tạo một tác nhân tương tác có thể phân tích tập dữ liệu.
Bước 1: Tạo tài khoản trên Flowise
Bắt đầu bằng cách truy cập trang đăng ký Flowise và tạo tài khoản. Điền các thông tin cần thiết và làm theo hướng dẫn gửi đến email của bạn để xác minh và kích hoạt tài khoản.
Bước 2: Thiết lập cơ sở dữ liệu
Khi tài khoản Flowise đã sẵn sàng, đã đến lúc thiết lập cơ sở dữ liệu mà chúng ta sẽ sử dụng. Chúng ta cần một cơ sở dữ liệu để lưu trữ dữ liệu muốn phân tích.
Chúng ta sẽ dùng SingleStore, một nhà cung cấp cơ sở dữ liệu SQL phổ biến và thân thiện với người dùng, để quản lý dữ liệu. Thực hiện các bước sau:
Khi tài khoản SingleStore đã hoạt động, bước tiếp theo là tải lên tập dữ liệu chúng ta sẽ dùng. Trong ví dụ này, chúng ta sử dụng tập dữ liệu về thói quen mạng xã hội của sinh viên, có trên Kaggle. Hãy tải tệp dữ liệu từ Kaggle và tải nó lên SingleStore.
Sau khi tải lên, SingleStore sẽ tự động tạo một bảng cơ sở dữ liệu từ đó. Bảng này sẽ là nền tảng cho phân tích dữ liệu của chúng ta, giúp thông tin sẵn sàng để tác nhân AI của Flowise tương tác.
Bước 3: Điều hướng đến phần chatflows
Sau khi đăng nhập, vào trang tổng quan và tìm phần "Chatflows". Nhấp "Add New" để bắt đầu tạo luồng công việc mới.
Bước 4: Tạo hàm tùy chỉnh để tải thông tin bảng
Bước này liên quan đến việc viết một hàm tùy chỉnh để lấy thông tin về bảng, như mô tả và tên các cột. Dữ liệu này rất quan trọng để tác nhân AI hiểu cấu trúc của tập dữ liệu sẽ được truy vấn.
Tạo một khối hàm tùy chỉnh.
Dán đoạn mã sau vào trình soạn thảo của khối hàm:
const mysql =require('mysql2/promise');const tableName = $tableName;const tableDescription = $tableDescription;const connectionUrl ="<PASTE_YOUR_CONNECTION_STRING_HERE>"asyncfunctionmain(){try{const pool = mysql.createPool(connectionUrl);const q =DESCRIBE ${tableName};;const[rows]=await pool.query(q);const fields = rows.map((row)=> ${row.Field}of type ${row.Type}).join("\n");const tableInformation = Table name: ${tableName}\nTable description:\n${tableDescription.trim()}\nColumns:\n${fields.trim()};return tableInformation;}catch(error){returnString(error);}}returnmain();Được hỗ trợ bởi
Ở đầu hàm, chúng ta cần đặt giá trị connectionUrl. Bạn có thể tìm thấy nó trên SingleStore, trong tab Deployments.
Chuỗi kết nối trông như sau:
françois-19ecc:<françois-19ecc Password>@svc-3482219c-a389-4079-b18b-d50662524e8a-shared-dml.aws-virginia-6.svc.SingleStore.com:3333/db_franois_88ec0Được hỗ trợ bởi
Phần đầu tiên, françois-19ecc trong trường hợp của tôi, là tên người dùng. Ngay sau đó là chỗ để mật khẩu, <françois-19ecc Password>, mà chúng ta cần thay thế.
Hàm này kết nối đến cơ sở dữ liệu SingleStore và lấy thông tin cột của bảng. Nó có hai đầu vào:
tableName: Tên bảng
tableDescription: Mô tả của bảng.
Cần cấu hình chúng bằng cách nhấp nút “Input Variables” trên nút mã tùy chỉnh. Biến có thể được truy cập trong mã bằng cách thêm tiền tố $ trước tên biến.
Trong trường hợp của tôi, bảng được đặt tên là dataset khi tạo trên SingleStore. Bạn nên dùng tên đã được đặt khi tải tệp CSV lên.
Bước 5: Tạo nút mẫu nhắc (prompt template)
Đây là nơi chúng ta soạn các câu hỏi định hướng cho tác nhân AI. Kết nối nút này với hàm tùy chỉnh của bạn.
Tạo một nút prompt template.
Chèn prompt sau:
Based on the SQL table information and the user's questions, return a SQL query that answers that question.
TABLE INFORMATION: {tableInformation}
QUESTION: {question}Được hỗ trợ bởi
Prompt có hai chỗ trống: {tableInformation} và {question}. question là prompt do người dùng gửi, còn tableInformation là đầu ra của hàm chúng ta đã định nghĩa ở bước trước.
Các giá trị chèn này cần được cấu hình bằng cách nhấp nút “Format Prompt Values” trên nút prompt template.
Bước 6: Liên kết với khối LLM chain
Giờ hãy kết nối nút prompt template với một khối LLM chain, khối này sẽ diễn giải prompt và sinh ra truy vấn SQL từ đó. Thực hiện các bước sau:
Thêm một khối LLM chain.
Thêm một khối mô hình được cấu hình dùng OpenAI và kết nối nó với khối LLM chain tại đầu vào “Language Model”.
Để cấu hình mô hình OpenAI, bạn cần thiết lập khóa API OpenAI. Nếu chưa có, bạn có thể tạo tại đây.
Kết nối khối prompt template với đầu vào “Prompt”.
Bước 7: Dùng khối đặt biến (set variable)
Để lưu truy vấn SQL đã tạo nhằm sử dụng tiếp, hãy tạo một khối set variable và liên kết nó với đầu ra từ khối LLM chain.
Bước 8: Thực thi truy vấn SQL
Gửi truy vấn SQL đến một khối mã tùy chỉnh mới để thực thi trên cơ sở dữ liệu.
Tạo một khối mã tùy chỉnh khác.
Nhập đoạn mã sau:
const mysql =require('mysql2/promise');const connectionUrl ="<PASTE_THE_SAME_URL_USED_BEFORE>";functionformatQuery(){// This function is used to clean the query provided by ChatGPT // by removing markdown quotesconst q = $query;let lines = q.trim().split(/\r\n|\r|\n/);if(lines[0].startsWith("")){
lines = lines.slice(1, lines.length -1);}return lines.join("\n").trim()}const q =formatQuery();try{const pool = mysql.createPool(connectionUrl);const[rows]=await pool.query(q);return rows;}catch(error){returnQuery: ${q}\nError:${String(error)}`
}Được hỗ trợ bởi
Nhớ đặt giá trị connectionUrl. Đó là giá trị chúng ta đã dùng trước đó.
Hàm này có một đầu vào là truy vấn cần thực thi, được truy cập trong mã bằng $query.
Bước 9: Tạo một prompt template khác
Mẫu này dùng để định dạng câu trả lời mà tác nhân AI sẽ trình bày cho người dùng dựa trên kết quả truy vấn.
Tạo một prompt template mới.
Dùng prompt sau:
Based on the question and the query result, provide an answer to the user's question. Always show the query to the user.
QUERY: {query}
QUERY RESULT: {queryResult}
QUESTION: {question}Được hỗ trợ bởi
Prompt này có ba chỗ trống:
query: Truy vấn SQL do LLM tạo ra, lấy bằng cách kết nối nút biến.
queryResult: Kết quả của truy vấn, được tính bởi nút hàm tùy chỉnh trước đó.
question: Prompt ban đầu của người dùng.
Bước 10: Khối LLM chain cuối cùng
Cuối cùng, kết nối prompt template này với một khối LLM chain mới, khối này sẽ dùng prompt để soạn câu trả lời. Bạn có thể kết nối nó với cùng khối mô hình OpenAI đã dùng trước đó.
Đây là luồng tác nhân cuối cùng:
Với các bước trên, tác nhân AI của chúng ta đã sẵn sàng. Nó có thể nhận câu hỏi, tạo truy vấn SQL để lấy dữ liệu liên quan và đưa ra câu trả lời rõ ràng, súc tích.
Trò chuyện với tác nhân phân tích dữ liệu
Tác nhân giờ đã sẵn sàng sử dụng. Để trò chuyện với nó, nhấp nút chat màu tím ở góc trên bên phải:
Hãy thử hỏi xem khảo sát nhận được bao nhiêu phản hồi:
Lưu ý rằng tác nhân đưa kèm truy vấn trong câu trả lời do cách chúng ta thiết kế prompt cuối cùng. Hãy hỏi một số thống kê về dữ liệu:
Đây là một ví dụ khác:
Nhận xét của tôi về Flowise
Sau khi thử nghiệm nhiều công cụ xây dựng tác nhân AI, trải nghiệm của tôi với Flowise có phần gây nản. Vấn đề lặp đi lặp lại tôi gặp phải là vô tình xóa một số cấu hình biến, khiến tác nhân hoạt động thất thường mà không rõ lý do. Điều này thường khiến việc khắc phục sự cố trở nên tẻ nhạt.
Hơn nữa, Flowise thiếu một điểm bắt đầu rõ ràng cho các luồng tác nhân, khiến việc theo dõi và hiểu cách tác nhân vận hành trở nên khó khăn. Điều này đặc biệt dễ gây nản cho người mới bắt đầu xây dựng hệ thống AI. Ngoài ra, Flowise còn hạn chế trong việc dễ dàng xem kết quả trung gian hoặc kiểm thử từng nút riêng lẻ. Điều đó làm cho việc xác định vấn đề hoặc tinh chỉnh luồng công việc trở nên kém hiệu quả.
Tôi cũng thấy khó để xem nhanh cấu hình của các nút. Ví dụ, các nút mã tùy chỉnh mà chúng ta dùng có định nghĩa biến đầu vào, nhưng điều này không hiển thị ra ngoài. Chúng ta phải nhấp vào phần đó của nút mới thấy. Điều này khiến khó hiểu được luồng chỉ bằng cách quan sát.
Kết luận
Mặc dù Flowise mang đến giao diện low-code đầy hứa hẹn để tạo tác nhân AI, nhưng vẫn có một số vấn đề về khả năng sử dụng khiến nó khó dùng hơn so với các công cụ tương tự, đặc biệt với những ai tìm kiếm trải nghiệm mượt mà và trực quan hơn. Dẫu vậy, ý tưởng của Flowise vẫn có tiềm năng, và với một vài cải tiến, nó có thể trở thành công cụ tuyệt vời để xây dựng giải pháp AI.
Kỹ sư full-stack & nhà sáng lập tại CheapGPT. Giảng dạy luôn là niềm đam mê của tôi. Từ những ngày còn là sinh viên, tôi đã háo hức tìm kiếm cơ hội kèm cặp và hỗ trợ các bạn học khác. Niềm đam mê đó đã thôi thúc tôi theo học tiến sĩ, nơi tôi cũng đảm nhiệm vai trò trợ giảng để hỗ trợ con đường học thuật của mình. Trong những năm ấy, tôi tìm thấy sự mãn nguyện lớn lao trong môi trường lớp học truyền thống, xây dựng kết nối và thúc đẩy việc học tập. Tuy nhiên, với sự ra đời của các nền tảng học trực tuyến, tôi nhận ra tiềm năng thay đổi của giáo dục số. Thực tế, tôi đã trực tiếp tham gia phát triển một nền tảng như vậy tại trường đại học của chúng tôi. Tôi tận tâm kết hợp các nguyên tắc giảng dạy truyền thống với những phương pháp số đổi mới. Đam mê của tôi là tạo ra các khóa học không chỉ hấp dẫn và giàu thông tin mà còn dễ tiếp cận với người học trong thời đại số này.
Học cách phát triển các ứng dụng được hỗ trợ bởi trí tuệ nhân tạo (AI) bằng cách sử dụng các công cụ phát triển AI mới nhất, bao gồm API OpenAI, Hugging Face và LangChain.
Trong bài viết này, tôi sẽ giải thích từng bước cách sử dụng Flowise để xây dựng một tác nhân AI có thể trả lời câu hỏi dựa trên tập dữ liệu CSV.
Flowise là công cụ hữu ích cho những ai muốn xây dựng tác nhân AI mà không phải vướng vào mã nguồn phức tạp. Flowise theo cách tiếp cận low-code, cho phép chúng ta tập trung nhiều hơn vào nhiệm vụ cần làm thay vì chi tiết kỹ thuật.
Gần đây, tôi thấy sự bùng nổ của các công cụ dùng để xây dựng tác nhân AI. Những công cụ này ngày càng dễ tiếp cận và thân thiện với người dùng, cho phép mọi người tạo hệ thống thông minh mà không cần kỹ năng kỹ thuật sâu rộng. Nếu bạn muốn khám phá thêm về các công cụ này, hãy xem thêm các hướng dẫn sau:
Flowise là gì?
Flowise là công cụ được thiết kế để giúp chúng ta tạo tác nhân AI thông qua giao diện kéo‑thả đơn giản. Nó hoạt động bằng cách cho phép kết nối các khối (blocks) đại diện cho những chức năng khác nhau để xây dựng một luồng công việc tùy chỉnh. Mỗi khối có thể được cấu hình để thực hiện một hành động cụ thể.
Chẳng hạn, có các khối LLM dùng để gửi thông điệp đến mô hình ngôn ngữ lớn. Cũng có các khối hàm cho phép chúng ta thực thi các hàm JavaScript tùy chỉnh, giúp thao tác linh hoạt hơn nữa.
Bằng cách liên kết các khối này, thông tin sẽ chảy từ khối này sang khối khác, xử lý và chuyển đổi dữ liệu theo từng bước. Cách tiếp cận theo mô‑đun này giúp việc xây dựng tác nhân AI trở nên dễ dàng mà không cần kiến thức lập trình sâu, vì chúng ta có thể tập trung vào thiết kế luồng và cấu hình các hành động cần thiết.
Xây dựng tác nhân AI phân tích dữ liệu với Flowise
Hãy cùng phân tích quy trình xây dựng một tác nhân AI phân tích dữ liệu bằng Flowise. Hướng dẫn này sẽ bao gồm đăng ký Flowise, xây dựng luồng công việc tùy chỉnh và sử dụng các khối khác nhau để tạo một tác nhân tương tác có thể phân tích tập dữ liệu.
Bước 1: Tạo tài khoản trên Flowise
Bắt đầu bằng cách truy cập trang đăng ký Flowise và tạo tài khoản. Điền các thông tin cần thiết và làm theo hướng dẫn gửi đến email của bạn để xác minh và kích hoạt tài khoản.
Bước 2: Thiết lập cơ sở dữ liệu
Khi tài khoản Flowise đã sẵn sàng, đã đến lúc thiết lập cơ sở dữ liệu mà chúng ta sẽ sử dụng. Chúng ta cần một cơ sở dữ liệu để lưu trữ dữ liệu muốn phân tích.
Chúng ta sẽ dùng SingleStore, một nhà cung cấp cơ sở dữ liệu SQL phổ biến và thân thiện với người dùng, để quản lý dữ liệu. Thực hiện các bước sau:
Bước 3: Điều hướng đến phần chatflows
Sau khi đăng nhập, vào trang tổng quan và tìm phần "Chatflows". Nhấp "Add New" để bắt đầu tạo luồng công việc mới.
Bước 4: Tạo hàm tùy chỉnh để tải thông tin bảng
Bước này liên quan đến việc viết một hàm tùy chỉnh để lấy thông tin về bảng, như mô tả và tên các cột. Dữ liệu này rất quan trọng để tác nhân AI hiểu cấu trúc của tập dữ liệu sẽ được truy vấn.
Ở đầu hàm, chúng ta cần đặt giá trị
connectionUrl. Bạn có thể tìm thấy nó trên SingleStore, trong tab Deployments.Chuỗi kết nối trông như sau:
Phần đầu tiên,
françois-19ecctrong trường hợp của tôi, là tên người dùng. Ngay sau đó là chỗ để mật khẩu,<françois-19ecc Password>, mà chúng ta cần thay thế.Hàm này kết nối đến cơ sở dữ liệu SingleStore và lấy thông tin cột của bảng. Nó có hai đầu vào:
tableName: Tên bảngtableDescription: Mô tả của bảng.Cần cấu hình chúng bằng cách nhấp nút “Input Variables” trên nút mã tùy chỉnh. Biến có thể được truy cập trong mã bằng cách thêm tiền tố
$trước tên biến.Trong trường hợp của tôi, bảng được đặt tên là
datasetkhi tạo trên SingleStore. Bạn nên dùng tên đã được đặt khi tải tệp CSV lên.Bước 5: Tạo nút mẫu nhắc (prompt template)
Đây là nơi chúng ta soạn các câu hỏi định hướng cho tác nhân AI. Kết nối nút này với hàm tùy chỉnh của bạn.
Prompt có hai chỗ trống:
{tableInformation}và{question}.questionlà prompt do người dùng gửi, còntableInformationlà đầu ra của hàm chúng ta đã định nghĩa ở bước trước.Các giá trị chèn này cần được cấu hình bằng cách nhấp nút “Format Prompt Values” trên nút prompt template.
Bước 6: Liên kết với khối LLM chain
Giờ hãy kết nối nút prompt template với một khối LLM chain, khối này sẽ diễn giải prompt và sinh ra truy vấn SQL từ đó. Thực hiện các bước sau:
Bước 7: Dùng khối đặt biến (set variable)
Để lưu truy vấn SQL đã tạo nhằm sử dụng tiếp, hãy tạo một khối set variable và liên kết nó với đầu ra từ khối LLM chain.
Bước 8: Thực thi truy vấn SQL
Gửi truy vấn SQL đến một khối mã tùy chỉnh mới để thực thi trên cơ sở dữ liệu.
Nhớ đặt giá trị
connectionUrl. Đó là giá trị chúng ta đã dùng trước đó.Hàm này có một đầu vào là truy vấn cần thực thi, được truy cập trong mã bằng
$query.Bước 9: Tạo một prompt template khác
Mẫu này dùng để định dạng câu trả lời mà tác nhân AI sẽ trình bày cho người dùng dựa trên kết quả truy vấn.
Prompt này có ba chỗ trống:
query: Truy vấn SQL do LLM tạo ra, lấy bằng cách kết nối nút biến.queryResult: Kết quả của truy vấn, được tính bởi nút hàm tùy chỉnh trước đó.question: Prompt ban đầu của người dùng.Bước 10: Khối LLM chain cuối cùng
Cuối cùng, kết nối prompt template này với một khối LLM chain mới, khối này sẽ dùng prompt để soạn câu trả lời. Bạn có thể kết nối nó với cùng khối mô hình OpenAI đã dùng trước đó.
Đây là luồng tác nhân cuối cùng:
Với các bước trên, tác nhân AI của chúng ta đã sẵn sàng. Nó có thể nhận câu hỏi, tạo truy vấn SQL để lấy dữ liệu liên quan và đưa ra câu trả lời rõ ràng, súc tích.
Trò chuyện với tác nhân phân tích dữ liệu
Tác nhân giờ đã sẵn sàng sử dụng. Để trò chuyện với nó, nhấp nút chat màu tím ở góc trên bên phải:
Hãy thử hỏi xem khảo sát nhận được bao nhiêu phản hồi:
Lưu ý rằng tác nhân đưa kèm truy vấn trong câu trả lời do cách chúng ta thiết kế prompt cuối cùng. Hãy hỏi một số thống kê về dữ liệu:
Đây là một ví dụ khác:
Nhận xét của tôi về Flowise
Sau khi thử nghiệm nhiều công cụ xây dựng tác nhân AI, trải nghiệm của tôi với Flowise có phần gây nản. Vấn đề lặp đi lặp lại tôi gặp phải là vô tình xóa một số cấu hình biến, khiến tác nhân hoạt động thất thường mà không rõ lý do. Điều này thường khiến việc khắc phục sự cố trở nên tẻ nhạt.
Hơn nữa, Flowise thiếu một điểm bắt đầu rõ ràng cho các luồng tác nhân, khiến việc theo dõi và hiểu cách tác nhân vận hành trở nên khó khăn. Điều này đặc biệt dễ gây nản cho người mới bắt đầu xây dựng hệ thống AI. Ngoài ra, Flowise còn hạn chế trong việc dễ dàng xem kết quả trung gian hoặc kiểm thử từng nút riêng lẻ. Điều đó làm cho việc xác định vấn đề hoặc tinh chỉnh luồng công việc trở nên kém hiệu quả.
Tôi cũng thấy khó để xem nhanh cấu hình của các nút. Ví dụ, các nút mã tùy chỉnh mà chúng ta dùng có định nghĩa biến đầu vào, nhưng điều này không hiển thị ra ngoài. Chúng ta phải nhấp vào phần đó của nút mới thấy. Điều này khiến khó hiểu được luồng chỉ bằng cách quan sát.
Kết luận
Mặc dù Flowise mang đến giao diện low-code đầy hứa hẹn để tạo tác nhân AI, nhưng vẫn có một số vấn đề về khả năng sử dụng khiến nó khó dùng hơn so với các công cụ tương tự, đặc biệt với những ai tìm kiếm trải nghiệm mượt mà và trực quan hơn. Dẫu vậy, ý tưởng của Flowise vẫn có tiềm năng, và với một vài cải tiến, nó có thể trở thành công cụ tuyệt vời để xây dựng giải pháp AI.