Khái niệm¶
Workflow¶
Workflow là một tài liệu JSON: tên, state schema, các node và các edge.
{"name": "Support triage",
"state": [{"name": "message", "type": "string"}, {"name": "answer", "type": "string"}],
"nodes": [{"id": "n1", "type": "llm", "position": {"x": 0, "y": 0},
"data": {"label": "Reply", "model": "gpt-4o-mini",
"prompt": "Hi {{state.message}}", "output_field": "answer"}}],
"edges": [{"id": "e1", "source": "start", "target": "n1"}]}
Backend biên dịch JSON này thành StateGraph của LangGraph: mỗi node thành
một node của graph, mỗi edge thành một bước chuyển, node Condition thành
conditional edge. JSON là nguồn sự thật duy nhất; trình soạn thảo chỉ ghi ra
JSON đó.
State¶
State là một bản ghi có kiểu, dùng chung cho mọi node. Node đọc trường qua tham
chiếu {{state.field}} và ghi kết quả vào một output_field. Khi nhiều nhánh
song song cùng ghi một trường, trường đó cần reducer: append cho danh sách,
merge cho object, add cho số. Mặc định là replace. Xem
State và tham chiếu.
Node và edge¶
| Nhóm | Node |
|---|---|
| Gọi model | LLM, Decision (Jev) |
| Dữ liệu và công cụ | Tool (function, HTTP hoặc code Python), MCP tool, Retriever, Send email |
| Điều khiển luồng | Condition, For each, Join, Subgraph |
| Con người | Human |
| Biên | Start, End |
Một node có edge tới nhiều đích sẽ chạy các nhánh trong cùng một superstep. Condition chọn một edge đi ra theo nhãn của edge. Xem Các loại node.
Run¶
Run là một run graph đã lưu (hoặc chưa lưu) với input JSON. Run phát ra
các sự kiện như run_started, node_started, node_token, node_finished,
run_waiting, run_paused, error và run_finished. Trạng thái cuối là
ok, error, cancelled, timeout và paused; run đang chờ ở node Human
là waiting, chờ quá lâu thì thành expired.
Superstep¶
LangGraph chạy graph theo từng superstep. Mọi node đã sẵn sàng chạy trong cùng một superstep; phần ghi của chúng được reducer gộp lại trước superstep kế tiếp. Nút Một bước trong trình soạn thảo chạy đúng một superstep rồi dừng.
Checkpoint¶
Sau mỗi superstep, state của run được lưu thành checkpoint trong database. Node Human, một bước đang dừng, worker bị sập hay server khởi động lại đều chạy tiếp từ checkpoint cuối, không chạy lại từ đầu.
Side effect gần như đúng một lần¶
Mỗi run LLM hoặc Tool có một idempotency key cố định theo run, node và
lượt lặp. Node có side effect đã xong được ghi vào sổ kết quả, nên run được
khôi phục sẽ dùng lại kết quả (reused trong trace) thay vì gọi dịch vụ lần
nữa. HTTP công cụ cũng gửi Idempotency-Key. Xem
Kiến trúc.
Phiên bản¶
Mỗi lần lưu có thay đổi graph sẽ ghi một phiên bản bất biến. Run ghi lại phiên bản nó đã dùng. Xem Phiên bản.