Chuyển đến nội dung chính

Dify AI: Hướng dẫn kèm dự án minh họa

Tìm hiểu Dify là gì và cách xây dựng một trợ lý du lịch AI bằng giao diện kéo-thả low-code.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Dify là một nền tảng thân thiện với người dùng, giúp bạn xây dựng ứng dụng AI với rất ít hoặc không cần viết mã. Cách hoạt động là kéo thả các khối chức năng khác nhau. Thông tin sẽ chảy qua các khối, được xử lý và kết hợp để tạo ra câu trả lời.

Trong bài viết này, tôi sẽ giải thích các kiến thức nền tảng của Dify bằng cách hướng dẫn bạn tạo một trợ lý du lịch AI.

Chúng tôi cập nhật cho độc giả những điều mới nhất về AI qua The Median, bản tin miễn phí mỗi thứ Sáu tóm lược các câu chuyện nổi bật trong tuần. Đăng ký để luôn nắm bắt chỉ trong vài phút mỗi tuần:

Dify là gì?

Dify là một nền tảng được thiết kế để đơn giản hóa việc phát triển ứng dụng AI mà không đòi hỏi kỹ năng lập trình sâu. Nó cung cấp môi trường low-code thân thiện, nơi người dùng có thể xây dựng ứng dụng bằng cách kéo thả các thành phần khác nhau.

Hãy hình dung Dify như một hộp công cụ số chứa các khối dựng sẵn có thể ghép lại để tạo nên phần mềm hoạt động. Cách tiếp cận này giúp công nghệ trở nên dễ tiếp cận hơn, cho phép những người ít kiến thức lập trình hiện thực hóa ý tưởng của mình.

Mỗi loại khối có đầu vào và chuyển đổi chúng thành các đầu ra khác nhau, tùy thuộc vào loại khối. Thông tin được truyền và biến đổi qua từng khối, tạo ra kết quả cuối cùng.

Bắt đầu với Dify

Có hai cách sử dụng Dify:

  • Thiết lập cục bộ.
  • Dùng phiên bản đám mây.

Trong hướng dẫn này, chúng ta dùng phiên bản đám mây. Bản đám mây của Dify có gói miễn phí, nên bạn có thể theo dõi mà không cần đăng ký trả phí.

Nếu bạn quan tâm đến thiết lập cục bộ, cách dễ nhất là:

  1. Tải xuống hoặc clone Dify từ kho lưu trữ chính thức.
  2. Chạy Dify bằng Docker như mô tả trong phần Quick Start của README trong kho.

Tạo một Chatflow với Dify

Dify cung cấp nhiều loại ứng dụng. Chúng ta sẽ tập trung xây dựng một ứng dụng Chatflow, tức một luồng AI mà người dùng tương tác với tác tử qua giao diện chat.

Để tạo Chatflow mới, trước hết nhấn "Create from blank" và chọn tùy chọn "Chatflow".

Creating a black flow in Dify

Để tạo luồng, đặt tên rồi nhấn nút “Create”:

Creating a Chatflow in Dify

Hành động này sẽ tạo luồng mặc định sau:

The default Chatflow in Dify

Luồng này có ba khối:

  • Khối bắt đầu chịu trách nhiệm khởi động luồng. Với Chatflow, luồng bắt đầu khi người dùng gửi tin nhắn.
  • Nút LLM nhận đầu vào là tin nhắn người dùng và gửi đến một LLM, trong trường hợp này là gpt-4.
  • Nút cuối dùng để hiển thị tin nhắn trong chat. Ở ví dụ này, nó được nối với nút LLM, nên đầu ra của LLM sẽ được gửi vào chat.

Ba nút này kết hợp với nhau tạo ra một chatbot AI tương tự ChatGPT. Trước khi chạy ứng dụng, chúng ta cần cài đặt và thiết lập plugin OpenAI.

Cài đặt và thiết lập plugin OpenAI

Để cài plugin OpenAI, hãy thực hiện:

  1. Nhấn nút "Plugins" ở góc trên bên phải.

Adding the openai plugin on dify

  1. Nhấn “Install from Marketplace.”

Accessing the marketplace on dify

  1. Gõ "openai" trong ô tìm kiếm và nhấn vào plugin OpenAI.

Installing the OpenAI plugin on dify

  1. Chọn plugin OpenAI và nhấn “Install.”

Tiếp theo, chúng ta cần thiết lập khóa API OpenAI. Nếu bạn chưa có, hãy tạo tại đây. Lưu ý việc sử dụng API OpenAI không miễn phí, nên bạn sẽ cần gắn phương thức thanh toán với khóa API.

