Files
ailine/backend/app/main_graph/main_graph_builder.py
root 6dfa9f572e
All checks were successful
构建并部署 AI Agent 服务 / deploy (push) Successful in 5m24s
重构:清理废弃代码 + 优化 Agent 架构
主要变更:
- 删除 deprecated 文件夹(intent/hybrid_router/rag_nodes 等)
- 删除 intent_classifier.py(未使用)
- 删除 subgraph_wrapper.py(死代码)
- 重构 agent.py:简化工厂函数,支持动态模型切换
- 重构 prompts.py:添加信息获取优先级、思维链要求、工具调用约束
- 优化 tools:统一位置,rag_search 返回置信度评估
- 新增 RAG 置信度评估:embedding(25%) + rerank(25%) + LLM(50%)
- 添加循环检测:防止工具无限重复调用

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 00:29:12 +08:00

83 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
极简 Agent 主图 - 简化版本!
因为完整的 ReAct 循环已经在 agent.py 里了!
"""
from langgraph.graph import StateGraph, START, END
from backend.app.main_graph.state import AgentState
from backend.app.main_graph.nodes.memory_trigger import memory_trigger_node, set_mem0_client
from backend.app.main_graph.nodes.agent import create_agent_node
from backend.app.logger import info
def build_agent_graph(
chat_services: dict,
mem0_client=None,
max_steps: int = 10
):
"""
构建简化的 Agent 图ReAct 循环在 agent 节点内)
Args:
chat_services: 模型服务字典
mem0_client: 记忆客户端(可选)
max_steps: 最大步数限制
Returns:
构建好的 StateGraph未编译
"""
# ========== 设置全局客户端 ==========
if mem0_client:
set_mem0_client(mem0_client)
# ========== 1. 初始化节点:重置步数 ==========
async def init_state_node(state: AgentState):
info("[Init State] 初始化状态,重置步数")
return {
"current_step": 0,
"max_steps": max_steps
}
# ========== 2. 记忆节点(可选) ==========
retrieve_memory_node = None
if mem0_client:
try:
from ..nodes.retrieve_memory import create_retrieve_memory_node
retrieve_memory_node = create_retrieve_memory_node(mem0_client)
except Exception as e:
info(f"[Graph Builder] 记忆节点初始化失败: {e}")
# ========== 3. Agent 节点(包含完整 ReAct 循环,支持动态模型切换) ==========
agent_node_fn = create_agent_node(chat_services)
# ========== 4. 完成节点 ==========
async def finalize_node_simple(state: AgentState):
info("[Finalize] 进入完成节点")
return {}
# ========== 5. 构建图 ==========
graph = StateGraph(AgentState)
graph.add_node("init_state", init_state_node)
if retrieve_memory_node:
graph.add_node("retrieve_memory", retrieve_memory_node)
graph.add_node("memory_trigger", memory_trigger_node)
graph.add_node("agent", agent_node_fn)
graph.add_node("finalize", finalize_node_simple)
# ========== 6. 边的连接 ==========
graph.add_edge(START, "init_state")
if retrieve_memory_node:
graph.add_edge("init_state", "retrieve_memory")
graph.add_edge("retrieve_memory", "memory_trigger")
else:
graph.add_edge("init_state", "memory_trigger")
graph.add_edge("memory_trigger", "agent")
graph.add_edge("agent", "finalize")
graph.add_edge("finalize", END)
info("✅ [Graph Builder] 简化 Agent 图构建完成ReAct 在节点内)")
return graph