mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-06 23:40:21 +08:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
from langgraph.graph import StateGraph, START, END
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
from .types import State
|
|
from .nodes import (
|
|
coordinator_node,
|
|
planner_node,
|
|
reporter_node,
|
|
research_team_node,
|
|
researcher_node,
|
|
coder_node,
|
|
human_feedback_node,
|
|
)
|
|
|
|
|
|
def _build_base_graph():
|
|
"""Build and return the base state graph with all nodes and edges."""
|
|
builder = StateGraph(State)
|
|
builder.add_edge(START, "coordinator")
|
|
builder.add_node("coordinator", coordinator_node)
|
|
builder.add_node("planner", planner_node)
|
|
builder.add_node("reporter", reporter_node)
|
|
builder.add_node("research_team", research_team_node)
|
|
builder.add_node("researcher", researcher_node)
|
|
builder.add_node("coder", coder_node)
|
|
builder.add_node("human_feedback", human_feedback_node)
|
|
builder.add_edge("reporter", END)
|
|
return builder
|
|
|
|
|
|
def build_graph_with_memory():
|
|
"""Build and return the agent workflow graph with memory."""
|
|
# use persistent memory to save conversation history
|
|
# TODO: be compatible with SQLite / PostgreSQL
|
|
memory = MemorySaver()
|
|
|
|
# build state graph
|
|
builder = _build_base_graph()
|
|
return builder.compile(checkpointer=memory)
|
|
|
|
|
|
def build_graph():
|
|
"""Build and return the agent workflow graph without memory."""
|
|
# build state graph
|
|
builder = _build_base_graph()
|
|
return builder.compile()
|
|
|
|
|
|
graph = build_graph()
|