49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
"""
|
||
极简 Agent 状态定义 - 只保留真正需要的字段
|
||
|
||
保留的核心字段:
|
||
- messages: 对话历史(LangGraph 必需)
|
||
- user_id: 用户标识
|
||
- 记忆相关:turns_since_last_summary, memory_context
|
||
- 安全限制:current_step, max_steps
|
||
- 统计:llm_calls, last_token_usage, last_elapsed_time
|
||
"""
|
||
|
||
from typing import Annotated, Sequence, Optional, Dict, Any, List
|
||
from dataclasses import dataclass, field
|
||
from langgraph.graph import add_messages
|
||
from langchain_core.messages import BaseMessage
|
||
|
||
|
||
@dataclass
|
||
class AgentState:
|
||
"""Agent 状态"""
|
||
|
||
# ========== 核心持久化字段(必需) ==========
|
||
messages: Annotated[Sequence[BaseMessage], add_messages] = field(default_factory=list)
|
||
user_id: str = ""
|
||
|
||
# ========== 安全限制字段(防止无限循环) ==========
|
||
max_steps: int = 10
|
||
current_step: int = 0
|
||
|
||
# ========== 记忆相关字段(保留) ==========
|
||
turns_since_last_summary: int = 0
|
||
memory_context: str = ""
|
||
|
||
# ========== 统计字段(保留) ==========
|
||
llm_calls: int = 0
|
||
last_token_usage: Dict[str, Any] = field(default_factory=dict)
|
||
last_elapsed_time: float = 0.0
|
||
|
||
# ========== 新增字段: 工具调用历史 ==========
|
||
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)
|