AG-01_Agent 是什么?—— 从 LLM 到智能体的范式跨越
Agent 是什么—— 从 LLM 到智能体的范式跨越系列: AI Agent 工程实践 |编号: AG-01关键词: Agent 定义, LLM, 智能体架构, ReAct, Reflexion阅读时间: 约 15 分钟前言2023 年当 ChatGPT 横扫全球时大多数人对大语言模型LLM的认知停留在聊天机器人层面。然而一线研究者和工程师早已意识到LLM 的真正潜力不在于对话而在于行动。一个能对话的 LLM 是工具一个能感知环境、制定计划、调用工具、从反馈中学习的 LLM才是Agent智能体。这篇文章将从经典人工智能的 Agent 定义出发梳理 LLM 时代 Agent 的新内涵解析其四大核心能力并通过代码实现一个最简 Agent 循环帮助你建立对 Agent 的完整认知框架。一、Agent 的经典定义1.1 Russell Norvig 的权威定义在 Stuart Russell 与 Peter Norvig 的经典教材Artificial Intelligence: A Modern Approach第 4 版2020中Agent 被定义为“Anything that can be viewed as perceiving its environment through sensors and acting upon that environment through actuators.”任何能通过传感器感知环境并通过执行器作用于环境的事物。这个定义包含三个核心要素感知Perception从环境中获取信息行动Action对环境施加影响环境EnvironmentAgent 所处的外部世界Russell Norvig 进一步区分了多种 Agent 类型Agent 类型特征示例Simple Reflex Agent基于当前感知直接行动恒温器Model-Based Reflex Agent维护内部状态真空吸尘器有地图Goal-Based Agent有明确目标规划行动路径导航系统Utility-Based Agent通过效用函数优化决策投资顾问Learning Agent从经验中改进自身AlphaGo1.2 传统 Agent 的局限经典 AI 的 Agent 概念虽然框架清晰但在实践中面临巨大挑战知识瓶颈需要手工编码所有规则和知识脆弱性面对未预见的情况容易失败泛化能力差每个任务需要专门设计这些局限使得传统 Agent 长期停留在学术实验室中难以规模化应用。二、LLM 时代的 Agent 新定义2.1 范式转移LLM 的出现根本性地改变了 Agent 的设计范式。传统 Agent 依赖手工规则而 LLM Agent 依赖语言理解与生成。这不是渐进式改良而是范式跨越。在 LLM 时代Agent 可以重新定义为一个以大语言模型为核心推理引擎具备感知、规划、记忆和工具使用能力的自主系统。2.2 核心架构模型LLM Agent 的架构可以用一个简洁的公式表达Agent LLM Tools Memory Planning这个公式中LLM充当大脑负责理解、推理和决策Tools扩展 Agent 的能力边界搜索、代码执行、API 调用等Memory提供上下文连续性和长期知识积累Planning将复杂任务分解为可执行的步骤2.3 从对话到行动传统 LLM 交互是单轮或多轮对话用户提问、模型回答。而 Agent 交互是任务驱动的自主循环用户: 帮我分析这份销售数据并生成报告 → Agent: 解析文件 → 理解数据结构 → 执行分析 → 生成图表 → 撰写报告 → 交付结果关键区别在于Agent 不等待用户每一步指令而是自主规划并执行完整的工作流。三、Agent 的四大核心能力3.1 感知Perception感知是 Agent 获取环境信息的通道。在 LLM Agent 中感知包括用户输入自然语言指令、文件上传、语音输入工具返回值API 响应、代码执行结果、搜索结果环境状态系统时间、文件系统状态、网络状态多模态输入图像、音频、视频通过多模态 LLM感知模块的核心挑战是信息筛选——Agent 需要从海量信息中提取与当前任务相关的信号。3.2 规划Planning规划是 Agent 将复杂任务分解为可执行步骤的能力。主要策略包括任务分解Task Decomposition任务: 写一篇关于量子计算的技术博客 分解: 1. 搜索量子计算最新进展 2. 整理关键概念和术语 3. 设计文章大纲 4. 撰写各章节 5. 添加代码示例 6. 审校和排版策略选择Chain of Thought (CoT)逐步推理Wei et al., 2022Tree of Thoughts (ToT)多分支探索Yao et al., 2023ReAct推理与行动交替Yao et al., 20233.3 记忆Memory记忆系统是 Agent 维持上下文连续性和积累经验的关键。参考认知科学Agent 的记忆分为短期记忆Short-term Memory当前对话上下文受限于上下文窗口长期记忆Long-term Memory持久化存储通常基于向量数据库工作记忆Working Memory当前任务的中间状态和变量Shinn et al.2023在 Reflexion 论文中展示了记忆如何让 Agent 从失败中学习Agent 将失败的尝试和反思存储为长期记忆在后续任务中检索相关经验以避免重复错误。3.4 执行Execution执行是 Agent 将决策转化为实际动作的能力。在 LLM Agent 中执行主要通过**工具调用Tool Use / Function Calling**实现代码执行编写并运行 Python、JavaScript 等代码API 调用调用外部服务搜索引擎、数据库、SaaS 工具文件操作读写文件、创建目录系统操作执行 shell 命令、管理进程执行模块的关键设计原则是可观测性——每次执行的结果都需要反馈给 Agent形成闭环。四、代码示例最简 Agent 循环实现下面我们实现一个最简的 Agent 循环展示 Agent 的核心运行机制。这个实现剥离了所有框架抽象直接展示本质逻辑。 最简 Agent 循环实现 展示 Agent 的核心运行机制感知 → 推理 → 行动 → 观察 的循环 importjsonfromopenaiimportOpenAI clientOpenAI()# # 第一部分定义工具集# Agent 的能力边界由工具集决定# defsearch_web(query:str)-str:模拟网络搜索工具# 实际实现中这里会调用搜索 API如 Google、Bingresults{python 异步编程:Python asyncio 提供了编写单线程并发代码的基础设施...,agent 架构设计:现代 AI Agent 通常采用 LLM Tools Memory 架构...,}returnresults.get(query,f未找到关于 {query} 的结果)defrun_python(code:str)-str:模拟代码执行工具try:# 注意生产环境中需要沙箱隔离local_vars{}exec(code,{},local_vars)returnstr(local_vars.get(result,执行完成))exceptExceptionase:returnf执行错误:{str(e)}# 工具注册表工具名 → 工具函数TOOLS{search_web:search_web,run_python:run_python,}# # 第二部分工具描述供 LLM 理解工具用途# 这是 Function Calling 的核心——用自然语言描述工具# TOOL_SCHEMAS[{type:function,function:{name:search_web,description:搜索互联网获取最新信息,parameters:{type:object,properties:{query:{type:string,description:搜索关键词}},required:[query]}}},{type:function,function:{name:run_python,description:执行 Python 代码并返回结果。代码中需要将结果赋值给 result 变量。,parameters:{type:object,properties:{code:{type:string,description:要执行的 Python 代码}},required:[code]}}}]# # 第三部分Agent 核心循环# 这是 Agent 的心脏——感知、推理、行动的无限循环# defrun_agent(user_task:str,max_iterations:int10)-str: 运行 Agent 核心循环。 循环流程: 1. 将用户任务和历史交互发送给 LLM 2. LLM 决定直接回答 或 调用工具 3. 如果调用工具执行并将结果反馈给 LLM 4. 重复直到 LLM 给出最终答案或达到最大迭代次数 # 初始化对话历史messages[{role:system,content:(你是一个智能助手可以使用工具来帮助用户完成任务。请根据需要调用工具获取信息或执行操作然后给出最终答案。如果不需要工具可以直接回答。)},{role:user,content:user_task}]# Agent 主循环foriterationinrange(max_iterations):print(f\n{*50})print(f 迭代{iteration1})print(f{*50})# 步骤 1: 调用 LLM 进行推理responseclient.chat.completions.create(modelgpt-4,messagesmessages,toolsTOOL_SCHEMAS,tool_choiceauto,# 让 LLM 自主决定是否调用工具)messageresponse.choices[0].message messages.append(message)# 步骤 2: 检查 LLM 是否需要调用工具ifnotmessage.tool_calls:# LLM 认为已经完成任务返回最终答案print(f✅ Agent 完成任务共{iteration1}次迭代)returnmessage.content# 步骤 3: 执行工具调用fortool_callinmessage.tool_calls:func_nametool_call.function.name func_argsjson.loads(tool_call.function.arguments)print(f 调用工具:{func_name})print(f 参数:{json.dumps(func_args,ensure_asciiFalse,indent2)})# 执行工具iffunc_nameinTOOLS:resultTOOLS[func_name](**func_args)else:resultf错误未知工具 {func_name}print(f 结果:{result[:200]}...)# 步骤 4: 将工具结果反馈给 LLMmessages.append({role:tool,tool_call_id:tool_call.id,content:str(result)})return达到最大迭代次数任务未完成。# # 使用示例# if__name____main__:task搜索一下 Python 异步编程的最新实践然后写一个简单的异步 HTTP 请求示例resultrun_agent(task)print(f\n 最终结果:\n{result})代码要点解析工具注册机制通过TOOLS字典和TOOL_SCHEMAS列表将工具的执行逻辑和语义描述分离。LLM 通过TOOL_SCHEMAS理解工具用途通过TOOLS实际执行。自主决策循环tool_choiceauto让 LLM 自主判断是否需要调用工具。这是 Agent 与传统脚本的本质区别——控制流由 LLM 动态决定而非预编码。反馈闭环每次工具调用的结果都通过role: tool消息回传给 LLM形成行动→观察→推理的闭环。这正是 ReAct 模式的核心思想。五、Agent 与传统软件的区别理解 Agent最直观的方式是将其与传统软件对比维度传统软件AI Agent控制流预定义的 if-else / 状态机LLM 动态决策输入处理结构化数据严格校验自然语言容错理解错误处理预定义异常处理路径LLM 理解错误并自主调整扩展性添加新功能需改代码添加新工具描述即可适应性固定行为模式根据上下文动态调整策略可解释性代码即文档推理过程可见Thought不确定性确定性执行概率性决策可能产生幻觉关键差异深度分析1. 控制流的本质变化传统软件的控制流是确定性的——给定相同的输入总是执行相同的路径。而 Agent 的控制流是涌现性的——LLM 根据当前上下文动态选择下一步行动。这意味着Agent 能处理开发者未预见的场景但也意味着行为不可完全预测需要新的测试和验证方法2. 接口的范式转换传统软件通过API 接口交互精确的函数签名、参数类型。Agent 通过自然语言接口交互——用户说帮我分析一下Agent 自行理解具体要做什么。这大大降低了使用门槛但也引入了语义模糊性。3. 错误恢复能力传统软件遇到未处理的异常会崩溃。Agent 遇到错误时LLM 可以理解错误信息分析失败原因调整策略重试或者告知用户无法完成并解释原因六、Agent 的应用场景6.1 代码开发 Agent以 GitHub Copilot Workspace、Cursor、Devin 为代表这类 Agent 能理解需求并规划实现方案编写、修改、调试代码运行测试并修复失败提交代码和创建 PR6.2 数据分析 Agent以 ChatGPT Code Interpreter 为代表读取数据文件执行数据清洗和转换生成可视化图表撰写分析报告6.3 研究助理 Agent以 Perplexity、GPT Researcher 为代表搜索多源信息综合分析和对比生成结构化报告引用来源七、从 LLM 到 Agent技术栈的演进7.1 LLM 的三种使用模式模式 1: 直接调用Chatbot 用户输入 → LLM → 输出 模式 2: 链式调用Chain 用户输入 → LLM₁ → 处理 → LLM₂ → 输出 模式 3: Agent 循环Loop 用户输入 → [LLM → 工具 → 观察] × N → 输出模式 3 是 Agent 的核心特征——一个自主循环直到任务完成。7.2 框架生态当前主流的 Agent 框架包括框架特点适用场景LangChain / LangGraph生态丰富图结构编排通用 Agent 开发AutoGen多 Agent 对话多角色协作CrewAI角色扮演团队协作任务分工明确的场景OpenAI Assistants API原生集成开箱即用快速原型Anthropic Claude MCP工具标准化协议工具生态建设八、总结核心观点回顾Agent 不是聊天机器人的升级版而是一种全新的软件范式。它将 LLM 从应答工具提升为自主行动者。Agent LLM Tools Memory Planning四大组件缺一不可。LLM 提供推理能力Tools 扩展行动能力Memory 提供连续性Planning 实现复杂任务分解。Agent 的本质特征是自主循环——感知环境、推理决策、执行行动、观察结果循环往复直到任务完成。Agent 与传统软件的根本区别在于控制流——从预定义的确定性流程转变为 LLM 驱动的动态决策。当前仍处于 Agent 技术的早期阶段。可靠性、安全性、可控性是需要持续攻克的工程挑战。展望正如 Russell Norvig 在教科书中所预言的真正的智能体需要在不确定环境中自主行动。LLM 第一次让这个愿景变得可工程化。在接下来的文章中我们将深入 Agent 的每个核心模块认知架构AG-02、ReAct 模式AG-03、工具调用AG-04和记忆系统AG-05从理论到源码构建完整的 Agent 工程知识体系。参考文献Russell, S., Norvig, P.(2020).Artificial Intelligence: A Modern Approach(4th ed.). Pearson. Chapter 2: Intelligent Agents.Yao, S., Zhao, J., Yu, D., et al.(2023). “ReAct: Synergizing Reasoning and Acting in Language Models.”ICLR 2023. arXiv:2210.03629.Shinn, N., Cassano, F., Gopinath, A., et al.(2023). “Reflexion: Language Agents with Verbal Reinforcement Learning.”NeurIPS 2023. arXiv:2303.11366.Wei, J., Wang, X., Schuurmans, D., et al.(2022). “Chain-of-Thought Prompting Elicits Reasoning in Large Language Models.”NeurIPS 2022. arXiv:2201.11903.Yao, S., Yu, D., Zhao, J., et al.(2023). “Tree of Thoughts: Deliberate Problem Solving with Large Language Models.”NeurIPS 2023. arXiv:2305.10601.本系列覆盖AI 大模型基础、Agent 开发、MCP 协议、Skill 开发、RAG、模型微调、部署推理七大方向从入门到实战的全栈内容持续更新中。所有文章的 Markdown 源文件、可运行代码、高清配图已整理成完整资料包。 点赞 ⭐ 关注评论区扣「1」挨个发你领取方式
上一篇/下一篇内容由系统自动关联
返回资讯列表 →