彻底重构状态系统:整合所有旧状态到 MainGraphState,修复所有节点
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m35s

This commit is contained in:
2026-05-01 23:20:31 +08:00
parent 9a58eb8e6d
commit 9386b9fa7a
7 changed files with 155 additions and 193 deletions

View File

@@ -10,17 +10,9 @@ from app.main_graph.graph import add_messages
from langchain_core.messages import BaseMessage
# ========== 兼容旧代码的类型 ==========
class MessagesState(TypedDict):
"""旧的MessagesState类型保留兼容性"""
messages: Annotated[Sequence[BaseMessage], add_messages]
class GraphContext(TypedDict):
"""旧的GraphContext类型保留兼容性"""
llm_calls: int
memory_context: str
system_prompt: str
# ========== 兼容性注释(旧代码已移除,状态已整合到 MainGraphState ==========
# 旧的 MessagesState 和 GraphContext 已完全整合到 MainGraphState
# 不再需要单独的类型定义
# ========== 新的类型 ==========
@@ -57,49 +49,52 @@ class ErrorRecord:
@dataclass
class MainGraphState:
"""
主图状态 - React 循环推理版本
主图状态 - 整合了旧 MessagesState 的所有字段
包含:
1. 旧代码的MessagesState兼容性字段
2. React 推理控制字段
3. 循环和错误处理
4. 子图结果占位
5. 用户信息
- 旧代码的 MessagesState 兼容性字段
- React 推理控制字段
- 循环和错误处理
- 子图结果占位
- 用户信息
"""
# ========== 兼容性字段(保留旧的MessagesState ==========
# ========== MessagesState 兼容性字段 ==========
messages: Annotated[Sequence[BaseMessage], add_messages] = field(default_factory=list)
llm_calls: int = 0
memory_context: str = ""
system_prompt: str = ""
turns_since_last_summary: int = 0 # 新增:来自旧状态
last_token_usage: Dict[str, Any] = field(default_factory=dict) # 新增:来自旧状态
last_elapsed_time: float = 0.0 # 新增:来自旧状态
# ========== 主图控制字段 ==========
user_query: str = "" # 用户当前查询
current_action: CurrentAction = CurrentAction.NONE # 当前操作
intent_confidence: float = 0.0 # 意图识别置信度
user_query: str = ""
current_action: CurrentAction = CurrentAction.NONE
intent_confidence: float = 0.0
# ========== React 推理专用字段 ==========
reasoning_step: int = 0 # 当前推理步数
max_steps: int = 40 # 最大推理步数
last_action: str = "" # 上一步动作
reasoning_history: List[Dict[str, Any]] = field(default_factory=list) # 推理历史
reasoning_step: int = 0
max_steps: int = 40
last_action: str = ""
reasoning_history: List[Dict[str, Any]] = field(default_factory=list)
# ========== RAG 相关字段 ==========
rag_context: str = "" # RAG 检索到的上下文
rag_retrieved: bool = False # 是否已经检索过
rag_docs: List[Dict[str, Any]] = field(default_factory=list) # 检索到的文档
rag_context: str = ""
rag_retrieved: bool = False
rag_docs: List[Dict[str, Any]] = field(default_factory=list)
# ========== 联网搜索相关字段 ⭐ 新增 ==========
web_search_results: List[str] = field(default_factory=list) # 联网搜索结果
# ========== 联网搜索相关字段 ==========
web_search_results: List[str] = field(default_factory=list)
# ========== 错误处理字段 ==========
errors: List[ErrorRecord] = field(default_factory=list) # 错误列表
current_error: Optional[ErrorRecord] = None # 当前错误
retry_action: Optional[str] = None # 重试动作
errors: List[ErrorRecord] = field(default_factory=list)
current_error: Optional[ErrorRecord] = None
retry_action: Optional[str] = None
# ========== 子图结果占位 ==========
news_result: Optional[Dict[str, Any]] = None # 资讯子图结果
dictionary_result: Optional[Dict[str, Any]] = None # 词典子图结果
contact_result: Optional[Dict[str, Any]] = None # 通讯录子图结果
news_result: Optional[Dict[str, Any]] = None
dictionary_result: Optional[Dict[str, Any]] = None
contact_result: Optional[Dict[str, Any]] = None
# ========== 用户信息 ==========
user_id: str = ""