Bắt đầu nhanh¶
Dựng một workflow soạn câu trả lời cho tin nhắn của khách, chờ một người duyệt, và có thể được dịch vụ khác gọi qua HTTP.
| Bạn sẽ dựng | Start → LLM (soạn trả lời) → Human (duyệt) → End |
| Bạn sẽ dùng | Trình soạn thảo, state schema, trace của run, API token và lịch chạy |
| Thời gian | Khoảng 10 phút |
| Video | Video ở trang chủ đi qua đúng các bước này |
Trước khi bắt đầu¶
- Studio đang chạy:
./dev.shtừ bản clone của repo (xem Cài đặt). Giao diện ở http://localhost:5173. - Một tài khoản: tạo bằng Đăng ký ở trang đăng nhập. Vai trò mặc định
editorlà đủ cho hướng dẫn này. - Không cần key của model. Khi chưa có credential, node LLM trả lời bằng bản mock offline cố định, lặp lại phần cuối của prompt.
1. Tạo workflow trống¶
- Ở trang Workflows, chọn Workflow mới.
- Trong thư viện mẫu, chọn Workflow trống. Trình soạn thảo mở ra với một node Start, một node End và một cạnh nối chúng.
- Đổi tên ở ô tên trên thanh tiêu đề, ví dụ
Trả lời hoàn tiền.

2. Thêm và nối các node¶
- Kéo LLM từ Node palette thả vào canvas. Cuộn palette xuống tới Human và kéo nó đặt cạnh node LLM.
- Chọn cạnh từ Start tới End và nhấn Del.
- Nối các node: kéo từ handle bên phải của Start tới handle bên trái của LLM, rồi LLM tới Human, rồi Human tới End.
- Nhấn Shift+L để sắp xếp lại bố cục (hoặc ⋯ → Tự sắp xếp bố cục).
Kiểm tra
Canvas có bốn node trên một hàng: Start → LLM → Human → End.

3. Cấu hình node LLM¶
State là bản ghi có kiểu mà mọi node đọc và ghi. Workflow mới có một trường
message, chứa input của run.
- Chọn node LLM. Cấu hình của nó mở ở panel Cấu hình.
- Đặt Nhãn là
Soạn trả lời. -
Thay Prompt template bằng:
{{state.message}}hiện thành một thẻ. Gõ{{để chọn trường trong state; trường không có trong state bị đánh dấu là không xác định. -
Ở State schema trong panel trái, chọn Thêm trường và đặt tên trường mới là
reply. - Mở tab Dữ liệu và đặt Trường output là
reply. Node ghi câu trả lời vào đó.

4. Cấu hình node Human¶
- Chọn node Human và đặt Nhãn là
Duyệt trả lời. -
Đặt Câu hỏi cho người duyệt là:
-
Thêm trường
decisionvào state, rồi ở tab Dữ liệu chọn nó làm Trường output. Trường này nhậnapproved,rejectedhoặc câu trả lời được gõ vào. -
Tuỳ chọn: quay lại tab Cài đặt, ở Kênh duyệt, đặt Gửi yêu cầu duyệt tới một kênh Slack, Telegram, WhatsApp, email hoặc Teams đã kết nối, rồi điền đích gửi (với Slack là channel id). Người duyệt (email) liệt kê những người khác được trả lời. Kênh được kết nối ở Cài đặt → Kênh; xem Kênh duyệt. Làm theo hướng dẫn này chỉ cần Chỉ trong Studio.

-
Chọn Lưu (Ctrl+S hoặc Cmd+S). Backend kiểm tra graph và lưu thành một phiên bản mới.
Kiểm tra graph
Lưu và Chạy đều kiểm tra graph trước: node không tới được, tham chiếu tới trường không có trong state, cạnh trỏ tới node không tồn tại đều được liệt kê trước khi chạy. Xem Trình soạn thảo.
5. Chạy và duyệt¶
-
Trong tab Chạy ở phía dưới, nhập vào Input (bên trái):
-
Chọn Chạy (Ctrl+Enter). Node LLM chạy xong, và run dừng ở node Human với trạng thái
waiting.
-
Đọc câu hỏi và câu trả lời đã soạn, rồi chọn Duyệt. Run chạy tiếp từ checkpoint và kết thúc.
Trả lời từ chat hoặc email
Khi node Human có kênh, cùng yêu cầu đó cũng được gửi tới kênh: nút Duyệt và Từ chối trên Slack và Telegram, hai nút trả lời trên WhatsApp, và link trong email và Teams mở về studio. Chỉ chủ của run và những người duyệt được liệt kê mới trả lời được, và chỉ một lần. Trả lời trong studio sẽ đóng yêu cầu ở mọi nơi. Xem Duyệt bởi người.
Kiểm tra
Nhật ký (bên phải input) hiện Hoàn thành với bốn bước: Start, Soạn trả lời, Duyệt trả lời và End.
6. Đọc trace¶
Chọn Soạn trả lời trên canvas hoặc trong nhật ký. Bước đó mở ra với
Input, Output, State diff và sự kiện Raw. State diff cho thấy
reply được bước này thêm vào.

7. Gọi qua HTTP¶
-
Mở ⋯ → API, nhập tên token, ví dụ
billing-service, rồi chọn Tạo token. Token (wft_…) và secret ký (whsec_…) chỉ hiện một lần; hãy sao chép ngay.
-
Khởi chạy run từ terminal. Thay
<wid>bằng id của workflow trên thanh địa chỉ, vàwft_…bằng token của bạn:curl -X POST http://localhost:5173/api/hooks/workflows/<wid>/runs \ -H "Authorization: Bearer wft_…" -H "Content-Type: application/json" \ -d '{"input": {"message": "Đơn A100 của tôi bị vỡ khi nhận. Tôi được hoàn tiền không?"}}'Phản hồi là
202kèmrun_idvà"status": "queued". -
Mở Chạy → Xem tất cả (tải lại trang trước). Run gọi qua API có nhãn API và trạng thái
waiting: nó dừng ở node Human, giống run chạy trong studio.

8. Đặt lịch chạy¶
- Mở ⋯ → Lịch chạy.
- Nhập tên và biểu thức cron
0 9 * * 1-5(9 giờ sáng các ngày trong tuần). Hộp thoại hiện trước các run kế tiếp theo múi giờ đã chọn. - Chọn Thêm lịch.
Bạn đã học được¶
- Workflow là một graph gồm các node có kiểu trên một state chung; node đọc
state bằng
{{state.field}}và ghi vào một Trường output (State và tham chiếu). - Mỗi lần lưu là một phiên bản, và mỗi run ghi lại phiên bản nó dùng (Phiên bản).
- Node Human dừng run ở trạng thái
waitingvà chạy tiếp từ checkpoint; yêu cầu duyệt có thể gửi cả tới chat hoặc email (Duyệt bởi người). - Mỗi bước của run giữ input, output và state diff (Run và trace).
- Token của workflow cho phép dịch vụ khác khởi chạy run, còn lịch chạy khởi chạy theo thời gian biểu (API trigger, Lịch chạy).
Tiếp theo¶
- Thêm model: Nhà cung cấp LLM.
- Rẽ nhánh theo quyết định bằng node Condition: Các loại node.
- Lưu test case với input, câu trả lời Human và những gì run phải cho ra: Kiểm thử workflow.
- Xem workflow dưới dạng Python LangGraph và chạy nó độc lập: Xuất ra Python.
- Gửi yêu cầu duyệt tới Slack, Telegram, WhatsApp, email hoặc Teams: Kênh duyệt.
- Chạy đủ stack với Postgres, Redis và worker: Triển khai bằng Compose.