Plan-Act-Reflect 框架代表了LLM应用向更高层次智能迈进的方向。它通过引入:
- 前瞻性的规划(Plan)
- 有条理的执行(Act)
- 至关重要的自我修正(Reflect)
使得LLM能够处理那些不确定性高、路径长、易偏离目标的复杂任务。它将LLM从一个“反应式问题解决者”提升到了一个“主动式战略管理者”的高度,是构建真正自主和可靠的AI Agent的核心范式之一。
1. 来源
- Plan-Act-Reflect 这个术语在 2022-2023 年开始在开源社区和研究论文中出现。
早期灵感来自:
- 反思式推理(Reflective Reasoning):如 DeepMind 的 Reflexion 框架(Shinn et al., 2023),提出让 LLM 对自己的输出进行审查并改进。
- Chain-of-Thought (CoT):逐步推理的思想,要求模型显式地输出中间思路。
- ReAct 框架(Yao et al., 2022):结合 Reasoning(推理)与 Acting(行动),让模型在推理过程中调用工具。
- Meta-cognition(元认知):在认知科学中,指个体对自身思维过程的监控与调节,Plan-Act-Reflect 正是这种思想在 LLM Agent 中的体现。
研究论文:
- ReAct: Synergizing Reasoning and Acting in Language Models(Yao et al., 2022)
- Reflexion: Language Agents with Verbal Reinforcement Learning(Shinn et al., 2023)
- LLM+Planning 系列研究:将经典规划算法与 LLM 推理结合。
- Self-Refine(Madaan et al., 2023):让模型在生成后自我改进,类似 Reflect 阶段。
2. 概念
2.1. 概念
Plan-Act-Reflect 是一个让LLM像人类项目管理者一样工作的循环框架,它包含三个核心阶段:
- Plan(规划):首先,模型不会立即行动,而是为整个复杂任务创建一个高层次、分步的战略蓝图。
- Act(执行):然后,模型根据规划,一步步地执行具体的动作(调用工具),并收集结果。
- Reflect(反思):在执行过程中或遇到困难时,模型会暂停下来,评估当前进展,检查规划是否依然可行,并根据新获得的信息调整或重新制定规划。
这个框架的核心在于 “反思” 机制,它使Agent具备了自我监控和自我修正的能力。
2.2 与其他框架的关系
| 框架 | 特点 | 与 Plan-Act-Reflect 的关系 |
|---|---|---|
| ReAct | 推理 + 行动交替 | Plan-Act-Reflect 在 ReAct 基础上增加显式反思阶段 |
| Reflexion | 自我反思 + 记忆更新 | Plan-Act-Reflect 的 Reflect 阶段可融合 Reflexion 的记忆机制 |
| AutoGPT / BabyAGI | 自动任务循环 | 内部隐含 Plan-Act-Reflect,但通常由程序控制,不显式暴露给 LLM |
2.3. 和ReAct的关系
虽然ReAct已经很强大,但它在处理超长周期、需要多轮子任务协作的复杂问题时,可能会显得“短视”。
- ReAct 的“思考”是战术性的:它主要关注“下一步该做什么?”,其推理轨迹通常较短,是针对当前状况的即时反应。就像一个徒步者,只看着脚下几步路。
- Plan-Act-Reflect 的“规划”是战略性的:它要求模型先“俯瞰整个地图”,制定路线,然后在行走(执行)过程中不断查看地图(反思),确保自己没有偏离方向,并在遇到障碍时重新规划路线。
核心区别:
| 特性 | ReAct | Plan-Act-Reflect |
|---|---|---|
| 规划范围 | 短期,下一步动作 | 长期,整个任务蓝图 |
| 核心机制 | 推理-行动循环 | 规划-执行-反思循环 |
| 灵活性 | 高,随时可改变下一步 | 非常高,可中途修正整个战略 |
| 适用场景 | 需要逐步推理的中等复杂度任务 | 极其复杂、多步骤、易出错的大型任务 |
| 类比 | 解决问题的高手 | 项目经理/战略家 |
2.4. 实现框架
与ReAct类似,现代AI应用框架如 LangChain 和 AutoGen 都内置了对这种复杂循环模式的支持。
LangChain: 通过更高级的
Agent类型(如Plan-and-Execute Agent)来实现。它通常由两个“智能体”组成:- 规划者(Planner):一个LLM,负责接收用户请求并制定初始规划。
- 执行者(Executor):另一个LLM(或同一个),负责执行规划中的步骤,并在需要时请求规划者进行反思和重新规划。
- AutoGen: 通过创建多个具有不同角色的AI智能体来协作完成,其中一个智能体可以专门扮演“规划师”和“反思者”的角色。
3. 工作流程
3.1. 流程说明
这是一个持续运行的循环,其核心是计划的动态更新。
阶段一:计划 - 制定战略蓝图
- 目标:将宏大的、模糊的用户指令分解为一个清晰的、可执行的计划。
- 过程:模型生成一个步骤列表或一个高层次的任务描述。这个计划不是一成不变的,而是一个初始的、可调整的路线图。
示例(任务:开发一个简单的网页计算器):
初始计划:
- 设计用户界面(HTML):包含数字按钮、运算符按钮和显示框。
- 实现交互逻辑(JavaScript):处理按钮点击,执行计算。
- 添加样式(CSS):让计算器看起来更美观。
- 测试所有功能。
阶段二:行动 - 执行具体任务
- 目标:执行当前计划中的下一个具体步骤。
- 过程:与ReAct中的“行动”类似,模型调用外部工具(如代码解释器、文件系统、浏览器等)来完成任务。
示例(接上):
- 行动 1:
WriteFile[calculator.html, <!DOCTYPE html>...](开始编写HTML结构) - 行动 2:
WriteFile[script.js, function handleButtonClick()...](编写JavaScript逻辑)
- 行动 1:
阶段三:反思 - 评估与调整
- 这是最关键、最具区别性的阶段。
- 目标:批判性地评估刚刚完成的工作,并决定下一步该怎么做。
过程:模型会问自己一些问题:
- 验证正确性:刚才的行动成功了吗?代码能运行吗?输出符合预期吗?
- 评估进展:我们离总体目标更近了吗?
- 发现问题:我是否遇到了意想不到的困难?初始计划是否有缺陷?
- 更新策略:基于以上评估,我需要修改后续的计划吗?
示例(接上):
- 观察: 在浏览器中打开
calculator.html,发现按钮点击没有反应。 - 反思: “我的JavaScript代码存在错误。
getElementById函数可能选择了不存在的元素。我需要在HTML中为显示框添加正确的ID,并检查JS代码中的元素绑定。此外,我忘记了将JS文件链接到HTML中。我需要修改计划:在继续之前,必须先修复这个集成错误。” 更新后的计划:
- 修复HTML-JS集成问题:在HTML中链接script.js文件,并确保所有HTML元素都有正确的ID。
- 调试JavaScript点击事件处理函数。
- (原计划3和4不变)添加CSS样式。
- (原计划3和4不变)测试所有功能。
- 观察: 在浏览器中打开
然后,循环回到 阶段二:行动,这次执行的是修复集成问题的新任务。这个“行动-反思-更新计划”的循环会一直持续,直到任务完成。
3.2. 流程示例
好的,我们用一个更常见的 "企业信息调研" 场景来展示完整的 Plan-Act-Reflect 流程,这是LLM Agent的典型应用场景。
任务: 调研人工智能公司OpenAI的主要产品、融资情况和最新动态。
可用工具:
web_search(query)- 网络搜索financial_db(query)- 查询金融数据库news_search(query)- 新闻搜索summarize(content)- 内容总结
第一轮:初始计划与执行
计划 (v1.0)
- 使用
web_search搜索OpenAI公司简介和主要产品- 使用
financial_db查询OpenAI融资历史- 使用
news_search搜索OpenAI最新动态- 使用
summarize整理所有信息生成报告
行动与观察
- 行动:
web_search("OpenAI 公司 主要产品")
观察: 返回:OpenAI成立于2015年,主要产品包括GPT系列、DALL-E、ChatGPT等。 - 行动:
financial_db("OpenAI 融资历史")
观察: 返回错误:数据库中没有OpenAI的非公开融资详细信息。 - 行动:
news_search("OpenAI 最新动态")
观察: 返回大量结果,包括GPT-4o发布、与苹果合作传闻等。 - 行动:
summarize(所有收集信息)
观察: 由于融资信息缺失,总结不完整。
反思与计划调整
反思:
- 金融数据库无法获取非上市公司详细融资信息
- 新闻搜索结果过多,需要聚焦
- 需要替代方案获取融资信息
新计划 (v2.0):
- 重新搜索产品信息:更详细地了解每个产品特点
- 替代方案获取融资信息:通过权威媒体报道获取融资概况
- 筛选重点新闻:只关注最近3个月的重要发布
- 整理完整报告
第二轮:执行修正计划 v2.0
计划 (v2.0) - 执行
- 详细产品调研
- 融资信息搜索
- 重点新闻筛选
- 整理报告
行动与观察
- 行动:
web_search("OpenAI GPT DALL-E ChatGPT 产品特点")
观察: 获得详细信息:GPT-4是多模态模型,DALL-E是图像生成,ChatGPT是对话产品。 - 行动:
news_search("OpenAI 融资 投资 微软")
观察: 返回:微软投资100亿美元,公司估值约800亿美元。 - 行动:
news_search("OpenAI 2024年重要发布")
观察: 返回:GPT-4o多模态模型发布、与新闻集团合作等。 - 行动:
summarize(产品信息+融资信息+最新动态)
观察: 生成初步报告,但产品分类不够清晰。
反思与计划调整
反思:
- 产品信息比较零散,需要更好组织
- 融资信息已通过替代方案解决
- 需要按产品线重新整理信息
新计划 (v3.0):
- 重新组织产品信息:按产品线分类整理
- 验证融资信息:确认数字准确性
- 生成结构化报告
第三轮:执行最终计划 v3.0
计划 (v3.0) - 执行
- 结构化产品信息
- 验证关键数据
- 生成最终报告
行动与观察
- 行动:
web_search("OpenAI 产品线 GPT DALL-E Whisper Sora")
观察: 确认四大产品线:语言模型(GPT)、图像生成(DALL-E)、语音识别(Whisper)、视频生成(Sora)。 - 行动:
news_search("微软 100亿 投资 OpenAI 确认")
观察: 多个权威来源确认微软投资130亿美元(非100亿)。 - 行动:
summarize(结构化产品信息+准确融资数据+最新动态)
观察: 生成完整、准确的结构化报告。
反思与最终输出
反思:
- 所有信息已准确收集并验证
- 报告结构清晰完整
- 任务完成
最终结果
【OpenAI公司调研报告】
一、主要产品线
- GPT系列:大型语言模型,最新版本GPT-4支持多模态
- DALL-E:图像生成模型,支持文本到图像转换
- Whisper:语音识别系统,支持多语言
- Sora:视频生成模型(开发中)
二、融资情况
- 主要投资方:微软
- 总投资额:约130亿美元
- 当前估值:约800亿美元
三、最新动态(2024年)
- 发布GPT-4o,增强多模态能力
- 与新闻集团达成内容合作协议
- 持续扩展企业级产品服务
总结: 这个例子展示了LLM Agent在真实调研任务中的完整工作流程:从初始计划的不足,通过反思逐步调整策略,最终产出高质量的结构化报告。整个过程体现了Agent的自我修正和优化能力。
4. 两种反思方式
在 LLM Plan–Act–Reflect 框架中,Reflect 既可以在所有 Action 执行完之后一次性进行,也可以在每一步 Action 后进行,这取决于具体的任务需求和设计目标。
- 任务长、易出错 → 推荐逐步反思(模式 B),避免错误累积。
- 任务短、结构清晰 → 可以用全局反思(模式 A),节省资源。
- 在复杂任务中,可以混合使用:关键步骤后立即反思,非关键步骤可延迟到最后反思。
4.1. 逐步反思
流程:
- Plan:制定计划(可能包含多步)。
- Act & Reflect:执行一步后立即反思,评估是否正确、是否需要调整后续计划。
- 循环执行下一步,直至完成任务。
优点:
- 及时发现并纠正错误。
- 计划可以动态调整,更灵活。
缺点:
- 反思频率高,成本增加。
- 可能在简单任务中过度消耗资源。
例子:
任务:解数学题(多步推理)
Plan:
- 理解题意
- 列方程
- 解方程
- 检验答案
Act & Reflect:- Step 1:理解题意 → 反思是否理解正确。
- Step 2:列方程 → 检查方程是否符合题意。
- Step 3:解方程 → 检查计算是否有误。
- Step 4:检验答案 → 确认最终正确性。
4.2. 完成反思
流程:
- Plan:制定整体行动计划(可能包含多步)。
- Act:按照计划依次执行所有步骤。
- Reflect:在完成全部行动后,对整个过程进行总结、分析,找出错误或改进点。
优点:
- 反思成本低(只反思一次)。
- 适合任务相对短且不容易出错的场景。
缺点:
- 中途错误可能积累,直到最后才发现,代价大。
例子:
任务:写一篇短篇故事
Plan:
- 构思情节
- 写开头
- 写中间部分
- 写结尾
Act:依次完成 1–4 步。
Reflect:最后检查故事逻辑、语言流畅度,并提出改进意见。
5. 实践:逐步反思
5.1. 工具定义
Search: {query: string} → {results: list of string}
Calculator: {expression: string} → {result: number}
Translate: {text: string, target_lang: string} → {translated_text: string}
Weather: {location: string} → {temperature: string, condition: string}5.2. System Prompt
Planner Prompt
You are the Planner in the Plan–Act–Reflect framework.
Your task is to read the user's question and generate a clear, step-by-step plan (Plan) that will lead to the answer.
Variables:
- {user_question}: 用户原始提问
- {available_tools}: 可用工具列表及调用方式
Rules:
1. 将用户问题拆解成多个逻辑步骤,每一步必须可执行并匹配至少一个工具。
2. 每步用简洁动词开头(如“查找…”,“计算…”,“翻译…”)。
3. 如果某步无法直接用工具完成,加入“人工推断”或“最佳猜测”步骤。
4. 输出必须严格按如下格式:
Plan:
1. <第一步>
2. <第二步>
...Actor Prompt
You are the Actor in the Plan–Act–Reflect framework.
Your task is to select ONE step from the current Plan and decide which tool to use from the available tools list.
Variables:
- {current_plan}: 当前执行计划
- {available_tools}: 可用工具列表及调用方式
Rules:
1. 只选择当前 Plan 的第一步来执行。
2. 根据步骤内容匹配工具:
- 查找信息 → Search
- 计算 → Calculator
- 翻译 → Translate
- 查询天气 → Weather
3. 输出必须严格遵循 JSON Schema:
Act:
{
"tool": "<tool_name>",
"parameters": { "<field>": "<value>" }
}
4. 如果无法匹配任何工具,输出:
Act: None
Reason: <原因>Reflector Prompt
You are the Reflector in the Plan–Act–Reflect framework.
Your task is to analyze the Observation from the last tool execution and decide what to do next.
Variables:
- {executed_step}: 刚执行的步骤
- {observation}: 工具返回结果
- {current_plan}: 当前执行计划
- {max_iterations}: 最大循环次数
- {max_repeats}: 同一工具+参数重复次数上限
Rules:
1. 判断 Observation 是否满足当前步骤预期。
2. 成功 → 移除该步骤并更新 Plan。
3. 失败 → 更换工具或调整参数重试。
4. 重复失败超过 {max_repeats} 次 → 放弃该步骤并给最佳猜测。
5. Plan 为空 → 输出 Final Answer。
6. 输出格式:
Reflect: <分析>
Updated Plan: <剩余步骤>
Final Answer: <答案>(仅在完成时)5.3. 正常流程场景
用户问题
找出 2021 年奥斯卡最佳影片的导演的出生年份,并计算他到 2024 年的年龄。
Step 1: Planner
messages
[
{"role": "system", "content": "(Planner Prompt)"},
{"role": "user", "content": "{user_question} = 找出 2021 年奥斯卡最佳影片的导演的出生年份,并计算他到 2024 年的年龄。\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
Plan:
1. 查找 2021 年奥斯卡最佳影片。
2. 查找该影片的导演。
3. 查找导演的出生年份。
4. 用 2024 减去出生年份计算年龄。Step 2: Actor(执行步骤 1)
[
{"role": "system", "content": "(Actor Prompt)"},
{"role": "user", "content": "{current_plan} = 1. 查找 2021 年奥斯卡最佳影片...\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
Act: {
"tool": "Search",
"parameters": {"query": "2021 Oscars Best Picture winner"}
}Observation
{"results": ["Best Picture 2021: 'Nomadland'"]}Step 3: Reflector
[
{"role": "system", "content": "(Reflector Prompt)"},
{"role": "user", "content": "{executed_step} = 查找 2021 年奥斯卡最佳影片。\n{observation} = {\"results\": [\"Best Picture 2021: 'Nomadland'\"]}\n{current_plan} = ..."}
]LLM 输出
Reflect: 已获取影片名称 Nomadland。
Updated Plan:
2. 查找 Nomadland 的导演。
3. 查找导演的出生年份。
4. 用 2024 减去出生年份计算年龄。(继续多轮,最终输出)
Final Answer: Chloé Zhao 在 2024 年的年龄是 42 岁。5.4. 异常流程场景
用户问题
查询巴黎今天的天气并翻译成中文。
Step 1: Planner
[
{"role": "system", "content": "(Planner Prompt)"},
{"role": "user", "content": "{user_question} = 查询巴黎今天的天气并翻译成中文。\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
Plan:
1. 使用天气工具查询巴黎今天的天气。
2. 将获取到的天气信息翻译成中文。Step 2: Actor(执行步骤 1)
[
{"role": "system", "content": "(Actor Prompt)"},
{"role": "user", "content": "{current_plan} = 1. 使用天气工具查询巴黎今天的天气...\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
Act: {
"tool": "Weather",
"parameters": {"location": "Paris"}
}Observation
{"error": "API quota exceeded"}Step 3: Reflector(异常处理)
[
{"role": "system", "content": "(Reflector Prompt)"},
{"role": "user", "content": "{executed_step} = 使用天气工具查询巴黎今天的天气。\n{observation} = {\"error\": \"API quota exceeded\"}\n{current_plan} = ..."}
]LLM 输出
Reflect: Weather 工具失败(配额超限),切换为 Search 工具。
Updated Plan:
1. 使用搜索工具搜索巴黎今天的天气信息。
2. 将获取到的天气信息翻译成中文。Step 4: Actor(执行更新后的步骤 1)
Act: {
"tool": "Search",
"parameters": {"query": "Paris weather today"}
}Observation
{"results": ["Paris weather: 12°C, cloudy"]}Step 5: Reflector
Reflect: 已获取天气信息。
Updated Plan:
2. 将 "Paris weather: 12°C, cloudy" 翻译成中文。Step 6: Actor(执行步骤 2)
Act: {
"tool": "Translate",
"parameters": {
"text": "Paris weather: 12°C, cloudy",
"target_lang": "zh"
}
}Observation
{"translated_text": "巴黎天气:12摄氏度,多云"}Step 7: Reflector(最终完成)
Reflect: 翻译完成。
Final Answer: 巴黎天气:12摄氏度,多云。5.5. 健壮性设计总结
- 多循环执行:Planner 一次,Actor+Reflector 循环直到 Plan 空或达到最大迭代次数。
- 异常处理:Reflector 处理失败 → 改工具或参数 → 重试上限 → 最佳猜测。
- 防止死循环:最大迭代次数
{max_iterations},同一调用参数重复次数{max_repeats}。 - 保证最终输出:即使工具全部不可用,也会基于已有信息输出近似答案。
6. 实践:完成反思
新的执行循环
- Planner:基于用户问题制定完整计划(Plan)。
- Actor:按当前 Plan 依次执行所有步骤(一次性执行完)。
- Reflector:统一分析所有步骤的执行结果(Observation 列表),更新 Plan 或结束任务。
- 如果 Plan 未完成 → 回到 Actor 执行下一批步骤。
- 循环直到 Plan 完成或达到最大迭代次数。
6.1. System Prompt
Planner Prompt
You are the Planner in the Plan–Act–Reflect framework (batch execution mode).
Your task is to read the user's question and generate a complete, step-by-step plan (Plan) to reach the answer.
Variables:
- {user_question}: 用户原始提问
- {available_tools}: 可用工具列表
Rules:
1. 拆解成多个逻辑步骤,每步可匹配至少一个工具。
2. 按顺序执行,每步独立。
3. 输出格式:
Plan:
1. <step>
2. <step>
...Actor Prompt
You are the Actor in the Plan–Act–Reflect framework (batch execution mode).
Your task is to execute ALL steps in the current Plan sequentially.
Variables:
- {current_plan}: 当前计划
- {available_tools}: 工具列表
Rules:
1. 对 Plan 中的每一步选择合适工具并给出调用参数。
2. 输出必须是一个 JSON 数组,每个元素对应一个步骤:
[
{
"step": "<step description>",
"tool": "<tool_name>",
"parameters": { "<field>": "<value>" }
},
...
]Reflector Prompt
You are the Reflector in the Plan–Act–Reflect framework (batch execution mode).
Your task is to analyze the Observations from all steps executed in the last batch and decide the next actions.
Variables:
- {executed_steps}: 刚执行的所有步骤
- {observations}: 对应每一步的执行结果
- {current_plan}: 当前计划
- {max_iterations}: 最大循环次数
- {max_repeats}: 同一工具+参数重复次数上限
Rules:
1. 对比每个 Observation 与预期结果。
2. 标记已完成的步骤,从 Plan 中移除。
3. 对失败的步骤提出改进方案(更换工具/参数)。
4. 如果 Plan 为空 → 输出 Final Answer。
5. 输出格式:
Reflect: <总体分析>
Updated Plan: <剩余步骤>
Final Answer: <答案>(仅在完成时)6.2. 正常流程场景
用户问题
找出 2021 年奥斯卡最佳影片的导演的出生年份,并计算他到 2024 年的年龄。
Step 1: Planner
messages
[
{"role": "system", "content": "(Planner Prompt)"},
{"role": "user", "content": "{user_question} = 找出 2021 年奥斯卡最佳影片的导演的出生年份,并计算他到 2024 年的年龄。\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
Plan:
1. 查找 2021 年奥斯卡最佳影片。
2. 查找该影片的导演。
3. 查找导演的出生年份。
4. 用 2024 减去出生年份计算年龄。Step 2: Actor(批量执行所有步骤)
messages
[
{"role": "system", "content": "(Actor Prompt)"},
{"role": "user", "content": "{current_plan} = 上述4步计划\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
[
{"step": "查找 2021 年奥斯卡最佳影片", "tool": "Search", "parameters": {"query": "2021 Oscars Best Picture winner"}},
{"step": "查找该影片的导演", "tool": "Search", "parameters": {"query": "Nomadland director"}},
{"step": "查找导演的出生年份", "tool": "Search", "parameters": {"query": "Chloé Zhao birth year"}},
{"step": "用 2024 减去出生年份计算年龄", "tool": "Calculator", "parameters": {"expression": "2024 - 1982"}}
]批量执行 Observations
[
{"results": ["Best Picture 2021: 'Nomadland'"]},
{"results": ["Director: Chloé Zhao"]},
{"results": ["Birth year: 1982"]},
{"result": 42}
]Step 3: Reflector(批量反思)
messages
[
{"role": "system", "content": "(Reflector Prompt)"},
{"role": "user", "content": "{executed_steps} = 上述4步\n{observations} = 对应结果\n{current_plan} = 上述4步\n{max_iterations} = 8\n{max_repeats} = 3"}
]LLM 输出
Reflect: 所有步骤均成功执行,已获得最终答案。
Updated Plan: (空)
Final Answer: Chloé Zhao 在 2024 年的年龄是 42 岁。6.3. 异常流程场景
用户问题
查询巴黎今天的天气并翻译成中文。
Step 1: Planner
messages
[
{"role": "system", "content": "(Planner Prompt)"},
{"role": "user", "content": "{user_question} = 查询巴黎今天的天气并翻译成中文。\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
Plan:
1. 使用天气工具查询巴黎今天的天气。
2. 将获取到的天气信息翻译成中文。Step 2: Actor(批量执行所有步骤)
[
{"role": "system", "content": "(Actor Prompt)"},
{"role": "user", "content": "{current_plan} = 上述2步\n{available_tools} = Search, Calculator, Translate, Weather"}
]LLM 输出
[
{"step": "使用天气工具查询巴黎今天的天气", "tool": "Weather", "parameters": {"location": "Paris"}},
{"step": "将获取到的天气信息翻译成中文", "tool": "Translate", "parameters": {"text": "Paris weather: 12°C, cloudy", "target_lang": "zh"}}
]批量执行 Observations
[
{"error": "API quota exceeded"},
{"translated_text": "巴黎天气:12摄氏度,多云"}
]Step 3: Reflector(批量反思)
[
{"role": "system", "content": "(Reflector Prompt)"},
{"role": "user", "content": "{executed_steps} = 上述2步\n{observations} = 对应结果\n{current_plan} = 上述2步\n{max_iterations} = 8\n{max_repeats} = 3"}
]LLM 输出
Reflect: 第一步 Weather 工具失败(配额超限),需要改为 Search 工具查询天气。第二步翻译成功,但天气信息可能不完整。
Updated Plan:
1. 使用搜索工具搜索巴黎今天的天气信息。
2. 将获取到的天气信息翻译成中文。
Final Answer: (空)Step 4: Actor(执行新计划)
[
{"step": "使用搜索工具搜索巴黎今天的天气信息", "tool": "Search", "parameters": {"query": "Paris weather today"}},
{"step": "将获取到的天气信息翻译成中文", "tool": "Translate", "parameters": {"text": "Paris weather: 12°C, cloudy", "target_lang": "zh"}}
]Observations
[
{"results": ["Paris weather: 12°C, cloudy"]},
{"translated_text": "巴黎天气:12摄氏度,多云"}
]Step 5: Reflector(最终反思)
Reflect: 新计划全部成功执行。
Updated Plan: (空)
Final Answer: 巴黎天气:12摄氏度,多云。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。