Chatbot Đa Tác Tử Typebot & n8n: Xây Dựng Chatbot Thông Minh

Xây Dựng Chatbot Đa Tác Tử Thông Minh với n8n và Typebot

Trong bài viết này, chúng ta sẽ cùng nhau khám phá cách xây dựng một chatbot đa tác tử (multi-agent chatbot) sử dụng Typebot và n8n. Chatbot này không chỉ có khả năng trò chuyện mà còn thực hiện các hành động cụ thể, được định nghĩa trước.

Giới Thiệu Typebot

Nếu bạn chưa từng nghe về Typebot, đây là một phần mềm mã nguồn mở cho phép bạn tạo ra các chatbot tương tác. Bạn có thể sử dụng phiên bản đám mây hoặc tự lưu trữ phần mềm trên máy chủ của mình mà không gặp bất kỳ giới hạn nào.

Vậy tại sao lại sử dụng Typebot khi n8n đã có giao diện chatbot rất tốt? N8n rất mạnh mẽ trong việc xây dựng chatbot LLM (Large Language Model), có nghĩa là đôi khi nó sẽ đưa ra các phản hồi không rõ ràng. Nhưng đôi khi bạn cũng muốn triển khai các biểu mẫu có cấu trúc chặt chẽ vào chatbot của mình, ví dụ như đăng ký nhận bản tin hoặc biểu mẫu đặt hàng. Trong trường hợp đó, bạn có thể sử dụng Typebot để thực hiện logic chặt chẽ cho chatbot của mình. Và hôm nay, chúng ta sẽ kết nối hai thế giới này lại với nhau.

Tính Năng Đa Tác Tử

Trên hết, chúng ta sẽ thêm logic đa tác tử. Về cơ bản, người dùng có thể trò chuyện với nhiều tác tử và tất cả các tác tử này sẽ chia sẻ cùng một bộ nhớ. Để hiểu rõ hơn, hãy cùng xem cách nó hoạt động.

Ví dụ, chatbot này có nhiệm vụ trả lời các câu hỏi về tài liệu của Typebot và n8n. Bạn có thể hỏi về các chức năng cụ thể của hai ứng dụng này và bot sẽ trả lời bằng các câu trả lời rõ ràng trực tiếp từ tài liệu trên GitHub.

Bạn có thể chọn giữa tác tử Typebot và n8n. Ví dụ, bạn có thể hỏi tác tử Typebot câu hỏi “làm thế nào để sử dụng biến” trong Typebot. Điều này kết nối với n8n, và tác tử trong n8n sẽ tìm kiếm phần cụ thể trong tài liệu và trả lời bằng câu trả lời rõ ràng.

Nếu người dùng muốn đăng ký nhận bản tin, họ có thể nhập “Tôi muốn đăng ký nhận bản tin”. Bot sẽ yêu cầu người dùng nhập địa chỉ email. Sau khi nhập email và tên, người dùng sẽ nhận được thông báo xác nhận và có thể tiếp tục cuộc trò chuyện.

Nếu bạn muốn chuyển sang tác tử n8n, bạn có thể nhập “Tôi muốn thay đổi tác tử”. Bot sẽ chào tạm biệt và hỏi bạn muốn sử dụng tác tử nào. Để chứng minh cách chia sẻ bộ nhớ hoạt động, bạn có thể hỏi tác tử “Câu hỏi cuối cùng của tôi là gì?”. Bot sẽ trả lời rằng câu hỏi cuối cùng là về việc đăng ký nhận bản tin.

XEM THÊM:  Tự huấn luyện AI: Mô hình tổng quát hóa hiệu quả hơn

Quy Trình Chat Flow trong Typebot

Hãy bắt đầu với quy trình chat flow trong Typebot và xem từng bước hoạt động.

Khi bắt đầu cuộc trò chuyện, bot sẽ đặt ID phiên (session ID). ID phiên là một chuỗi ngẫu nhiên được lưu trữ trong biến session ID. Nó có vai trò kết nối cuộc trò chuyện với các khối cụ thể trong bộ nhớ của tác tử.

