BIẾT A.I CHƯA?SELF HOSTING

Hướng dẫn cài đặt và sử dụng Flowise AI với Docker trên Ubuntu

Trong bối cảnh công nghệ trí tuệ nhân tạo (AI) phát triển bùng nổ, một làn sóng mới của các công cụ phát triển đã ra đời, đặc biệt là các nền tảng low-code/no-code. Những công cụ này đang dân chủ hóa khả năng tạo ra các ứng dụng thông minh, cho phép các nhà phát triển, nhà nghiên cứu, và cả những người không chuyên sâu về lập trình có thể biến ý tưởng của mình thành hiện thực. Trong số các công cụ nổi bật, Flowise AI nổi lên như một giải pháp mạnh mẽ, là “cầu nối giữa sự phức tạp kỹ thuật và ứng dụng thực tế”.

Flowise AI là gì?

Flowise AI là một nền tảng mã nguồn mở, được xây dựng dựa trên thư viện LangChain.js, cho phép người dùng xây dựng các ứng dụng và agent AI tùy chỉnh thông qua một giao diện kéo-thả trực quan. Thay vì phải viết hàng trăm dòng mã phức tạp, người dùng có thể thiết kế các luồng xử lý ngôn ngữ (workflow) bằng cách kết nối các “node” chức năng lại với nhau.

Nền tảng này không chỉ dành cho người mới bắt đầu mà còn đủ mạnh mẽ để hỗ trợ toàn bộ vòng đời phát triển, từ việc tạo mẫu (prototyping) đến triển khai sản phẩm (production). Sự tin cậy và sức mạnh của Flowise được minh chứng qua việc nó được sử dụng bởi nhiều công ty trong danh sách Fortune 500 như Thermo Fisher, Deloitte, Accenture, và AWS.

Các tính năng và lợi ích cốt lõi

Flowise cung cấp một bộ công cụ toàn diện để xây dựng các ứng dụng dựa trên Mô hình Ngôn ngữ Lớn (LLM).

  • Visual Workflow Builder: Tính năng trung tâm của Flowise là giao diện kéo-thả. Nó cho phép người dùng trực quan hóa và xây dựng các luồng logic phức tạp, giúp đơn giản hóa đáng kể quá trình phát triển và thúc đẩy sự hợp tác giữa các nhóm có chuyên môn kỹ thuật khác nhau.
  • Orchestration (Điều phối): Nền tảng này vượt trội trong việc kết nối các LLM với nhiều thành phần khác nhau, bao gồm bộ nhớ (memory) để duy trì ngữ cảnh cuộc trò chuyện, trình tải dữ liệu (data loaders) từ nhiều nguồn, bộ đệm (cache) để tăng tốc độ, và các công cụ (tools) để mở rộng khả năng.
  • Hỗ trợ RAG (Retrieval-Augmented Generation): Đây là một trong những tính năng mạnh mẽ nhất của Flowise. RAG cho phép AI truy xuất thông tin từ các tài liệu riêng tư (như PDF, DOCX, CSV) để đưa ra câu trả lời chính xác và phù hợp với ngữ cảnh. Điều này mở ra khả năng xây dựng các chatbot hỗ trợ khách hàng, trợ lý nội bộ, hoặc các cơ sở tri thức tùy chỉnh một cách dễ dàng.
  • Agents và Multi-Agent Systems: Flowise không chỉ giới hạn ở việc tạo ra các chatbot hỏi-đáp. Nó cho phép xây dựng các “agent” tự trị có khả năng sử dụng các công cụ bên ngoài như máy tính, API tìm kiếm, hoặc thậm chí thực thi mã. Với tính năng Agentflow, người dùng có thể thiết kế các hệ thống phức tạp gồm nhiều agent phối hợp với nhau để giải quyết các nhiệm vụ đa bước.
  • Tích hợp sâu rộng: Flowise hỗ trợ hơn 100 LLM, mô hình nhúng (embeddings), và cơ sở dữ liệu vector. Người dùng có thể linh hoạt lựa chọn giữa các mô hình mã nguồn mở và các mô hình thương mại hàng đầu từ OpenAI, Anthropic, Google, và nhiều nhà cung cấp khác.
  • Sẵn sàng cho Production: Nền tảng cung cấp API, SDK (cho Python và JavaScript/React), và widget nhúng để dễ dàng tích hợp các chatbot vào ứng dụng web hoặc di động hiện có. Nó cũng hỗ trợ các tính năng cấp doanh nghiệp như giám sát (observability), cơ chế “Human in the Loop” (cho phép con người can thiệp vào quy trình), và các tùy chọn triển khai tại chỗ (on-premise) hoặc trong môi trường air-gapped để đảm bảo an ninh tối đa.

Các lựa chọn triển khai: Tại sao chọn Docker Compose?

Flowise mang đến sự linh hoạt trong việc triển khai, đáp ứng các nhu cầu và trình độ kỹ thuật khác nhau. Việc lựa chọn phương pháp phù hợp phản ánh mục tiêu của người dùng. Flowise Cloud lý tưởng cho những ai muốn sự tiện lợi và không muốn bận tâm đến việc quản lý hạ tầng. Cài đặt qua NPM là cách nhanh nhất để thử nghiệm trên máy tính cá nhân.

Tuy nhiên, đối với các nhà phát triển muốn toàn quyền kiểm soát, khả năng tùy chỉnh cao, và một môi trường triển khai nhất quán, có thể tái tạo, Docker Compose là lựa chọn tối ưu. Nó cho phép định nghĩa toàn bộ stack ứng dụng (bao gồm Flowise và các dịch vụ phụ trợ như cơ sở dữ liệu) trong một tệp cấu hình duy nhất, giúp việc triển khai, nâng cấp và quản lý trở nên đơn giản và đáng tin cậy. Hướng dẫn này tập trung vào Docker Compose vì nó mang lại sự cân bằng tốt nhất giữa quyền kiểm soát, khả năng mở rộng và tính dễ sử dụng cho một nhà phát triển muốn tự host ứng dụng một cách nghiêm túc.

So sánh các phương pháp triển khai Flowise

Phương phápMức độ dễ sử dụngChi phíKhả năng mở rộngQuyền kiểm soát & Tùy chỉnhBảo trì
Flowise CloudRất caoCó bậc miễn phí giới hạn, các gói trả phí từ $35/thángCao (do nhà cung cấp quản lý)Thấp (giới hạn trong giao diện)Tối thiểu
Cài đặt NPMCaoMiễn phí (chi phí hạ tầng)Thấp (chạy trên một tiến trình)Trung bình (cấu hình qua biến môi trường)Thủ công
Docker ComposeTrung bìnhMiễn phí (chi phí hạ tầng)Cao (có thể mở rộng với queue mode)Rất cao (toàn quyền kiểm soát)Tự động hóa qua Docker

Chuẩn bị môi trường Ubuntu

Việc có một môi trường được cấu hình đúng đắn là yếu tố tiên quyết để đảm bảo quá trình cài đặt diễn ra suôn sẻ. Các bước dưới đây được thực hiện trên một máy chủ Ubuntu mới (khuyến nghị phiên bản 22.04 LTS hoặc 24.04 LTS).

Bước 1: Cài đặt Git

Git là một hệ thống quản lý phiên bản phân tán, cần thiết để sao chép (clone) mã nguồn của Flowise từ kho lưu trữ trên GitHub.

  1. Cập nhật danh sách gói của hệ thống: sudo apt update
  2. Cài đặt Git và các công cụ liên quan: sudo apt install git-all -y
  3. Kiểm tra phiên bản Git để xác nhận cài đặt thành công: git --version
    Kết quả sẽ hiển thị phiên bản Git đã được cài đặt, ví dụ: git version 2.43.0

Bước 2: Cài đặt Docker Engine