Khi đã có khóa, ta cấu hình như sau:

  1. Chọn nút LLM.

Selecting a Dify block

  1. Nhấn biểu tượng cấu hình bên cạnh tên mô hình.

Configuring a LLM block on dify

  1. Nhấn vào danh sách thả xuống Model ở trên cùng.

The model dropdown

  1. Nhấn "Model Provider Settings" ở cuối danh sách.

Configuring the model provider on dify

  1. Nhấn "Setup" trong phần API key.

Model setup on dify

  1. Dán khóa API và nhấn “Save”.

Configuring the OpenAI API key on dify

Chạy ứng dụng

Giờ đây chúng ta có thể chạy ứng dụng bằng cách nhấn nút xem trước:

Previewing the application.

Hiện tại, nó chưa thú vị lắm vì mới chỉ là một chatbot AI. Hãy nhớ rằng nó sẽ không làm gì cho đến khi người dùng gửi tin nhắn.

Sample chat on dify

Tạo biến

Dify cho phép lưu trạng thái ứng dụng bằng cách gán giá trị cho các biến có thể truy cập được từ mọi khối.

Để tạo biến, nhấn nút biến:

Adding a variable on dify

Hãy tạo một biến để lưu tên người dùng:

Variable configuration on dify

Cấu hình này tạo biến tên name lưu một chuỗi (văn bản). Chúng ta để trống giá trị mặc định, nên ban đầu biến sẽ là chuỗi rỗng.

Có nhiều cách để gán giá trị cho biến, nhưng cách thường gặp nhất là dùng một khối AI để tự động suy ra từ hội thoại. Chúng ta sẽ học điều đó sau. Trước hết, hãy học cách kiểm tra giá trị của biến để điều khiển luồng ứng dụng.

Khối IF/ELSE

Để kiểm tra giá trị của biến, ta có thể dùng khối IF/ELSE. Khối này dùng để thực thi các hành động khác nhau tùy vào giá trị biến.

Để thêm khối mới, nhấn nút "+" ở bên dưới:

Adding a block on dify

Sau đó chọn khối bạn muốn thêm. Ở đây, chọn "IF/ELSE":

The IF/ELSE block on dify

Tiếp theo nhấn vào khối để cấu hình bằng cách chọn biến name mà ta đã tạo trước đó.

Để thử nghiệm, thêm hai khối Answer. Các khối này dùng để hiển thị tin nhắn trong chat. Nối một khối với đầu ra IF (chạy khi điều kiện đúng) và khối còn lại với đầu ra ELSE (chạy khi điều kiện sai).

Controlling the flow with an IF/ELSE block on dify

Với đầu ra IF, tôi đặt chuỗi "Xin lỗi, tôi không biết tên của bạn." còn với ELSE, tôi đặt "Xin chào, {name}!". Ta có thể dùng dấu ngoặc nhọn để chèn biến vào chuỗi. Điều này cũng sẽ hữu ích sau này khi xây dựng prompt.

Bạn có thể thử Chatflow này bằng cách nhấn nút "Preview". Lưu ý Chatflow được kích hoạt bởi tin nhắn người dùng, nên trước tiên cần gửi một tin như "Hi." Dưới đây là kết quả tùy vào việc tên đã được đặt hay chưa (tôi đặt thủ công trong giao diện biến cho ví dụ thứ hai):

Results of flow control

Khối gán biến và khối trích xuất tham số

Chúng ta có thể dùng AI để nhận diện và trích xuất giá trị biến bằng khối Parameter Extractor. Khối này sử dụng LLM để trích xuất thông tin từ hội thoại.

Parameter extractor block

Trước hết, thêm một khối Parameter Extractor nối vào nhánh IF. Cấu hình khối như sau:

Parameter extractor configuration on dify

  • INPUT VARIABLE được đặt là sys.query, tương ứng với tin nhắn của người dùng. Nghĩa là khối Parameter Extractor sẽ cố gắng trích xuất giá trị từ tin nhắn người dùng.
  • Trong EXTRACTION PARAMETERS, ta định nghĩa thông tin cần trích xuất. Tiếc là không thể chỉ định trực tiếp một biến ở đây, nên ta cần định nghĩa lại thông tin đó bằng cách nhấn nút “+”.

Parameter configuration on dify

  • Trường INSTRUCTION là prompt để hướng dẫn LLM cần làm gì.
  • Tiếp theo, thêm khối Variable Assigner để gán giá trị do Parameter Extractor trích xuất (nếu có) vào biến name.

Variable assigner block

Hãy đảm bảo gán name đã trích xuất vào biến name.

