AI应用工程师 02 概述大模型缺陷Agent解决方案只能聊天会执行任务不会调用APITool Calling不会长期记忆Memory不会拆解任务Planning不会纠错Reflection不会跨系统操作Workflow不会自主查资料Agentic RAG不会使用软件Computer Use用户分析上个月销售数据Agent:Step1 调SQL工具Step2 获取数据Step3 Pandas分析Step4 生成图表Step5 输出报告一级方向二级技术解决问题难度Tool AgentTool Calling调接口⭐Workflow AgentDAG多步骤任务⭐⭐Planning AgentTask Decompose自动拆任务⭐⭐⭐Memory AgentLong Memory长期记忆⭐⭐⭐Reflection AgentSelf Correct自我纠错⭐⭐⭐Multi-AgentAgent Team多角色协作⭐⭐⭐⭐Agentic RAGAutonomous Retrieval自动检索⭐⭐⭐Computer AgentGUI操作操作电脑⭐⭐⭐⭐⭐Embodied AgentRobot Agent机器人⭐⭐⭐⭐⭐Graph AgentKnowledge Graph推理关系⭐⭐⭐⭐Code AgentCoding Agent写代码⭐⭐⭐Data AgentBI Agent数据分析⭐⭐⭐Web AgentBrowser Agent浏览网页⭐⭐⭐MCP AgentMCP Protocol标准化工具⭐⭐⭐⭐Tool Calling对应你表里的Tool Agent ⭐你要先搞清三件事LLM如何“决定调用工具”function calling / tool schema工具如何被注册schema / prompt / JSON工具执行链路LLM → tool router → function → result → LLM目标产物一个“能调用2~3个工具”的LLM系统例如查天气查数据库调用HTTP接口 没这个后面所有 Agent 都只是“高级聊天”什么是Tool Calling让LLM拥有「感知外部世界」和「操作外部世界」的能力。Q北京天气LLM需要调用weather_tool↓weather_tool(北京)↓26℃↓LLM北京今天26℃...为什么LLM会主动调用工具LLM不会调用工具。LLM只会预测下一个TokenQuestion:北京天气Tools:weather_tool(city)LLM预测{ name:weather_tool, arguments:{ city:北京 } }Function Calling原理只是作为一个可以调用的json工具类集合给AIAI在返回调用哪个{ name:weather, description:查询天气, parameters:{ type:object, properties:{ city:{ type:string } } } }模型看到用户北京天气工具weather{name:weather,arguments:{city:北京}}模型并没有调用工具的能力只是返回需要调用的工具和参数的json协议格式由对应的来进行运行可能是反射可能是代理Spring AI里面如何实现SpringAI实际上帮你做了四件事情。tool注册Bean ToolCallback weatherTool(){ return MethodToolCallback.builder() .object(weatherService) .method(query) .build(); }SpringAI内部/** * 工具注册中心 * 底层使用Map结构存储全部工具定义维护工具名称与工具元数据的映射关系 * 核心职责工具注册、工具查询、工具删除、遍历全部已注册工具 * KtoolName 工具唯一名称 * VToolDefinition 工具完整定义信息入参、描述、执行逻辑、权限等 */ public class ToolRegistry { // 底层存储容器 /** * 工具映射表 * keytoolName 工具唯一标识名称全局不可重复 * valueToolDefinition 工具元定义对象包含工具所有配置信息 */ private final MapString, ToolDefinition toolMap; // 构造器注释示例 /** * 初始化空的工具注册容器 */ public ToolRegistry() { this.toolMap new HashMap(); } /** * 注册工具 * param toolName 工具唯一名称 * param definition 工具完整定义元数据 */ public void register(String toolName, ToolDefinition definition) { toolMap.put(toolName, definition); } /** * 根据工具名称获取工具定义 * param toolName 工具名称 * return 存在返回工具定义不存在返回null */ public ToolDefinition getTool(String toolName) { return toolMap.get(toolName); } }HashMap { weather : ToolDefinition }Schema生成SpringAI自动扫描String query(String city){ name:query, parameters:{ city:String } }发送给大模型。LLM推理用户↓Prompt↓Tools↓Qwen↓ToolCall{name:query,city:北京}ToolRouterToolCallingManager内部逻辑if(toolCall){findTool()execute()injectResult()}重点研究方向研究方向研究问题代表技术Tool Selection选哪个工具ReActTool Routing多工具调度RouterTool Planning工具组合PlanExecuteTool Learning自动发现工具ToolformerTool Reflection工具失败修正ReflexionTool Memory工具经验记忆Memory Agent为什么Tool Calling是Agent的地基因为后面的所有Agent本质上都是在Tool Calling上增加能力。Agent本质Tool Agent单工具调用Workflow AgentTool CallingDAGPlanning AgentTool Calling任务拆分Memory AgentTool Calling向量记忆Reflection AgentTool Calling自我评审Agentic RAGTool CallingRetrieverMulti-AgentTool CallingAgent RouterMCP AgentTool Calling标准协议Computer AgentTool CallingGUI ToolCode AgentTool CallingIDE ToolAgent ≈ LLM大脑 Tool Calling手脚 Memory记忆 Planning前额叶 Reflection自我监督Workflow Agent而DAG Workflow解决的是大模型如何像项目经理一样组织多个工具协同工作。 因为LLM天然没有流程控制。需要一个来进程合理的顺序调度的工具帮我分析特斯拉最近一个月股票走势并结合最近新闻给出投资建议。①股票数据↓②新闻检索↓③新闻总结↓④技术分析↓⑤风险评估↓⑥生成报告Tool Calling开始失控。因为LLM天然没有流程控制。LLM擅长推理不擅长调度DAGDAGDirected Acyclic Graph有向无环图用户问题↓Planner↓生成DAG↓Executor↓结果允许并行。A B C DPlanner任务规划层↓ 输出编排拓扑TaskGraph任务依赖拓扑载体↓ 传入执行引擎Executor任务调度执行层↓ 聚合全部输出Result统一执行结果封装职责分离。DAG四个核心组件① Node节点就是任务。例如Node1查股票Node2查新闻Node3分析新闻Node4生成报告class Node{ String id; String name; Tool tool; }② Edge依赖关系Node1↓Node3意思Node3等待Node1。class Edge{ from; to; }③ StateWAITING ↓ READY ↓ RUNNING ↓ SUCCESS ↓ FAILED④ Executor遍历DAG判断依赖调Tool更新StatePlanner为什么存在这是Agent研究热点。没有Planner。用户分析特斯拉Executor不知道干什么。{tasks:[查股票,查新闻,分析风险,输出报告]}生成DAG股票风险新闻↓报告Executor干什么Executor相当于CPU。 类似Java线程池。SpringBoot怎么设计TaskGraphTaskNodePlannerServiceDagExecutorWorkflowContextWorkflowContext所有节点共享数据。类似Spring IOC。MapString,Object股票工具context.put(stock,data);新闻工具context.put( news ,data );LangGraphDAG State MachineWorkflowDAG就是 Agent 的神经系统和调度中心。问题Tool CallingWorkflow Agent单工具调用√√多步骤任务×√工具依赖×√并行执行×√失败重试×√中断恢复×√状态管理×√长任务执行×√需要自己做“编排层”Spring AI / 阿里百炼DashScope只提供“单步模型能力 工具调用能力”不直接提供完整 Workflow Agent 框架。Java生态目前不如 PythonLangGraphPythonAutoGenPythonCrewAIPython自己实现 Workflow Engine LLMPlanning AgentPlanning Agent任务规划代理本质是将“复杂目标”拆解成可执行的结构化子任务Task List / DAG再交给执行模块逐步完成。核心目标不是“回答问题”而是把问题变成步骤把步骤变成可执行计划把计划变成执行流程Execute1. ReActReason Act思考 行动交替进行Thought → Action → Observation → Thought → Action ...作用一边规划一边调用工具适合“动态任务”用户分析一个电商系统Thought需要了解系统结构Action搜索/读取资料Observation得到信息Thought开始设计模块