Docker là nền tảng container hóa, cho phép đóng gói Flowise và các thành phần phụ thuộc vào một đơn vị độc lập, đảm bảo ứng dụng chạy nhất quán trên mọi môi trường. Việc cài đặt từ kho lưu trữ chính thức của Docker đảm bảo bạn nhận được phiên bản mới nhất và an toàn nhất.

1. Cài đặt các gói phụ thuộc cần thiết để apt có thể sử dụng kho lưu trữ qua HTTPS:

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

2. Thêm khóa GPG (GNU Privacy Guard) chính thức của Docker vào hệ thống. Khóa này dùng để xác thực các gói phần mềm được tải về:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3. Thêm kho lưu trữ của Docker vào danh sách nguồn của apt:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Cập nhật lại danh sách gói và cài đặt Docker Engine cùng các thành phần liên quan:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin -y

5. Cấu hình sau cài đặt (Bước quan trọng): Mặc định, các lệnh Docker yêu cầu quyền quản trị (root). Để có thể chạy các lệnh Docker mà không cần sudo, cần thêm người dùng hiện tại vào nhóm docker. Đây là một bước thiết yếu để cải thiện trải nghiệm và tránh các vấn đề về quyền sở hữu tệp sau này.

sudo usermod -aG docker ${USER}


Sau khi chạy lệnh trên, bạn cần đăng xuất khỏi máy chủ và đăng nhập lại để thay đổi có hiệu lực.

Bước 3: Cài đặt Docker Compose Plugin

Docker Compose là công cụ để định nghĩa và chạy các ứng dụng đa container. Hướng dẫn này sử dụng Docker Compose (dạng plugin), là phương pháp hiện đại và được khuyến nghị thay cho docker-compose (dạng standalone cũ).

1. Vì kho lưu trữ Docker đã được thêm ở bước trước, việc cài đặt plugin rất đơn giản:

sudo apt install docker-compose-plugin -y

2. Kiểm tra phiên bản để xác nhận cài đặt:

docker compose version


Kết quả sẽ hiển thị phiên bản Docker Compose đã cài đặt, ví dụ: Docker Compose version v2.24.5.

Phần 3: Triển khai Flowise AI với Docker Compose

Khi môi trường đã sẵn sàng, chúng ta sẽ tiến hành triển khai Flowise.

Bước 1: Sao chép (Clone) kho mã nguồn Flowise

Sử dụng Git để tải bản sao mới nhất của dự án Flowise từ GitHub về máy chủ của bạn.

1. Chạy lệnh git clone:

git clone https://github.com/FlowiseAI/Flowise.git

2. Di chuyển vào thư mục docker bên trong dự án vừa tải về. Đây là thư mục chứa các tệp cấu hình cho việc triển khai bằng Docker.

cd Flowise/docker

Bước 2: Cấu hình biến môi trường với tệp .env

Tệp .env là nơi lưu trữ các biến cấu hình cho ứng dụng, giúp tách biệt các thông tin nhạy cảm (như mật khẩu, API key) hoặc các cài đặt thay đổi thường xuyên ra khỏi mã nguồn. Đây là một thực hành tốt nhất về bảo mật và quản lý cấu hình.

1. Trong thư mục docker, sao chép tệp cấu hình mẫu .env.example thành một tệp mới tên là .env:

cp .env.example .env

Mở tệp .env bằng một trình soạn thảo văn bản (ví dụ: nano.env) để xem và tùy chỉnh các biến.

Tệp docker-compose.yml của Flowise được thiết kế để có tính tùy biến cao thông qua các biến này. Việc hiểu rõ chúng là chìa khóa để cấu hình và bảo mật phiên bản Flowise của bạn, đặc biệt khi chuyển sang môi trường sản xuất. Ví dụ, DATABASE_TYPE cho phép chuyển từ cơ sở dữ liệu SQLite mặc định sang PostgreSQL mạnh mẽ hơn, trong khi CORS_ORIGINS là cài đặt bảo mật quan trọng khi nhúng chatbot vào một trang web khác.

