diff --git a/backend/app/main_graph/graph_builder.py b/backend/app/main_graph/graph_builder.py deleted file mode 100644 index 64ec787..0000000 --- a/backend/app/main_graph/graph_builder.py +++ /dev/null @@ -1,83 +0,0 @@ -""" -LangGraph 状态图构建模块 - 精简版,仅负责组装图 -所有节点逻辑已拆分到独立模块 -""" - -from langchain_core.language_models import BaseLLM -from app.main_graph.graph import StateGraph, START, END -from app.main_graph.state import MessagesState, GraphContext -from .nodes import ( - should_continue, - create_llm_call_node, - create_tool_call_node, - create_retrieve_memory_node, - create_summarize_node, - finalize_node, -) -from app.main_graph.nodes.memory_trigger import memory_trigger_node, set_mem0_client -from app.memory import Mem0Client - - -class GraphBuilder: - """LangGraph 状态图构建器 - 仅负责组装图""" - - def __init__(self, llm: BaseLLM, tools: list, tools_by_name: dict): - """ - 初始化构建器 - - Args: - llm: 大语言模型实例 - tools: 工具列表 - tools_by_name: 名称到工具函数的映射 - """ - self.llm = llm - self.tools = tools - self.tools_by_name = tools_by_name - - # ⭐ 创建 Mem0 客户端(懒加载,首次使用时初始化) - self.mem0_client = Mem0Client(llm) - - def build(self) -> StateGraph: - """ - 构建未编译的状态图 - - Returns: - StateGraph 实例 - """ - # 注入全局客户端 - set_mem0_client(self.mem0_client) - - builder = StateGraph(MessagesState, context_schema=GraphContext) - - # ⭐ 通过工厂函数创建节点(依赖注入) - retrieve_memory_node = create_retrieve_memory_node(self.mem0_client) - llm_call_node = create_llm_call_node(self.llm, self.tools) - tool_call_node = create_tool_call_node(self.tools_by_name) - summarize_node = create_summarize_node(self.mem0_client) - - # 添加节点 - builder.add_node("retrieve_memory", retrieve_memory_node) - builder.add_node("memory_trigger", memory_trigger_node) - builder.add_node("llm_call", llm_call_node) - builder.add_node("tool_node", tool_call_node) - builder.add_node("summarize", summarize_node) - builder.add_node("finalize", finalize_node) - - # 添加边 - builder.add_edge(START, "retrieve_memory") - builder.add_edge("retrieve_memory", "memory_trigger") - builder.add_edge("memory_trigger", "llm_call") - builder.add_conditional_edges( - "llm_call", - should_continue, - { - "tool_node": "tool_node", - "summarize": "summarize", - "finalize": "finalize" - } - ) - builder.add_edge("tool_node", "llm_call") - builder.add_edge("summarize", "finalize") - builder.add_edge("finalize", END) - - return builder \ No newline at end of file