2026-04-21 11:02:16 +08:00
|
|
|
|
"""
|
2026-05-07 00:48:17 +08:00
|
|
|
|
极简 Agent 状态定义 - 只保留真正需要的字段
|
|
|
|
|
|
|
|
|
|
|
|
保留的核心字段:
|
|
|
|
|
|
- messages: 对话历史(LangGraph 必需)
|
|
|
|
|
|
- user_id: 用户标识
|
|
|
|
|
|
- 记忆相关:turns_since_last_summary, memory_context
|
|
|
|
|
|
- 安全限制:current_step, max_steps
|
|
|
|
|
|
- 统计:llm_calls, last_token_usage, last_elapsed_time
|
2026-04-21 11:02:16 +08:00
|
|
|
|
"""
|
|
|
|
|
|
|
2026-05-08 01:29:55 +08:00
|
|
|
|
from typing import Annotated, Sequence, Optional, Dict, Any, List
|
2026-04-25 18:29:23 +08:00
|
|
|
|
from dataclasses import dataclass, field
|
2026-05-05 17:30:55 +08:00
|
|
|
|
from langgraph.graph import add_messages
|
2026-04-25 18:29:23 +08:00
|
|
|
|
from langchain_core.messages import BaseMessage
|
2026-04-21 11:02:16 +08:00
|
|
|
|
|
2026-04-25 18:29:23 +08:00
|
|
|
|
|
2026-05-06 13:34:32 +08:00
|
|
|
|
@dataclass
|
2026-05-07 00:48:17 +08:00
|
|
|
|
class AgentState:
|
|
|
|
|
|
"""Agent 状态"""
|
2026-05-06 15:10:33 +08:00
|
|
|
|
|
2026-05-07 00:48:17 +08:00
|
|
|
|
# ========== 核心持久化字段(必需) ==========
|
2026-04-25 18:29:23 +08:00
|
|
|
|
messages: Annotated[Sequence[BaseMessage], add_messages] = field(default_factory=list)
|
2026-05-06 15:10:33 +08:00
|
|
|
|
user_id: str = ""
|
|
|
|
|
|
|
2026-05-07 00:48:17 +08:00
|
|
|
|
# ========== 安全限制字段(防止无限循环) ==========
|
|
|
|
|
|
max_steps: int = 10
|
|
|
|
|
|
current_step: int = 0
|
2026-04-26 11:14:04 +08:00
|
|
|
|
|
2026-05-07 00:48:17 +08:00
|
|
|
|
# ========== 记忆相关字段(保留) ==========
|
|
|
|
|
|
turns_since_last_summary: int = 0
|
|
|
|
|
|
memory_context: str = ""
|
2026-04-26 11:14:04 +08:00
|
|
|
|
|
2026-05-07 00:48:17 +08:00
|
|
|
|
# ========== 统计字段(保留) ==========
|
2026-05-06 15:10:33 +08:00
|
|
|
|
llm_calls: int = 0
|
|
|
|
|
|
last_token_usage: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
last_elapsed_time: float = 0.0
|
2026-05-08 01:29:55 +08:00
|
|
|
|
|
|
|
|
|
|
# ========== 新增字段: 工具调用历史 ==========
|
|
|
|
|
|
tool_call_history: List[dict] = field(default_factory=list)
|
|
|
|
|
|
tool_result_history: List[str] = field(default_factory=list)
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 新增字段: 停止控制 ==========
|
|
|
|
|
|
stop: bool = False
|
|
|
|
|
|
stop_reason: str = ""
|
|
|
|
|
|
|
|
|
|
|
|
# ========== 新增字段: 本轮使用的工具 ==========
|
|
|
|
|
|
tools_used: List[str] = field(default_factory=list)
|