Files
ailine/backend/app/main_graph/state.py
2026-05-08 01:29:55 +08:00

49 lines
1.6 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 状态定义 - 只保留真正需要的字段
保留的核心字段:
- 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)