一、 核心定义与四大组件
1. Agent 的本质公式
Agent 是一个能够自主完成任务的系统,其核心逻辑可以归纳为:
Agent = 大模型 (大脑) + 工具 (双手) + 执行循环 (思考-行动-观察-再思考)
2. 四大核心组件(缺一不可)
Agent 的运作依赖于以下四个组件的紧密协作:
| 组件 | 角色 | 核心功能与细节 |
|---|---|---|
| 大模型 (LLM) | 大脑 | 推理中心:负责理解用户意图、分析当前状态、决定下一步动作。所有的"思考"(如判断该查什么、如何解读结果)都在这里发生。 |
| 工具 (Tools) | 双手 | 执行接口:提供与外部世界交互的能力。如搜索、数据库读写、API 调用等。大模型不直接操作,而是通过生成指令调用工具,工具结果返回给大模型。 |
| 记忆 (Memory) | 记事本 | 上下文管理 :• 短期记忆 :存储当前会话的对话历史和工具调用结果(Context Window),确保多步骤任务的连贯性。• 长期记忆:通过外部数据库存储跨会话信息,需要时检索注入。 |
| 执行循环 (Loop) | 节拍器 | 驱动引擎:不断重复"思考→行动→观察→再思考"的过程。这是 Agent 与普通大模型一次性问答(One-shot)最根本的区别。 |
二、 Agent 的两种主流工作范式
ReAct 与 Plan and Execute。
1. ReAct 模式(边想边做)
这是目前最主流的范式,全称 Reasoning + Acting。
-
工作流:
- Think(思考) :基于当前上下文,决定下一步动作。
- Act(行动) :调用工具。
- Observe(观察) :获取结果。
- Loop:将结果纳入上下文,回到思考阶段。
-
关键机制:
- 结果回流:每一步的结果都追加到 Context Window,让大模型"记得"历史。
- 动态决策:路径不固定。例如:发现是慢查询就查日志,发现是网络问题就查网络工具。
-
适用场景:步骤较少(3步以内)、目标模糊、需要随机应变的任务。
-
局限性(长任务困境) :
- 迷路:步骤过多时,上下文过长,大模型容易忘记最终目标。
- 绕路:缺乏全局规划,像走迷宫一样可能走回头路。
- 成本高:每轮循环都携带全部历史,Token 消耗随步骤线性增长。
2. Plan and Execute 模式(先规划,后执行)
为了解决 ReAct 的长任务痛点而生。
-
核心逻辑:
- 第一阶段:Planner(规划) 。大模型拿到任务,不调用工具,而是先生成一份完整的子任务清单。
- 第二阶段:Executor(执行) 。按清单一步步执行。每个步骤可以是简单调用,也可以是一个小的 ReAct 循环。
- 机制:Re-planning(重新规划) 。如果执行中遇到意外(如计划查慢查询,结果发现是锁等待),Executor 可反馈给 Planner 重新生成后续计划。
-
类比:
- ReAct = 边开车边看导航(走到路口才决定拐哪)。
- Plan and Execute = 出发前规划好全程路线(哪里转弯、预计几点到都定好)。
-
适用场景:步骤多(5步以上)、目标明确、需要全局把控的复杂任务。
3. 范式对比与选型决策表
| 维度 | ReAct | Plan and Execute |
|---|---|---|
| 决策时机 | 实时决策(走一步看一步) | 事前决策(全局规划) |
| 全局视野 | 弱(仅关注当前步) | 强(提前看到全貌) |
| 灵活性 | 高(随时调整路径) | 较低(依赖计划调整) |
| Token 消耗 | 随步数增加,后期昂贵 | 规划阶段集中消耗,执行阶段可控 |
| 最佳实践 | 外层用 Plan and Execute 做框架,内层子任务用 ReAct 做执行。 |
三、 Agent vs. Workflow(工作流)
这是初学者最容易混淆的概念,核心区别在于控制权。
-
Workflow(工作流) :
- 控制者 :开发者(代码) 。
- 逻辑:硬编码。先做 A,再做 B,如果 B 结果是 X 走 C,否则走 D。
- 特点:路径固定,可预测性强,成本低。
- 适用:步骤明确、重复性高的标准化流程。
-
Agent(智能体) :
- 控制者 :大模型(实时推理) 。
- 逻辑:动态生成。给目标,模型自己决定怎么走。
- 特点:路径动态,每次运行可能不同。
- 适用:开放域任务、情况多变、需要自主判断的场景。
架构建议 :两者不是互斥关系。最稳健的生产架构通常是 "Workflow 做骨架,Agent 做血肉" 。即用 Workflow 控制主流程,只在需要复杂决策的环节插入 Agent。
四、 Agent 开发的四大挑战与应对
-
幻觉传导
- 问题:第一步推理出现幻觉(错误判断),后续所有步骤都基于这个错误假设,导致结论完全跑偏。
- 应对 :对工具返回结果进行验证;对高风险操作(如删除数据、发通知)增加人工确认环节。
-
工具调用失败
- 问题:网络超时、权限不足、返回格式异常等,可能导致 Agent 卡死。
- 应对:工具需定义明确的错误返回格式;在 System Prompt 中预设"如果工具报错,应该如何处理"的逻辑。
-
成本与速度
- 问题:每一轮循环都是一次 LLM 调用,Token 消耗和延迟随步骤叠加。
- 应对 :严格设置最大循环轮数;能用 Workflow 解决的绝不强行用 Agent。
-
循环风险
- 问题:陷入死循环(例如:查 A 需要查 B,查完 B 又觉得需要查 A)。
- 应对:强制结束机制;让模型在每一步推理时自我审视:"当前信息是否已足够得出结论?还有没有必要继续?"
五、 Agent 的极简代码逻辑(伪代码)
Agent 的核心骨架其实非常简单,本质上就是一个 While True 循环:
python
def run_agent(user_input):
# 1. 初始化消息列表(包含System Prompt和用户输入)
messages = [system_prompt, user_input]
while True:
# 2. 调用大模型,让它思考下一步
response = llm.chat(messages)
# 3. 判断是否为最终答案
if response.is_final_answer:
return response.content # 任务完成,退出循环
# 4. 执行工具
tool_result = execute_tool(response.tool_name, response.arguments)
# 5. 将工具结果追加到消息列表(实现记忆/结果回流)
messages.append({"role": "tool", "content": tool_result})
# 6. 继续循环,让模型基于新结果再思考
总结:Agent 的核心在于利用大模型的推理能力,在"思考"与"行动"之间形成闭环,从而将 AI 从"聊天机器人"升级为"能够自主完成复杂任务的数字员工"。