Nhảy đến nội dung chính

Cơ bản về GraphBuilder

Trong LangGraph, bạn sẽ sử dụng một GraphBuilder để định nghĩa các bước (nodes), luồng xử lý (edges), điều kiện phân nhánh (routers), và điểm bắt đầu/kết thúc của một ứng dụng dựa trên LLM.

from langgraph.graph import StateGraph

builder = StateGraph(StateType)

Ở đây StateType là schema mô tả state (thường là TypedDict hoặc pydantic model).

Ví dụ

from typing import TypedDict, Literal

class DrinkState(TypedDict):
    preference: Literal["coffee", "tea", "unknown"]

1. builder.add_node(name, node_callable)

Thêm một bước xử lý (node) vào graph.

Cú pháp:

builder.add_node("tên_node", hàm_xử_lý)

Ví dụ

def ask_name(state):
    state["name"] = input("Tên bạn là gì? ")
    return state

builder.add_node("ask_name", ask_name)
2. builder.add_edge(from_node, to_node)

Tạo liên kết (đường đi) giữa hai node.

Cú pháp:
builder.add_edge("node_nguồn", "node_đích")

Ví dụ:

builder.add_edge("ask_name", "ask_preference")

 

3. builder.add_conditional_edges(from_router_node, conditions_dict)

Tạo đường đi có điều kiện (routing) từ một node tới nhiều node tùy thuộc vào kết quả của node đó.

Cú pháp:

builder.add_conditional_edges("router_node", {
    "kết_quả_1": "node_1",
    "kết_quả_2": "node_2",
    ...
})

Ví dụ:

builder.add_conditional_edges("router", {
    "coffee_node": "coffee_node",
    "tea_node": "tea_node",
    "fallback_node": "fallback_node"
})

=> Node "router" sẽ trả về một chuỗi (ví dụ "coffee_node"), và flow sẽ đi đến node tương ứng.

4. builder.set_entry_point(node_name)

Xác định điểm bắt đầu của graph.

Ví dụ

builder.set_entry_point("start")
5. builder.set_finish_point(node_name)

Đánh dấu node kết thúc, tức là sau node này thì flow dừng lại.

Có thể có nhiều node kết thúc!

Ví dụ

builder.set_finish_point("coffee_node")
builder.set_finish_point("tea_node")
6. builder.compile()

Biên dịch graph của bạn thành một CompiledGraph có thể chạy được.

Ví dụ

app = builder.compile()

Sau đó

app.invoke({"preference": "unknown"}
7. Tổng kết
HàmMô tả
add_node(name, node_fn)Thêm một bước xử lý đơn vào graph
add_edge(from_node, to_node)Tạo liên kết tuyến tính giữa 2 node
add_conditional_edges(name, mapping)Tạo node phân nhánh có điều kiện
set_entry_point(name)Xác định điểm bắt đầu của flow
set_finish_point(name)Xác định điểm kết thúc
add_branch(name, sub_graph)Thêm một graph phụ (dạng phân nhánh) vào một node
add_recursion(name, recursive_graph)Cho phép gọi đệ quy một graph con
compile()Biên dịch toàn bộ graph thành một ứng dụng chạy được
add_generator_node(name, generator_node)Thêm một node sử dụng generator (yield từng bước)
add_parallel_nodes(nodes: dict)Chạy nhiều node song song trong một bước
add_conditional_edges_with_default(name, conditions, default)Giống add_conditional_edges nhưng có nhánh mặc định
add_stateful_node(name, node_fn)Dùng khi node cần giữ trạng thái riêng biệt
add_async_node(name, async_node)Thêm node xử lý bất đồng bộ (async def)

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft