AI系列面试题6:说一下AI Agent 三种核心方法论:ReAct、Plan-and-Solve 与 Reflection
AI Agent 三种核心方法论:ReAct、Plan-and-Solve 与 Reflection
AI Agent 是能够自主感知环境、做出决策并执行行动的智能体。其核心方法论主要有三种:ReAct、Plan-and-Solve 和 Reflection。下面分别介绍,并辅以流程图和代码示例。
1. ReAct(Reasoning + Acting)
核心思想:将推理(Reasoning)与行动(Acting)交错进行。Agent 在每一步先思考当前状态和下一步计划(推理),然后执行一个动作(如调用工具、搜索信息),再根据结果继续推理。
流程图:
[初始状态] → [推理: 思考下一步] → [行动: 执行动作] → [观察结果] → [推理: 更新计划] → ... → [最终答案]
示例代码(伪代码):
def react_agent(question):
context = []
while not solved:
# 推理:生成思考步骤
thought = llm.generate_thought(question, context)
# 行动:根据思考选择动作
action = llm.choose_action(thought)
# 执行动作,得到观察
observation = execute_action(action)
# 将思考、行动、观察加入上下文
context.append((thought, action, observation))
return final_answer
实例:
- 用户问:“今天北京天气如何?”
- Agent 推理:“我需要查询天气API,需要城市名和日期。”
- 行动:调用天气API(参数:北京,今天)
- 观察:返回“晴,25°C”
- 推理:“已获得信息,可以回答。”
- 输出:“北京今天晴,25°C。”
2. Plan-and-Solve
核心思想:先制定完整计划(Plan),然后逐步执行(Solve)。计划阶段将复杂任务分解为子步骤,执行阶段按顺序完成,可能根据中间结果调整计划。
流程图:
[任务] → [制定计划: 分解子步骤] → [执行步骤1] → [执行步骤2] → ... → [执行步骤N] → [最终答案]
示例代码:
def plan_and_solve(task):
# 计划阶段
plan = llm.generate_plan(task) # 例如:["搜索资料", "整理信息", "撰写报告"]
context = {}
for step in plan:
# 执行每个步骤
result = execute_step(step, context)
context[step] = result
# 综合结果
final = llm.synthesize(context)
return final
实例:
- 任务:“写一篇关于AI Agent的博客”
- 计划:
1. 搜索AI Agent定义和最新进展
2. 阅读并整理关键点
3. 撰写博客大纲
4. 填充内容
5. 校对和发布
- 执行:依次完成每个步骤,最终输出博客。
3. Reflection
核心思想:Agent 在执行过程中或执行后,对自身行为进行反思(Reflection),评估结果并改进后续行动。通常包含自我批评、错误修正或策略优化。
流程图:
[行动] → [观察结果] → [反思: 评估是否成功] → [如果失败: 调整策略] → [再次行动] → ... → [成功]
示例代码:
def reflection_agent(task):
max_attempts = 3
for attempt in range(max_attempts):
action = llm.generate_action(task)
result = execute(action)
# 反思
reflection = llm.reflect(task, action, result)
if reflection['success']:
return result
else:
# 根据反思调整任务描述或策略
task = reflection['improved_task']
return None
实例:
- 任务:“计算 1234 * 5678”
- 行动:直接计算,得到结果 7006652
- 反思:检查计算过程,发现进位错误
- 调整:重新计算,得到正确结果 7006652(实际正确)
- 若仍错误,继续反思直到正确。
总结对比
| 方法论 | 特点 | 适用场景 |
|---|---|---|
| ReAct | 推理与行动交错,动态调整 | 需要实时信息交互的任务(如问答、搜索) |
| Plan-and-Solve | 先计划后执行,结构化分解 | 复杂多步骤任务(如写作、数据分析) |
| Reflection | 自我反思与修正,迭代优化 | 需要高准确性的任务(如数学计算、代码生成) |
实际应用中,常将三者结合,例如 ReAct 中加入反思机制,或 Plan-and-Solve 中每个步骤执行后反思。
评论
暂无已展示的评论。
发表评论(匿名)