Variable assigner configuration

Sau bước này, biến name vẫn có thể chưa được xác định vì có thể người dùng chưa cung cấp tên. Vậy nên ta thêm một khối IF/ELSE nữa để kiểm tra. Nếu tên đã có, hãy chào người dùng. Nếu chưa, hãy hỏi tên của họ.

The name extractor flow

Ví dụ tương tác như sau:

Sample chat with the name extractor flow in dify

Luồng này minh họa các nguyên lý cơ bản của workflow trong Dify. Dù người dùng nhắn gì, nếu tên chưa được xác định, hệ thống sẽ cố trích xuất tên từ tin nhắn. Nếu thất bại, nó sẽ hỏi. Nếu thành công, nó sẽ chào người dùng bằng tên của họ.

Ở thời điểm này chưa có khối LLM, nên tác tử sẽ không làm gì khác.

Khối Code

Khối Code dùng để thực thi mã Python tùy chỉnh. Hãy sửa luồng trước đó để trích xuất vị trí của người dùng thay vì tên. Sau đó dùng khối Code để gọi một API thời tiết và gửi dự báo thời tiết cho người dùng.

  • Tạo biến mới tên location.
  • Sửa các khối IF/ELSE để kiểm tra location thay vì name.
  • Sửa khối Parameter Extractor để trích xuất vị trí thay vì tên.
  • Sửa khối Variable Assigner để gán giá trị trích xuất vào biến location.
  • Sửa các khối Answer để lần lượt hỏi vị trí và hiển thị vị trí.

Sau các bước này, luồng sẽ trông như sau:

Location extractor flow in dify

Ví dụ tương tác:

Sample chat with the location extractor

Bước tiếp theo là thêm một khối Code sau khi đã có vị trí. Khối này sẽ gọi OpenWeather API để lấy dự báo thời tiết cho vị trí đó.

API này miễn phí sử dụng, miễn là chúng ta không gửi quá nhiều yêu cầu. 

Thay khối Answer thứ hai bằng một khối Code. 

The Code block

Cấu hình để nó nhận một tham số duy nhất là giá trị location.

Configuring the code block

Với mã Python, dưới đây là cách dùng gói requests để lấy thời tiết từ OpenWeather API:

import requests

API_KEY = "PASTE_YOUR_API_KEY_HERE"

def main(location: str) -> str:
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": location,
        "appid": API_KEY,
        "units": "metric",
    }
    response = requests.get(base_url, params=params)
    data = response.json()
    if response.status_code == 200:
        weather_desc = data["weather"][0]["description"]
        temp = data["main"]["temp"]
        return {
            "result": f"Current weather in {location}: {weather_desc}, Temperature: {temp}°C"
        }
    else:
        return {
            "result": "Could not retrieve weather data",
        }

Cuối cùng, nối đầu ra của nút Code tới một nút Answer để hiển thị cho người dùng.

Displaying the code block result

Giờ ta đã có một Chatflow có thể cho biết dự báo thời tiết:

Sample what with the weather agent

Dự án: Tạo tác tử AI lập kế hoạch du lịch

Giờ chúng ta đã có đủ công cụ để xây dựng một trợ lý du lịch AI. Khả năng là vô tận, nhưng để tránh làm phức tạp hướng dẫn này, ta sẽ giữ mọi thứ đơn giản.

Tác tử sẽ tập trung lập kế hoạch cho một ngày của chuyến đi. Nó sẽ bắt đầu bằng cách thu thập vị trí của người dùng và các loại hoạt động họ yêu thích. Để làm điều này, ta dùng hai biến:

  • location: Lưu vị trí nơi người dùng đi du lịch.
  • activities: Một mảng chuỗi lưu các hoạt động người dùng muốn làm.

Activities variable configuration in dify

Dưới đây là cách tạo luồng để trích xuất cả hai biến:

The dual parameter extractor flow in dify

Trong ví dụ này, chúng ta bắt đầu bằng một khối trích xuất tham số để lấy cả location và danh sách activities.

The dual parameter extractor configuration

Sau đó, chúng ta dùng các khối IF/ELSE để kiểm tra từng tham số này có được trích xuất không và cập nhật biến nếu có. Khác với các ví dụ trước, cách này cho phép người dùng cập nhật các giá trị.

Cuối phần trích xuất giá trị và gán biến, ta thêm một khối IF/ELSE khác để kiểm tra xem còn thiếu giá trị nào không. Nếu thiếu, hãy yêu cầu người dùng cung cấp rõ ràng.

Requesting the values when the user didn't provide them.