Giải thích các Biến Môi trường Quan trọng trong .env

Tên BiếnMô tảGiá trị Mặc định (trong .env.example)Khi nào cần thay đổi
PORTCổng mà ứng dụng Flowise sẽ chạy trên đó.3000Khi cổng 3000 đã bị chiếm dụng hoặc bạn muốn sử dụng một cổng khác.
FLOWISE_USERNAMETên người dùng để đăng nhập vào giao diện Flowise.(trống)Nên đặt để bảo vệ giao diện quản trị của bạn.
FLOWISE_PASSWORDMật khẩu cho người dùng trên.(trống)Nên đặt một mật khẩu mạnh để bảo vệ giao diện quản trị.
DATABASE_PATHĐường dẫn đến tệp cơ sở dữ liệu SQLite./root/.flowiseThường không cần thay đổi khi dùng Docker.
DATABASE_TYPELoại cơ sở dữ liệu sử dụng (ví dụ: sqlite, postgres).(trống, mặc định là sqlite)Khi bạn muốn sử dụng một cơ sở dữ liệu ngoài như PostgreSQL để tăng hiệu suất và khả năng mở rộng.
CORS_ORIGINSDanh sách các tên miền được phép truy cập API Flowise.(trống)Khi bạn nhúng chatbot vào một trang web có tên miền khác với máy chủ Flowise.
IFRAME_ORIGINSDanh sách các tên miền được phép nhúng Flowise vào iframe.(trống)Tương tự như CORS_ORIGINS, cần thiết cho việc nhúng.

Bước 3: Phân tích tệp docker-compose.yml

Tệp docker-compose.yml là bản thiết kế cho ứng dụng của bạn. Nó cho Docker biết cần chạy container nào, cấu hình chúng ra sao, và chúng liên kết với nhau như thế nào. Dưới đây là nội dung và phân tích tệp docker-compose.yml chính thức của Flowise:

version: '3.1'

services:
  flowise:
    image: flowiseai/flowise
    restart: always
    environment:
      - PORT=${PORT}
      - CORS_ORIGINS=${CORS_ORIGINS}
      - IFRAME_ORIGINS=${IFRAME_ORIGINS}
      - FLOWISE_USERNAME=${FLOWISE_USERNAME}
      - FLOWISE_PASSWORD=${FLOWISE_PASSWORD}
      - FLOWISE_FILE_SIZE_LIMIT=${FLOWISE_FILE_SIZE_LIMIT}
      - DEBUG=${DEBUG}
      - DATABASE_PATH=${DATABASE_PATH}
      - DATABASE_TYPE=${DATABASE_TYPE}
      - DATABASE_PORT=${DATABASE_PORT}
      - DATABASE_HOST=${DATABASE_HOST}
      - DATABASE_NAME=${DATABASE_NAME}
      - DATABASE_USER=${DATABASE_USER}
      - DATABASE_PASSWORD=${DATABASE_PASSWORD}
      - DATABASE_SSL=${DATABASE_SSL}
      - DATABASE_SSL_KEY_BASE64=${DATABASE_SSL_KEY_BASE64}
    ports:
      - '${PORT}:${PORT}'
    volumes:
      -./.flowise:/root/.flowise
  • services: flowise:: Định nghĩa một dịch vụ (container) có tên là flowise.
  • image: flowiseai/flowise: Chỉ định sử dụng image Docker chính thức của Flowise từ Docker Hub.
  • restart: always: Cấu hình để container tự động khởi động lại nếu nó bị dừng hoặc gặp sự cố, đảm bảo tính sẵn sàng cao.
  • environment:: Truyền các biến môi trường từ tệp .env vào bên trong container.
  • ports: - '${PORT}:${PORT}': Ánh xạ cổng trên máy chủ (host) vào cổng tương ứng bên trong container. Ví dụ, nếu PORT=3000, cổng 3000 của máy chủ sẽ được chuyển tiếp đến cổng 3000 của container.
  • volumes: -./.flowise:/root/.flowise: Đây là một trong những phần quan trọng nhất. Nó tạo ra một “volume” liên kết thư mục ./.flowise trên máy chủ của bạn với thư mục /root/.flowise bên trong container. Điều này đảm bảo rằng tất cả dữ liệu của Flowise (cơ sở dữ liệu, các chatflow đã tạo, thông tin đăng nhập) được lưu trữ bền vững trên máy chủ. Ngay cả khi bạn xóa và tạo lại container (ví dụ khi nâng cấp), dữ liệu của bạn vẫn được an toàn. Đây là khái niệm cốt lõi để chạy các ứng dụng có trạng thái (stateful) trong Docker.