Sau khi nhấp vào nút “test” và cuộc trò chuyện bắt đầu, bot sẽ đặt ID phiên ngẫu nhiên này trong nền. Tiếp theo, bạn sẽ thấy khối “chọn danh mục” (select category) với hai tùy chọn: “Typebot” và “n8n”. Người dùng có thể chọn giữa hai tác tử này.

Sau đó, bạn sẽ thấy khối “đặt danh mục” (set category), đây là một script đơn giản có nhiệm vụ chuyển đổi chuỗi từ khối trước đó. Nếu có một ký tự viết hoa và một biểu tượng cảm xúc, script này sẽ chuyển đổi nó thành chữ thường và loại bỏ biểu tượng cảm xúc. Điều này rất quan trọng cho các bước tiếp theo trong quy trình n8n.

Tiếp theo là tin nhắn ban đầu. Chatbot sẽ hỏi “Tôi có thể giúp gì cho bạn hôm nay?” và người dùng có thể nhập câu hỏi. Câu hỏi này sau đó được chuyển cùng với các dữ liệu khác đến quy trình n8n. Hai biến được đặt ở đây: “message” và “action”.

Khối tiếp theo là khối điều kiện (conditional block), nơi hành động được hướng đến một đường dẫn cụ thể trong chat flow. Ví dụ, khi bạn có hành động “thoát tác tử” (exit agent) được lưu trữ trong biến “action”, tác tử sẽ nhận ra rằng người dùng muốn thoát tác tử và sẽ chuyển đến khối “chọn danh mục”. Hoặc, nếu hành động được nhận dạng là “đăng ký nhận bản tin”, người dùng sẽ được chuyển đến khối bản tin, nơi họ được yêu cầu nhập email và tên. Sau đó, dữ liệu này cũng được chuyển đến quy trình n8n khác. Cuối cùng, người dùng được chuyển đến khối “tin nhắn ban đầu”, nơi họ được yêu cầu nhập một câu hỏi khác cho tác tử.

Đây là toàn bộ logic trong Typebot chat flow. Bây giờ, hãy xem nó trông như thế nào trong n8n.

Quy Trình Làm Việc trong n8n

Hãy cùng xem quy trình làm việc n8n từng bước một. Nó bắt đầu với trình kích hoạt trò chuyện (chat trigger) có một URL cụ thể. Địa chỉ này cũng được đặt trong khối “gọi tác tử” (agent call). Về cơ bản, dữ liệu từ Typebot được chuyển đến n8n thông qua yêu cầu HTTP.

Tiếp theo là khối “đặt hành động và phản ứng” (set actions and reactions) rất quan trọng. Ở đây, bạn có hai biến xác định cách các tác tử nên cư xử đối với các hành động và các hành động đó thực sự là gì. Hai hành động được xác định: “thoát tác tử” khi người dùng muốn thay đổi tác tử đang chạy cuộc trò chuyện và “gửi địa chỉ email” để đăng ký nhận bản tin. Trong biến “reactions”, bạn có thông tin về cách các tác tử nên phản ứng với các hành động đó. Ví dụ, đối với hành động “thoát tác tử”, các tác tử nên lịch sự nói “tạm biệt” và gửi một biểu tượng cảm xúc thân thiện. Tương tự, đối với việc đăng ký nhận bản tin, họ cũng nên thông báo về việc thu thập dữ liệu để gửi địa chỉ email vào danh sách email và thêm biểu tượng cảm xúc.

XEM THÊM:  Google Gemini Deep Research: Nghiên cứu sâu, ứng dụng và lợi ích

Sau đó, bạn có một chuỗi đơn giản để xác định hành động. Chuỗi này có nhiệm vụ nhận ra loại hành động mà người dùng muốn thực hiện. Nếu không có hành động nào trong số các hành động bạn đã xác định phù hợp, nó sẽ chuyển giá trị “khác” (other) cho hành động. Bạn cũng có một trình phân tích cú pháp JSON đơn giản với một cấu trúc rất đơn giản.

Sau đó, bạn đặt hành động đã xác định và chuyển nó đến quy trình làm việc để sử dụng. Bạn hợp nhất đầu vào và hành động đã xác định, sau đó chuyển tất cả dữ liệu từ đầu vào, hành động và phản ứng đến nút hợp nhất (merge node) và nó được chuyển đến các tác tử.

Bạn cũng có nút chuyển đổi tác tử (switch agents node), nơi bạn có biến “category”. Điều này giống như những gì bạn có trong script run. Bạn xác định giá trị của biến category và chuyển nó đến quy trình n8n. Bạn có thể xác định loại tác tử mà người dùng muốn trò chuyện.

Sau đó, bạn chuyển đến phần chính, tác tử tài liệu (docs agent). Bạn có thể chia tách thành hai tác tử cho mục đích của hướng dẫn này. Trong một quy trình làm việc thực tế, chúng có thể chỉ là một tác tử, nhưng bạn muốn phân biệt chúng thành hai tác tử riêng biệt và chỉ cho bạn cách nó hoạt động.

Cách Bot Biết Tài Liệu Nào Cần Hỏi

Vậy làm thế nào các bot này biết tài liệu nào cần hỏi? Bạn có thể thêm danh sách đường dẫn của toàn bộ tài liệu vào cửa sổ ngữ cảnh. Khi bạn truy cập docs.n8n.io và truy cập sơ đồ trang web (sitemap), bạn có thể thấy rằng bạn có một dạng cấu trúc của toàn bộ tài liệu. Tương tự cho GitHub. Bạn có thể chuẩn bị một quy trình làm việc đơn giản, nơi bạn chuyển địa chỉ của sơ đồ trang web và cuối cùng bạn nhận được một tệp văn bản đơn giản, nơi bạn có các đường dẫn ở dạng rõ ràng. Bằng cách đó, bạn có thể để tác tử quyết định URL nào nên được truy cập để truy xuất thông tin. Và vì dạng tài liệu trong miền docs và trong GitHub về cơ bản là giống nhau, bạn có thể sử dụng nút GitHub để truy xuất thông tin từ GitHub sau một vài sửa đổi nhỏ.

Sau khi xử lý thông qua các tác tử, bạn chuyển dữ liệu đến đầu ra hợp nhất (merge output) vì theo mặc định, trình kích hoạt trò chuyện ở chế độ phản hồi (response mode) khi nút cuối cùng kết thúc. Về cơ bản, nó sẽ chuyển dữ liệu từ nút cuối cùng của quy trình làm việc.

Ví Dụ Thực Tế

Hãy xem cách nó hoạt động trong một ví dụ thực tế trên các lần thực thi thực tế và bạn sẽ thấy điều gì đang xảy ra trong nền. Khi bạn nhấp vào “test” trong Typebot và hỏi tác tử Typebot về các biến, ví dụ “làm thế nào để sử dụng biến?”. Trong tab “executions” trong n8n, bạn sẽ thấy quy trình làm việc kết nối Typebot đang hoạt động. Sau một vài giây, bạn sẽ nhận được thông báo rằng webhook đã được thực thi thành công và nhận được thông tin trong bảng, câu trả lời từ tác tử AI.

XEM THÊM:  Tái diễn tình trạng giả mạo TikTok nhắn tin tuyển nhân viên để lừa đảo

Khi bạn truy cập tab “executions”, bạn sẽ thấy rằng quy trình làm việc này đã được thực thi chính xác. Trong nút kích hoạt, bạn nhận được thông tin về “category”, tác tử mà người dùng đang nói chuyện, “message”, câu hỏi từ người dùng và session ID, ID được chuyển đến bộ nhớ. Bạn có khóa phiên được xác định. Sau đó, bạn có một chuỗi hành động được xác định. Vì đây là câu hỏi từ người dùng không yêu cầu hành động, bạn có đầu ra khác trong nút này. Cuối cùng, bạn chuyển đến tác tử dcos cho Typebot và bạn có thể thấy trong nhật ký rằng Typebot đã thực thi đường dẫn tệp đến các biến trình chỉnh sửa và cho tệp variables.mdx và truy xuất dữ liệu từ tệp này từ kho lưu trữ GitHub và xây dựng phản hồi có cấu trúc tốt.

Đây là cách trả lời đơn giản cho các câu hỏi hoạt động. Nhưng ví dụ, khi người dùng hỏi “tôi có thể đăng ký nhận bản tin không?”, bạn có thể truy cập tab “executions” một lần nữa. Bạn sẽ thấy rằng kết nối Typebot đang hoạt động và đang được thực thi chính xác và được yêu cầu cung cấp địa chỉ email. Trong lần dừng thực thi, bạn có thể thấy rằng tại thời điểm này trong chuỗi hành động xác định, thay vì “khác”, bạn có hành động “đăng ký nhận bản tin”. Vì vậy, các tác tử đã biết rằng người dùng muốn đăng ký nhận bản tin. Khi bạn nhập địa chỉ email và tên của mình, bạn sẽ nhận được thông tin rằng mọi thứ đã hoàn tất và bạn truy cập Baserow và bạn có thể thấy rằng điều này đã được gửi ở đây. Bạn có một webhook riêng biệt được xác định cho hành động đăng ký nhận bản tin và bạn chuyển dữ liệu đến quy trình làm việc này để chuyển nó đến Baserow và bạn đã lưu trữ nó ở đây.

Kết Luận

Đây là cách các hành động và đa tác tử hoạt động trong kết nối Typebot-n8n. Bạn có thể sử dụng nó cho hỗ trợ khách hàng và nhiều thứ khác có tiềm năng lớn.

Bạn có thấy hữu ích không? Hãy cho chúng tôi +1 nhé

Tìm kiếm tức thì các thông tin tại website: tranxuanloc.com

Mẹo tìm kiếm: "Từ khóa cần tìm kiếm" site:tranxuanloc.com để tìm được kết quả chính xác trên công cụ tìm kiếm của google

Trần Xuân Lộc Blog cung cấp dịch vụ

TOP ĐỐI TÁC CUNG CẤP DỊCH VỤ DU LỊCH TRỰC TUYẾN HÀNG ĐẦU

(Đặt phòng, đặt tour, đặt xe, đặt vé máy bay...Nhấn vào link logo để đặt dịch vụ với nhiều ưu đãi hấp dẫn)

Zalo
Cảnh báo: Hiện nay có rất nhiều đơn vị SỬ DỤNG LẠI các THÔNG TIN NỘI DUNG ĐÀO TẠO của KHÓA HỌC SALE OTA TỪ OTAVN mà không đảm bảo chất lượng và hỗ trợ về sau. Các bạn muốn đăng ký học SALE OTA uy tín hãy liên hệ trực tiếp với OTA Việt Nam. OTAVN có xây dựng các hình thức đào tạo trực tiếp offline cho doanh nghiệp, đào tạo 1-1 từ xa và tự học online. Chúng tôi có 2 tên miền là: otavietnam.com và tranxuanloc.com (founder) có chia sẻ và đăng tải các thông tin liên quan về OTA/ Sale OTA/ Digital Marketing/ Thiết kế website... Với khách hàng/ đối tác đã sử dụng dịch vụ của OTAVN sẽ được HỖ TRỢ MIỄN PHÍ các vấn đề phát sinh, tư vấn giải đáp sau khi đã hoàn thành khóa học hoặc sau khi đã sử dụng dịch vụ trọn đời. Hotline:0934552325 (iMessage/ Zalo/ Whatsapp) - Email: info@scovietnam.com