Agent的决策模糊
文章目录
- Langchian Agent内部记忆:
- 信息过载
- LLM注意力有限的解释:
- 上下文窗口长度很大,会有这种问题么
- 对比langGraph
Langchian Agent内部记忆:
- 官方 ReAct 内部机制(铁律)
LangChain 的 AgentExecutor 在一次 invoke () 内部:
会创建一个唯一的记忆列表
每一步 Thought → Action → Observation 都是 append 追加
绝对不会清空、不会覆盖、不会重置
记忆从第一步到最后一步完整保留
信息过载
- 任务复杂→ 需要多轮工具调用
- 每一步 Thought/Action/Observation 都追加到上下文→ 上下文越来越长
- LLM 注意力有限(长文本能力天然弱)→ 早期关键步骤被淹没
- 模型看不到“我已经做过这件事”→ 再次推理:我应该做 XX
- 重复调用同一工具→ 表现为:死循环 / 重复动作 / 逻辑倒退
假设任务需要3次工具调用: 第1轮 LLM(第一次调用) 塞:system+用户问题 输出:Thought→Action(工具1) 调用工具 →Observation1第2轮 LLM(第二次调用) 塞:system+用户问题+历史1完整内容+Observation1输出:Thought→Action(工具2) 调用工具 →Observation2第3轮 LLM(第三次调用) 塞:system+用户问题+历史1+历史2+Observation2输出:Thought→Action(工具3) 调用工具 →Observation3第4轮 LLM(第四次调用) 塞:system+用户问题+历史1+2+3+Observation3输出:Thought→ 结束,给答案比如:
[1.SystemPrompt]你是一个ReAct智能体,按照Thought→Action→Observation思考。[2.UserQuery]帮我定位服务器告警原因。[3.完整历史轨迹(所有步骤)]Thought:我需要先查CPU占用Action:cpu_tool()Observation:CPU100%Thought:我需要查哪个进程占用高Action:process_tool()Observation:java 进程占用90%[4.最新Observation已经包含在历史里]请继续下一步:Thought:LLM注意力有限的解释:
LLM 每看一个字 /token,都会给一个注意力分数:
重要 → 分数高
不重要 → 分数低
上下文越长:
每个 token 的平均分数被摊薄
早期关键信息的分数变得极低
模型相当于 “看不见” 那些早期内容
不是不存在,是权重太低,被忽略了。
上下文窗口长度很大,会有这种问题么
上下文窗口再大,LLM 依然会「看不过来」,甚至更严重。
上下文长度 ≠ 注意力质量。
窗口再大,LLM 依然有「长文本遗忘 / 长程注意力弱」的问题。
越大窗口,反而越容易前面全看不见。
对比langGraph
ReAct: 全靠 LLM 看完整历史 → 注意力扛不住
LangGraph: 把关键信息存在 State 里 → 不让 LLM 自己去翻历史
这就是为什么现代 Agent 都抛弃纯 ReAct,转向状态驱动。