Bước 4: Khởi chạy Flowise

Bây giờ, hãy khởi chạy ứng dụng bằng một lệnh duy nhất.

docker compose up -d
  • docker compose up: Lệnh này sẽ đọc tệp docker-compose.yml, tải image flowiseai/flowise nếu chưa có, sau đó tạo và khởi động container theo cấu hình.
  • -d (detached mode): Tùy chọn này chạy container ở chế độ nền, giải phóng terminal để bạn có thể tiếp tục làm việc khác.

Bước 5: Kiểm tra và truy cập

Sau khi chạy lệnh trên, bạn cần kiểm tra để chắc chắn mọi thứ hoạt động bình thường.

1. Kiểm tra trạng thái của các container:

docker compose ps

Bạn sẽ thấy một dịch vụ tên flowise với trạng thái running hoặc up

2. Xem nhật ký (logs) của container. Điều này cực kỳ hữu ích để gỡ lỗi nếu container không khởi động được:

docker compose logs -f flowise

Nhấn Ctrl + C để thoát khỏi chế độ xem log.

3. Truy cập giao diện người dùng Flowise: Mở trình duyệt web và điều hướng đến địa chỉ http://<địa-chỉ-IP-máy-chủ>:3000 (thay <địa-chỉ-IP-máy-chủ> bằng địa chỉ IP công khai của máy chủ Ubuntu của bạn, và 3000 bằng cổng bạn đã cấu hình trong tệp .env). Nếu bạn cài đặt trên máy tính cá nhân, địa chỉ sẽ là http://localhost:3000.

Bắt đầu với Flowise: Xây dựng Chatflow đầu tiên

Phần này sẽ hướng dẫn bạn tạo ra một sản phẩm hữu hình đầu tiên, mang lại cảm giác thành tựu và cho thấy sức mạnh của Flowise một cách nhanh chóng.

Khám phá giao diện người dùng

Sau khi đăng nhập, bạn sẽ thấy các khu vực chính sau:

  • Chatflows: Nơi bạn tạo và quản lý tất cả các luồng ứng dụng AI của mình.
  • Marketplace: Một kho tài nguyên chứa các mẫu chatflow và công cụ do cộng đồng đóng góp, giúp bạn bắt đầu nhanh hơn.
  • API Keys: Nơi quản lý các khóa API để bảo vệ và cấp quyền truy cập vào các chatflow của bạn.

Hướng dẫn từng bước: Tạo một “Joke Bot”

Mục tiêu: Xây dựng một chatbot đơn giản. Khi người dùng nhập một chủ đề (ví dụ: “cat”), nó sẽ kể một câu chuyện cười về chủ đề đó.

Bước 1: Tạo Chatflow mới

Trên trang tổng quan, nhấp vào nút Add New để bắt đầu một canvas trống.

Bước 2: Thêm các Nodes cần thiết

