2026-04-21 11:02:16 +08:00
|
|
|
|
"""
|
2026-04-25 18:29:23 +08:00
|
|
|
|
主图状态定义 - 扩展版
|
|
|
|
|
|
Main Graph State Definition - Extended
|
2026-04-21 11:02:16 +08:00
|
|
|
|
"""
|
|
|
|
|
|
|
2026-04-25 18:29:23 +08:00
|
|
|
|
from enum import Enum, auto
|
|
|
|
|
|
from typing import Optional, Dict, Any, Annotated, Sequence, TypedDict
|
|
|
|
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
from langgraph.graph import add_messages
|
|
|
|
|
|
from langchain_core.messages import BaseMessage
|
2026-04-21 11:02:16 +08:00
|
|
|
|
|
2026-04-25 18:29:23 +08:00
|
|
|
|
|
|
|
|
|
|
# ========== 兼容旧代码的类型 ==========
|
2026-04-21 11:02:16 +08:00
|
|
|
|
class MessagesState(TypedDict):
|
2026-04-25 18:29:23 +08:00
|
|
|
|
"""旧的MessagesState类型(保留兼容性)"""
|
|
|
|
|
|
messages: Annotated[Sequence[BaseMessage], add_messages]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GraphContext(TypedDict):
|
|
|
|
|
|
"""旧的GraphContext类型(保留兼容性)"""
|
2026-04-21 11:02:16 +08:00
|
|
|
|
llm_calls: int
|
|
|
|
|
|
memory_context: str
|
2026-04-25 18:29:23 +08:00
|
|
|
|
system_prompt: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 新的类型 ==========
|
|
|
|
|
|
class CurrentAction(Enum):
|
|
|
|
|
|
"""主图当前操作类型"""
|
|
|
|
|
|
NONE = auto()
|
|
|
|
|
|
GENERAL_CHAT = auto()
|
|
|
|
|
|
NEWS_ANALYSIS = auto()
|
|
|
|
|
|
DICTIONARY = auto()
|
|
|
|
|
|
CONTACT = auto()
|
|
|
|
|
|
|
2026-04-21 11:02:16 +08:00
|
|
|
|
|
|
|
|
|
|
@dataclass
|
2026-04-25 18:29:23 +08:00
|
|
|
|
class MainGraphState:
|
|
|
|
|
|
"""
|
|
|
|
|
|
主图状态 - 兼容旧代码 + 新增子图功能
|
|
|
|
|
|
|
|
|
|
|
|
包含:
|
|
|
|
|
|
1. 旧代码的MessagesState兼容性字段
|
|
|
|
|
|
2. 主图控制字段
|
|
|
|
|
|
3. 子图结果占位
|
|
|
|
|
|
4. 用户信息
|
|
|
|
|
|
"""
|
|
|
|
|
|
# ========== 兼容性字段(保留旧的MessagesState) ==========
|
|
|
|
|
|
messages: Annotated[Sequence[BaseMessage], add_messages] = field(default_factory=list)
|
|
|
|
|
|
llm_calls: int = 0
|
|
|
|
|
|
memory_context: str = ""
|
|
|
|
|
|
system_prompt: str = ""
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 主图控制字段 ==========
|
|
|
|
|
|
user_query: str = "" # 用户当前查询
|
|
|
|
|
|
current_action: CurrentAction = CurrentAction.NONE # 当前操作
|
|
|
|
|
|
intent_confidence: float = 0.0 # 意图识别置信度
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 子图结果占位 ==========
|
|
|
|
|
|
news_result: Optional[Dict[str, Any]] = None # 资讯子图结果
|
|
|
|
|
|
dictionary_result: Optional[Dict[str, Any]] = None # 词典子图结果
|
|
|
|
|
|
contact_result: Optional[Dict[str, Any]] = None # 通讯录子图结果
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 用户信息 ==========
|
|
|
|
|
|
user_id: str = ""
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 执行状态 ==========
|
|
|
|
|
|
current_phase: str = "init"
|
|
|
|
|
|
error_message: str = ""
|
|
|
|
|
|
final_result: str = ""
|
|
|
|
|
|
success: bool = False
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 元数据 ==========
|
|
|
|
|
|
start_time: Optional[str] = None
|
|
|
|
|
|
end_time: Optional[str] = None
|
|
|
|
|
|
debug_info: Dict[str, Any] = field(default_factory=dict)
|