Day01 | 什么是Agent?

1 阅读5分钟

一、 核心定义与四大组件

1. Agent 的本质公式
Agent 是一个能够自主完成任务的系统,其核心逻辑可以归纳为:
Agent = 大模型 (大脑) + 工具 (双手) + 执行循环 (思考-行动-观察-再思考)

2. 四大核心组件(缺一不可)
Agent 的运作依赖于以下四个组件的紧密协作:

组件角色核心功能与细节
大模型 (LLM)大脑推理中心:负责理解用户意图、分析当前状态、决定下一步动作。所有的“思考”(如判断该查什么、如何解读结果)都在这里发生。
工具 (Tools)双手执行接口:提供与外部世界交互的能力。如搜索、数据库读写、API 调用等。大模型不直接操作,而是通过生成指令调用工具,工具结果返回给大模型。
记忆 (Memory)记事本上下文管理:• 短期记忆:存储当前会话的对话历史和工具调用结果(Context Window),确保多步骤任务的连贯性。• 长期记忆:通过外部数据库存储跨会话信息,需要时检索注入。
执行循环 (Loop)节拍器驱动引擎:不断重复“思考→行动→观察→再思考”的过程。这是 Agent 与普通大模型一次性问答(One-shot)最根本的区别。

二、 Agent 的两种主流工作范式

ReActPlan and Execute

1. ReAct 模式(边想边做)
这是目前最主流的范式,全称 Reasoning + Acting。

  • 工作流

    1. Think(思考) :基于当前上下文,决定下一步动作。
    2. Act(行动) :调用工具。
    3. Observe(观察) :获取结果。
    4. Loop:将结果纳入上下文,回到思考阶段。
  • 关键机制

    • 结果回流:每一步的结果都追加到 Context Window,让大模型“记得”历史。
    • 动态决策:路径不固定。例如:发现是慢查询就查日志,发现是网络问题就查网络工具。
  • 适用场景:步骤较少(3步以内)、目标模糊、需要随机应变的任务。

  • 局限性(长任务困境)

    • 迷路:步骤过多时,上下文过长,大模型容易忘记最终目标。
    • 绕路:缺乏全局规划,像走迷宫一样可能走回头路。
    • 成本高:每轮循环都携带全部历史,Token 消耗随步骤线性增长。

2. Plan and Execute 模式(先规划,后执行)
为了解决 ReAct 的长任务痛点而生。

  • 核心逻辑

    1. 第一阶段:Planner(规划) 。大模型拿到任务,不调用工具,而是先生成一份完整的子任务清单。
    2. 第二阶段:Executor(执行) 。按清单一步步执行。每个步骤可以是简单调用,也可以是一个小的 ReAct 循环。
    3. 机制:Re-planning(重新规划) 。如果执行中遇到意外(如计划查慢查询,结果发现是锁等待),Executor 可反馈给 Planner 重新生成后续计划。
  • 类比

    • ReAct = 边开车边看导航(走到路口才决定拐哪)。
    • Plan and Execute = 出发前规划好全程路线(哪里转弯、预计几点到都定好)。
  • 适用场景:步骤多(5步以上)、目标明确、需要全局把控的复杂任务。

3. 范式对比与选型决策表

维度ReActPlan and Execute
决策时机实时决策(走一步看一步)事前决策(全局规划)
全局视野弱(仅关注当前步)强(提前看到全貌)
灵活性高(随时调整路径)较低(依赖计划调整)
Token 消耗随步数增加,后期昂贵规划阶段集中消耗,执行阶段可控
最佳实践外层用 Plan and Execute 做框架,内层子任务用 ReAct 做执行

三、 Agent vs. Workflow(工作流)

这是初学者最容易混淆的概念,核心区别在于控制权

  • Workflow(工作流)

    • 控制者开发者(代码)
    • 逻辑:硬编码。先做 A,再做 B,如果 B 结果是 X 走 C,否则走 D。
    • 特点:路径固定,可预测性强,成本低。
    • 适用:步骤明确、重复性高的标准化流程。
  • Agent(智能体)

    • 控制者大模型(实时推理)
    • 逻辑:动态生成。给目标,模型自己决定怎么走。
    • 特点:路径动态,每次运行可能不同。
    • 适用:开放域任务、情况多变、需要自主判断的场景。

架构建议:两者不是互斥关系。最稳健的生产架构通常是 “Workflow 做骨架,Agent 做血肉” 。即用 Workflow 控制主流程,只在需要复杂决策的环节插入 Agent。


四、 Agent 开发的四大挑战与应对

  1. 幻觉传导

    • 问题:第一步推理出现幻觉(错误判断),后续所有步骤都基于这个错误假设,导致结论完全跑偏。
    • 应对:对工具返回结果进行验证;对高风险操作(如删除数据、发通知)增加人工确认环节。
  2. 工具调用失败

    • 问题:网络超时、权限不足、返回格式异常等,可能导致 Agent 卡死。
    • 应对:工具需定义明确的错误返回格式;在 System Prompt 中预设“如果工具报错,应该如何处理”的逻辑。
  3. 成本与速度

    • 问题:每一轮循环都是一次 LLM 调用,Token 消耗和延迟随步骤叠加。
    • 应对:严格设置最大循环轮数;能用 Workflow 解决的绝不强行用 Agent。
  4. 循环风险

    • 问题:陷入死循环(例如:查 A 需要查 B,查完 B 又觉得需要查 A)。
    • 应对:强制结束机制;让模型在每一步推理时自我审视:“当前信息是否已足够得出结论?还有没有必要继续?”

五、 Agent 的极简代码逻辑(伪代码)

Agent 的核心骨架其实非常简单,本质上就是一个 While True 循环:

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 从“聊天机器人”升级为“能够自主完成复杂任务的数字员工”。