Sử dụng thanh công cụ bên trái, tìm và kéo các node sau vào canvas:

  1. Chat Model (Mô hình Trò chuyện): Đi đến Chat Models và kéo node ChatOpenAI vào.
  2. Prompt Template (Mẫu Lời nhắc): Đi đến Prompts và kéo node Prompt Template vào. Đây là nơi chúng ta định hình yêu cầu gửi đến LLM.
  3. Chain (Chuỗi): Đi đến Chains và kéo node LLM Chain vào. Đây là chuỗi cơ bản nhất, kết nối một LLM với một prompt.

Bước 3: Kết nối và cấu hình các Nodes

  1. Cấu hình ChatOpenAI:
    • Nhấp vào node ChatOpenAI.
    • Trong mục Connect Credential, nhấp vào Create New.
    • Đặt tên cho credential (ví dụ: My OpenAI Key) và dán khóa API OpenAI của bạn vào trường OpenAI Api Key. Sau đó nhấp Add.
  2. Cấu hình Prompt Template:
    • Nhấp vào node Prompt Template.
    • Trong trường Template, nhập vào nội dung sau: Tell me a joke about {topic}.
    • {topic} là một biến động mà chúng ta sẽ điền giá trị vào sau.
  3. Kết nối các Nodes:
    • Nhấp và kéo từ chấm tròn đầu ra của node ChatOpenAI đến chấm tròn đầu vào Language Model của node LLM Chain.
    • Tương tự, kéo từ đầu ra của node Prompt Template đến đầu vào Prompt của node LLM Chain.
  4. Ánh xạ Dữ liệu đầu vào:
    • Trên node LLM Chain, nhấp vào nút Additional Parameters.
    • Tìm đến mục Format Prompt Values.
    • Bạn sẽ thấy biến topic mà chúng ta đã định nghĩa. Nhấp vào biểu tượng bút chì bên cạnh nó.
    • Trong hộp thoại hiện ra, nhấp vào trường giá trị, chọn Chat Input và sau đó chọn User Question. Thao tác này sẽ ánh xạ nội dung người dùng nhập trong hộp chat vào biến {topic} của chúng ta.
    • Đóng hộp thoại lại.

Bước 4: Lưu và Thử nghiệm

  1. Nhấp vào biểu tượng Save ở góc trên bên phải, đặt tên cho chatflow của bạn (ví dụ: Joke Bot) và lưu lại.
  2. Nhấp vào biểu tượng bong bóng chat ở góc trên bên phải để mở giao diện trò chuyện.
  3. Nhập một chủ đề vào hộp chat, ví dụ: cats hoặc programmers, rồi nhấn Enter.
  4. Chatbot sẽ sử dụng prompt của bạn, điền chủ đề vào, gửi đến OpenAI và trả về một câu chuyện cười tương ứng.

Mở rộng tiềm năng: Bạn có thể làm gì tiếp theo?

Bạn đã thành công cài đặt Flowise và xây dựng ứng dụng đầu tiên. Đây chỉ là bước khởi đầu. Dưới đây là một vài hướng đi bạn có thể khám phá tiếp theo:

  • Xây dựng Chatbot RAG: Thử nghiệm với các node trong mục Document Loaders (như PDF File, Text File, CSV File) và Vector Stores (như Chroma, Pinecone) để tạo một chatbot có thể trả lời các câu hỏi dựa trên tài liệu của riêng bạn. Đây là một trong những ứng dụng mạnh mẽ và phổ biến nhất của Flowise.
  • Tích hợp Công cụ (Tools): Khám phá các node trong mục Tools như Calculator hoặc Search API. Bằng cách kết hợp chúng với một Agent (ví dụ: Conversational Agent), bạn có thể tạo ra các trợ lý AI có khả năng thực hiện các tác vụ thực tế, vượt ra ngoài khả năng tạo văn bản đơn thuần của LLM.
  • Triển khai Chatbot: Sau khi hoàn thiện chatflow, bạn có thể dễ dàng tích hợp nó vào các ứng dụng khác. Sử dụng tùy chọn Embed để nhúng chatbot vào trang web của bạn, hoặc sử dụng API Endpoint để gọi nó từ backend của một ứng dụng khác.

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận