Day01 | 什么是Agent?

一、 核心定义与四大组件

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. 范式对比与选型决策表

维度 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 开发的四大挑战与应对

  1. 幻觉传导

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

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

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

    • 问题:陷入死循环(例如:查 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 从"聊天机器人"升级为"能够自主完成复杂任务的数字员工"。

相关推荐
写代码的皮筏艇1 小时前
React中的forwardRef
前端·react.js·面试
蝎子莱莱爱打怪18 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
梯度不陡20 小时前
AI 到底能不能从零写软件?ProgramBench 和 RepoZero 给出了两种答案
前端·javascript·面试
胡萝卜术1 天前
滑动窗口最大值:从暴力到单调队列,层层优化全解析
前端·javascript·面试
沉默王二1 天前
面试结束后,我反问:“就面个实习至于上这么大强度吗?”面试官:“你对 RAG、Agent、MCP、Skill 理解得很到位,所以要求高一点。”
面试·agent·ai编程
假如让我当三天老蒯1 天前
Options API(选项式 API) 和 Composition API(组合式 API)
前端·vue.js·面试
假如让我当三天老蒯2 天前
前端跨域解决方案(学习用)
前端·javascript·面试
Colin草率地做慢慢地改2 天前
关于QuickStore这个项目的重构(2)- 数据库建表文件
后端·面试·架构
JieE2122 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试