Skip to content
🔗 分享本题
查看我的学习进度 →

ReAct 局限与修复动漫知识图:上下文漂移、多步延迟和规划执行耦合,分别由状态摘要、并行终止和先规划再校验治理

记忆点:ReAct 循环可用,但状态、延迟和权限要由系统治理。

💡 答案要点

ReAct三大核心缺陷:

缺陷1:上下文漂移(Context Drift)

问题:多轮推理时中间步骤累积 → 早期关键信息被稀释

示例:
第1轮:检索到重要上下文A
第5轮:A被埋在第500行token里 → 模型"忘记"了
结果:推理正确率从85% → 40%(5轮后)

解决方案:

python
# 方法1:关键信息摘要回写
class ReActWithMemory:
    def __init__(self):
        self.key_info = []  # 提取关键信息
    
    def step(self, observation):
        # 每次推理后提取关键信息
        summary = llm.generate(f"提取本步关键信息:{observation}")
        self.key_info.append(summary)
        
        # 下次推理时把关键信息放回上下文
        context = "关键信息:" + ";".join(self.key_info[-3:])
        return context

# 方法2:定期重置
if len(steps) > 5:
    # 每5步做一次摘要压缩
    compressed = summarize_history(steps)
    steps = [compressed]

缺陷2:高延迟(每步都是一次LLM调用)

问题:10步ReAct = 10次LLM调用 = 10x延迟

优化方案:
- 并行检索:Thought步同时发出多个检索查询
- 批量Action:Action步可以批量调用工具(vLLM投机采样思路)
- 提前终止:置信度高时直接输出,不走完全部步数

解决方案:

python
# 并行Action优化
class ParallelReAct:
    def think(self, state):
        # 单次LLM调用生成多个候选Action
        actions = llm.generate(
            f"为这个问题生成3个可能的解决动作",
            n=3  # 一次生成多个
        )
        # 并行执行(如果工具支持)
        results = asyncio.gather(*[
            execute_tool(a) for a in actions
        ])
        # 评估选择最优
        best = evaluate(results)

缺陷3:规划执行耦合(Plan-Execution Coupling)

问题:Thought和Action强耦合 → 推理错误会传导到执行

示例:
错误思考:"我需要查天气,因为要决定穿什么" → Action: search_weather
实际:用户问的是"明天北京冷不冷" → 检索结果完全跑偏

解决方案:

python
# Plan-and-Solve:解耦规划与执行
class PlanAndSolve:
    def plan(self, task):
        # 第一步:只做规划(不执行)
        plan = llm.generate(f"分解任务为步骤:{task}")
        # 规划审查
        if not validate_plan(plan):
            return replan(task)  # 规划不对就重规划
        # 第二步:执行计划
        return execute(plan)

# 关键:规划错误可以在执行前发现,而不是执行后才发现

工程实践总结:

规避策略适用场景效果
关键信息摘要回写多轮对话/长任务减少漂移60%
定期重置/压缩历史超长推理链保持上下文清晰
并行Action工具调用延迟敏感延迟降低50%
Plan-and-Solve复杂任务分解减少规划执行耦合
提前终止简单任务延迟降低40%

面试话术:

"ReAct 的常见风险是上下文膨胀、循环、错误观察传播和逐步调用延迟。可以用结构化状态、步骤/预算上限、工具结果校验和可更新计划治理;只有互不依赖且无冲突的动作才并行。摘要也可能丢信息,因此要保留关键事实来源,并用任务集比较成功率、成本与尾延迟。"