AI Agent 30天速成|Day4 教学笔记
今日总学习目标理解Agent规划、任务拆解核心思想掌握ReAct、Plan-Solve标准推理框架基于前3天代码实现自主任务拆解Agent复杂问题自动拆分多子任务实现多工具串行/并行调度、任务状态管理、失败子任务重试机制整合RAG知识库Function Calling任务规划完成全能基础智能体每日时长分配全天8h理论笔记阅读理解2.5h代码编写调试4h复盘面试背诵1.5h一、核心理论教学笔记1. Agent规划核心概念1.1 什么是任务规划当用户提出复合型复杂问题多步骤、多工具、多知识库查询大模型无法一次性给出答案需要先拆解成多个可执行子任务按顺序分步执行最后汇总结果。例“帮我计算(12536)*8同时查询RAG定义最后汇总成一段总结”拆解子任务调用计算器计算12536调用计算器计算结果×8RAG检索RAG相关知识整合全部结果输出总结1.2 两大主流推理框架面试必考1ReAct 推理行动框架最简单、入门首选核心逻辑Thought→Action→Observation循环Thought模型思考当前需要做什么、下一步执行什么工具/检索Action输出标准化工具调用/检索指令Observation拿到工具/知识库返回结果作为观察输入下一轮思考循环往复直到任务全部完成输出最终答案。优势实现简单、天然适配Function Calling缺点复杂多步骤任务容易跳步、漏任务。2Plan-Solve 先规划后执行框架两步流程Plan阶段模型一次性输出完整任务清单结构化JSON子任务列表包含任务类型、执行顺序、依赖关系Solve阶段程序按顺序逐个执行子任务缓存每个子任务结果全部完成后统一汇总优势任务清晰可控便于监控、断点续跑、失败重试缺点一次性规划消耗更多Token复杂依赖场景规划易出错。1.3 子任务类型分类统一抽象统一封装三类任务一套调度器兼容所有任务calc数学计算工具调用复用Day2计算器rag_search知识库检索任务复用Day3 RAGllm_summary纯文本推理总结任务无需外部工具1.4 任务依赖规则无依赖任务可并行执行多个独立RAG查询强依赖任务必须等待前置子任务完成才能执行先求和再相乘2. 任务调度与状态管理2.1 任务状态枚举pending待执行 running执行中 success执行成功 failed执行失败支持重试 finished全部完成2.2 核心调度能力任务缓存存储每个子任务ID、类型、入参、执行结果、状态重试机制单个子任务失败最多重试2次仍失败标记任务异常执行顺序控制区分串行依赖、并行独立任务终止条件所有子任务success或达到最大规划轮次强制汇总3. 规划Agent上下文与Token优化规划阶段仅传入用户原始问题不携带冗余历史减少规划开销每个子任务执行结果精简压缩避免大量文本累积超限设置最大规划轮次默认5轮防止无限循环拆解任务4. 完整全能Agent链路Day1~Day4全能力整合用户复杂提问→ Plan模型拆解结构化子任务列表→ 调度器循环执行每个子任务- 子任务计算调用Function Calling计算器- 子任务知识库查询执行RAG检索- 子任务文本推理直接LLM生成→ 缓存所有子任务执行结果→ LLM汇总全部子任务输出生成最终完整回答二、今日学习重点掌握ReAct与Plan-Solve两种Agent推理框架区别与适用场景定义标准化子任务JSON Schema强制模型输出任务清单实现通用任务调度器支持任务状态、重试、串行执行整合LLM、RAG、Function Calling、任务规划一体化Agent处理规划异常任务格式错乱、子任务重复、依赖顺序错误三、今日难点 解决方案难点1模型拆解任务格式混乱无法解析子任务列表解决方案使用Pydantic定义任务列表SchemaPrompt强制输出纯JSONtemperature设为0消除随机性正则提取JSON、解析失败自动重新规划一次Few-shot给出标准任务拆解示例难点2子任务执行失败导致整体流程中断解决方案单个任务捕获全部异常标记failed记录错误信息继续执行剩余任务配置单任务最大重试次数重试失败后在最终汇总中提示异常汇总阶段告知用户哪些任务执行失败给出失败原因难点3模型无限拆解、产生大量冗余子任务解决方案全局限制最大规划轮次到达上限停止拆解直接汇总已有结果Prompt约束无需拆分的简单问题直接回答禁止多余子任务任务去重调度器过滤重复类型、重复入参的子任务难点4多子任务结果过长Token超限解决方案每个子任务执行后自动精简输出文本剔除换行、冗余描述汇总前做滑动窗口裁剪只保留关键任务结果长结果分段摘要压缩四、完整练习代码基于Day1/2/3扩展前置依赖沿用前几日所有依赖aiohttp、pydantic、faiss-cpu、numpy、fastapi、uvicorn,最后总结提示词有bug需要提示词里加前置任务的结果1. 任务规划核心模块 task_planner.py