Agent死循环
·
文章目录
什么是agent死循环
Agent 死循环,是指智能体在推理 - 执行 - 观察过程中,因决策固定、历史无效或无法判断终止,陷入无限重复同一动作的闭环,无法推进任务也无法自动结束。
导致Agent死循环的原因:
- 看不见历史(注意力 / 记忆问题)
- 不知道停(Prompt / 终止条件)
- 环境不变(工具返回固定)
如何解决Agent死循环问题:
1.加 max_iterations 强制终止
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
max_iterations=5, # 👈 这里!框架参数,不是 Prompt
verbose=True
)
2.Prompt 强化终止规则
- Prompt 里的停止规则:软限制,靠 LLM 自觉遵守(可能不听)
- max_iterations:硬限制,框架强制生效,绝对有效
3.加 重复步骤检测(连续相同 Action 直接停)
由代码层实时记录每一步的工具调用名称和参数。
每生成新动作时,与上一步动作进行比对:
如果工具名和参数连续 2~3 次完全相同,就判定为死循环,
代码会直接强制终止执行,不再继续调用工具。
这是一种硬保障机制,不依赖 LLM 自身判断,非常可靠
# 记录历史动作(工具名 + 参数)
action_history = []
# 假设这是 Agent 每一步生成的 Action
def check_and_run_action(tool_name, tool_param):
global action_history
# 1. 检测是否和上一步重复
if len(action_history) > 0:
last_tool, last_param = action_history[-1]
if tool_name == last_tool and tool_param == last_param:
# 连续重复 → 直接终止!
print("检测到连续重复Action,判定死循环,强制停止!")
return False
# 2. 不重复 → 记录历史 & 执行
action_history.append((tool_name, tool_param))
print(f"执行工具:{tool_name},参数:{tool_param}")
return True
# ======================
# 示例演示
# ======================
# 第1步:正常
check_and_run_action("search", "CPU 告警")
# 第2步:重复!触发死循环检测
check_and_run_action("search", "CPU 告警")
4. 历史压缩 / 摘要,减少长上下文注意力压力
5.使用 LangGraph 状态管理,不依赖全量历史
更多推荐



所有评论(0)