Nếu cả location và activities đều được xác định, chúng ta dùng khối Code đã tạo trước đó để lấy thời tiết tại vị trí đã cho. Cuối cùng, cung cấp thời tiết, vị trí và hoạt động cho một khối LLM để lập kế hoạch cho ngày của người dùng.

The travel agent LLM configuration.

Khối LLM được cấu hình với system prompt hướng dẫn mô hình cần làm gì. Vị trí, hoạt động và thời tiết sẽ được chèn vào đó. Dưới đây là phần cuối của luồng:

The final flow

Ví dụ tương tác với tác tử:

Sample interaction with the travel agent in dify

Ta thấy trong phản hồi, nhờ có nút Code, tác tử có thể cung cấp thông tin thời tiết cho người dùng và tính đến yếu tố đó khi lên kế hoạch hoạt động.

Với cách thiết lập luồng như vậy, nếu người dùng cung cấp thông tin ngay trong tin nhắn đầu tiên, tác tử sẽ trực tiếp đưa ra kế hoạch cho cả ngày.

Another sample interaction where the user directly provides the information.

Định nghĩa lời chào tùy chỉnh

Bạn có thể nhận thấy tác tử bắt đầu bằng cách chào người dùng bằng một tin nhắn:

Greeting message

Để bật tính năng này, chúng ta cần kích hoạt tính năng Conversation Opener.

Accessing Dify features

Enabling the greeting message on dify

Công cụ của Dify

Trong hướng dẫn này, chúng ta đã học các khối xây dựng cơ bản của Dify. Một khía cạnh chưa đề cập là công cụ (tools).

Trong Dify, công cụ là các phần mở rộng mạnh mẽ cho phép tác tử AI tương tác với thế giới bên ngoài, vượt ra ngoài giới hạn của mô hình ngôn ngữ. Dù một LLM có thể suy luận và tạo phản hồi dựa trên dữ liệu huấn luyện và ngữ cảnh prompt, nó không có quyền truy cập thời gian thực vào dữ liệu sống hoặc dịch vụ bên ngoài.

Các công cụ giải quyết điều này bằng cách cho phép tác tử gọi API, truy vấn cơ sở dữ liệu, thực hiện tính toán, truy xuất tài liệu, v.v., về bản chất đóng vai trò cầu nối giữa AI và nguồn thông tin bên ngoài.

Accessing Dify tools

Bạn có thể cấu hình công cụ trong Dify qua giao diện trực quan của nền tảng bằng cách chỉ định loại công cụ (như yêu cầu HTTP, bộ thông dịch mã, hay plugin bên thứ ba), lược đồ đầu vào/đầu ra, và các yêu cầu xác thực. Khi đã thiết lập, các công cụ này có thể được sử dụng trong luồng tác tử qua các khối Tool, cho phép bạn truyền dữ liệu ra/vào công cụ và đưa kết quả vào các nút LLM hoặc các khối logic khác.

Adding a tool block

Điều này giúp tác tử của bạn không chỉ thông minh hơn mà còn có khả năng hành động, cung cấp câu trả lời cập nhật, phù hợp ngữ cảnh bằng cách tương tác với các dịch vụ thực tế.

Trong ví dụ của chúng ta, ta đã dùng khối code để gửi yêu cầu tới API thời tiết. Một cách thay thế là tạo một công cụ và cung cấp công cụ đó cho LLM.

Kết luận

Trong hướng dẫn này, chúng ta đã khám phá một số khối cơ bản bạn cần để bắt đầu làm việc với Dify. Tuy nhiên, Dify còn nhiều tính năng và khả năng khác để khám phá.

Để củng cố hiểu biết, một bài tập hay là nâng cấp trợ lý du lịch mà chúng ta đã tạo. Hãy cân nhắc thêm tính năng tìm kiếm trên internet để tìm hoạt động địa phương trực tuyến, từ đó làm phong phú chức năng của tác tử và cung cấp gợi ý linh hoạt hơn.

Nếu bạn hứng thú với các trình dựng tác tử AI như Dify, tôi khuyên bạn xem thêm các hướng dẫn khác của chúng tôi để học tiếp:


François Aubry's photo
Author
François Aubry
LinkedIn
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.
Chủ đề
AI Agents
Trí tuệ Nhân tạo

Học AI với những khóa này!

{count, plural, one {Khóa học} other {Khóa học}}

Giới thiệu về AI Agents

{hours} giờ {minutes} phút
144.6K
Tìm hiểu các kiến thức cơ bản về AI agent, các thành phần của chúng và ứng dụng thực tế—không cần lập trình.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

{count, plural, one {blog} other {blog}}

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm