AI Agent 入门(六):Agent 规划能力 —— Plan-then-Execute 模式实战
本文是 AI Agent 入门系列的第 6 篇。前 5 课的 Agent 已经会调用工具、有记忆了但面对复杂任务时它只会走一步看一步。学完本篇你的 Agent 将学会先想好再做——自动拆解任务、制定计划、按步骤执行、最终汇总。本课目标理解 Agent 为什么需要规划能力掌握 Plan-then-Execute先规划后执行模式知道什么时候不需要规划亲手实现一个带规划能力的 Agent本课产出新建文件lesson06_planning_agent.py粘贴下文完整代码运行python lesson06_planning_agent.py 帮我调研 LangChain效果Agent 自动拆解任务 → 逐步执行 → 汇总生成结构化报告一、为什么需要规划前 4 课的 ReAct Agent 是走一步看一步的用户帮我调研 LangChain 和 CrewAI并做对比分析 ReAct Agent: ① 搜索 LangChain → 拿到信息 ② 搜索 CrewAI → 拿到信息 ③ 对比分析 → 给出答案看起来没问题但实际上 Agent 在第 ① 步时并不知道后面还有多少步。如果搜索没找到有用信息它可能在第 ③ 步才发现数据不够白忙了前三步。Plan-then-Execute的做法是① 先制定计划不执行只思考 1. 搜索 LangChain 的定义和核心功能 2. 搜索 CrewAI 的定义和核心功能 3. 对比两者的架构和适用场景 4. 生成对比分析报告 ② 按计划逐步执行每步观察结果必要时调整 ③ 汇总所有步骤生成最终报告好处显而易见ReAct无规划Plan-then-Execute全局视野每步只看到上一步先看到完整的路线图容错能力出错后重新推理某步失败只重试该步可解释性需要跟踪每轮计划本身就很清晰适合任务2-3 步的简单任务4 步的复杂任务二、Plan-then-Execute 的三阶段┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Phase 1 │ │ Phase 2 │ │ Phase 3 │ │ 制定计划 │ ──→ │ 逐步执行 │ ──→ │ 汇总输出 │ │ (LLM 规划) │ │ (ReAct × N) │ │ (LLM 总结) │ └──────────────┘ └──────────────┘ └──────────────┘Phase 1 — 制定计划一个专门做规划的 LLM 调用。告诉 LLM 任务是什么让它输出 3-5 个有序步骤。temperature 设低0.2保证稳定性。Phase 2 — 逐步执行对每个步骤启动一个 mini Agent类似第 4 课的 ReAct 循环用工具去获取信息、做计算输出该步的结论。Phase 3 — 汇总输出把所有步骤的结论拼接起来再调一次 LLM让它生成结构化的最终报告。三、什么时候不需要规划情况说明问题一步能答“11 等于几”——不需要规划直接调工具步骤完全确定“每天早上 9 点发天气提醒”——固定流程比规划更稳需要快速响应规划本身要 1-2 次 LLM 调用有延迟成本用户已给明确指令“先搜 A再搜 B再对比”——直接执行即可四、完整代码新建lesson06_planning_agent.py粘贴以下代码 AI Agent 入门六Plan-then-Execute 规划模式 importjson,os,sysfrompathlibimportPathfromdotenvimportload_dotenv SCRIPT_DIRPath(__file__).parent load_dotenv(SCRIPT_DIR/.env)try:sys.stdout.reconfigure(encodingutf-8)except:passfromopenaiimportOpenAI DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)ifnotDEEPSEEK_API_KEY:print([ERROR] 未检测到 API Key);exit(1)clientOpenAI(api_keyDEEPSEEK_API_KEY,base_urlhttps://api.deepseek.com)MODELdeepseek-chat# # 工具# defsearch_info(keyword:str)-str:db{ai agent:AI Agent 由 LLM Tools Memory Planning 组成。LangChain、CrewAI 是主流框架。,langchain:LangChain 是开源 LLM 应用框架。核心Chain链式调用、Agent自主决策、Tool工具集成、Memory记忆。,crewai:CrewAI 是多 Agent 协作框架。核心Agent角色、Task任务、Crew团队。适合需要分工协作的场景。,react:ReAct Reasoning Acting。Agent 交替进行 Thought 和 Action通过 Observation 迭代推进。,planning:Agent 规划能力指将复杂任务分解为可执行步骤。主流Plan-then-Execute、ReWOO、Tree-of-Thought。,}fork,vindb.items():ifkinkeyword.lower():returnf[{k}]\n{v}returnf未找到 [{keyword}]。可搜AI Agent, LangChain, CrewAI, ReAct, Planningdefcalculator(expr:str)-str:try:ifnotall(cinset(0123456789-*/(). )forcinexpr):return不允许的字符returnf{expr}{eval(expr)}exceptExceptionase:returnf错误:{e}TOOLS[{type:function,function:{name:search_info,description:搜索技术知识,parameters:{type:object,properties:{keyword:{type:string}},required:[keyword]}}},{type:function,function:{name:calculator,description:数学计算,parameters:{type:object,properties:{expr:{type:string}},required:[expr]}}},]TOOL_MAP{search_info:search_info,calculator:calculator}# # Phase 1: 生成计划# defgenerate_plan(task:str)-list[str]:print(\n*60\n[Phase 1] 制定计划...\n*60)respclient.chat.completions.create(modelMODEL,messages[{role:system,content:你是任务规划专家只输出编号步骤列表。},{role:user,content:f将以下任务拆解为3-5步:\n{task}\n格式:\n1. 具体动作\n2. 具体动作}],temperature0.2,)textresp.choices[0].message.contentprint(text)steps[]forlineintext.strip().split(\n):lineline.strip()iflineandline[0].isdigit():forsepin[. ,、,) ]:idxline.find(sep,1)ifidx0:steps.append(line[idxlen(sep):].strip());breakprint(f解析出{len(steps)}步:{[f{i}.{s[:30]}...fori,sinenumerate(steps,1)]})returnstepsor[task]# # Phase 2: 执行单步# defcall_tool(tc):ntc.function.name;argsjson.loads(tc.function.arguments)fTOOL_MAP.get(n)print(f -{n}({json.dumps(args,ensure_asciiFalse)}))rf(**args)ifargselsef()print(f -{r[:100]})returnrdefexecute_step(step:str,max_it4)-str:msgs[{role:system,content:完成当前子任务需要信息时用 search_info需要计算时用 calculator。},{role:user,content:f子任务{step}}]for_inrange(max_it):respclient.chat.completions.create(modelMODEL,messagesmsgs,toolsTOOLS)msgresp.choices[0].messageifmsg.tool_calls:msgs.append(msg)fortcinmsg.tool_calls:msgs.append({role:tool,tool_call_id:tc.id,content:call_tool(tc)})else:returnmsg.contentorreturnf[超限]{step}# # Phase 3: 汇总# defsummarize(task:str,results:list[dict])-str:print(\n*60\n[Phase 3] 汇总生成报告...\n*60)ctx\n\n.join(f### 步骤{r[step]}:{r[task]}\n{r[result]}forrinresults)respclient.chat.completions.create(modelMODEL,messages[{role:system,content:你是总结专家。基于各步骤结果生成 Markdown 格式的完整报告。},{role:user,content:f任务{task}\n\n各步骤结果\n{ctx}\n\n请生成最终报告。}],temperature0.3,)finalresp.choices[0].message.contentprint(f\n{*60}\n[最终报告]\n{*60}\n)print(final)returnfinal# # 主流程# defplan_and_execute(task:str):stepsgenerate_plan(task)print(\n*60f\n[Phase 2] 执行{len(steps)}步...\n*60)results[]fori,stepinenumerate(steps,1):print(f\n-- Step{i}/{len(steps)}:{step[:50]}... --)resultexecute_step(step)results.append({step:i,task:step,result:result})print(f [Step{i}完成]{result[:100].replace(chr(10), )}...)finalsummarize(task,results)returnfinalif__name____main__:task .join(sys.argv[1:])iflen(sys.argv)1else\帮我调研 LangChain 和 CrewAI说明它们是什么、有什么区别plan_and_execute(task)运行结果示例$ python lesson06_planning_agent.py 帮我调研 LangChain 和 CrewAI [Phase 1] 制定计划... 1. 搜索 LangChain 的定义、核心功能和典型应用场景 2. 搜索 CrewAI 的定义、核心功能和典型应用场景 3. 对比分析 LangChain 和 CrewAI 的架构差异和适用场景 4. 生成对比分析报告包括各自优劣势和选型建议 解析出 4 步 [Phase 2] 执行 4 步... -- Step 1/4: 搜索 LangChain -- - search_info({keyword:LangChain}) - [langchain] LangChain 是开源 LLM 应用框架... [Step 1 完成] LangChain 是一个开源的大语言模型应用框架... -- Step 2/4: 搜索 CrewAI -- - search_info({keyword:CrewAI}) - [crewai] CrewAI 是多 Agent 协作框架... [Step 2 完成] CrewAI 是一个多 Agent 协作框架... -- Step 3/4: 对比分析 -- [Step 3 完成] 两者核心差异LangChain 通用框架CrewAI 多 Agent... -- Step 4/4: 生成报告 -- [Step 4 完成] 基于前面的分析以下是完整对比报告... [Phase 3] 汇总生成报告... [最终报告] ## LangChain vs CrewAI 技术对比 ### 一、各自定位 - LangChain通用 LLM 应用开发框架提供 Chain/Agent/Tool/Memory 等模块 - CrewAI多 Agent 协作框架通过角色分工实现复杂任务的团队化执行 ### 二、核心差异 ... ### 三、选型建议 - 需要灵活构建各类 LLM 应用 → LangChain - 需要多个 Agent 分工协作 → CrewAI - 两者可以组合使用常见报错问题原因解决计划解析出 0 步LLM 输出格式不标准代码有兜底直接用原任务某步骤执行超限该步太复杂或工具数据不足调大max_iterations最终报告空洞前几步没收集到有效信息丰富search_info的知识库动手练习把search_info的知识库扩充 10 条验证大知识库对报告质量的影响改成人类确认模式计划出来先让你看看同意再执行对比同一个任务分别用第 4 课无规划和本课有规划跑一次记录结果质量差异思考题Plan-then-Execute 最大的缺点是什么提示如果计划本身有错误呢如果 Agent 规划出 20 个步骤你会怎么处理“执行到第 3 步时发现第 1 步做错了” —— 怎么设计一个能自己修正的 Agent 完整代码本课程所有代码已托管在 GitCodegit clone gitgitcode.com:gcw_A202cbBm/ai-agent.git cd ai-agent/code也可直接访问https://gitcode.com/gcw_A202cbBm/ai-agent下一篇预告AI Agent 入门七提示工程 —— System Prompt、工具描述与 Few-shot 优化最后一课我们将回头审视整个系统——如何通过优化提示词让 Agent 更聪明、更可靠。如果您觉得有用欢迎点赞、转发、评论、关注。