新闻详情

新闻详情

首页 / 资讯中心 / 详情

每日 Agent 核心知识 · 第 01 期Agent 基础架构

发布时间:2026/6/18 4:39:34
每日 Agent 核心知识 · 第 01 期Agent 基础架构
个人主页代码不加冰欢迎来访作者简介java后端学习者❄️个人专栏LeetCode刷题日记 苍穹外卖日记SSM框架深入JavaWeb✨命运的结局尽可永在不屈的挑战却不可须臾或缺前言大家好我是代码不加冰agent已经火了挺长一段时间对我自己而言并没有开始系统的学习也不能这么说毕竟刚出也没有所谓的系统这里是我自己的整理的路线从网上搜集的每天给大家分享一下agent的核心知识这一章讲的主要就是Agent基础架构它到底是什么骨子里长什么样从一个 LLM API 调用到能够自主完成多步骤任务的系统中间发生了什么本文从架构层拆解 Agent 的全貌。目录01 从 LLM 到 Agent差在哪里02 Agent 的精确定义03 四大核心组件深度拆解3.1 推理核心Brain / LLM3.2 记忆系统Memory3.3 工具集Tools3.4 规划模块Planning04 Agent 的运行循环05 和传统 Pipeline 的本质区别06 面试高频问题01 从 LLM 到 Agent差在哪里绝大多数开发者第一次接触 AI 开发写的是这样的代码# 典型的 LLM 调用 —— 无状态、单轮、无工具 response client.chat.completions.create( modelgpt-4o, messages[{role: user, content: 帮我写一份周报}] ) print(response.choices[0].message.content)这本质上是一个f(prompt) → text的函数。LLM 是无状态的它不知道上一轮发生了什么不能查数据不能执行代码不能发邮件。它只是一个极其强大的文本变换器。Agent 要做的事情完全不同。给 Agent 下达帮我整理本周所有 Jira 工单按优先级写成周报发给团队它会自己去调用 Jira API 拉取工单按优先级排序整理生成周报文本调用邮件 API 发送确认发送成功这中间涉及多步骤、多工具、有状态、有反馈。LLM 是大脑但 Agent 是能自己动手的完整系统。关键区分LLM 是 Agent 的核心组件但 Agent ≠ LLM。就像 CPU 是计算机的核心但计算机不等于 CPU。02 Agent 的精确定义学术界和工程界对 Agent 的定义有微妙差异搞清楚这两层才能在面试和实战中都说对。学术定义Russell Norvig《AIMA》Agent 是一个能够感知环境percept并通过行动action影响环境的实体目标是最大化某个性能度量performance measure。核心是感知-行动循环。工程定义LLM Agent 语境以 LLM 为推理核心能够自主规划子任务、调用外部工具、读写记忆、并在多轮循环中迭代执行直到完成用户目标的软件系统。核心是自主性 工具使用。深度视角LLM Agent 和传统 RL Agent 的本质区别在于「规划能力的来源」。RL Agent 通过奖励信号学到规划策略隐性的LLM Agent 直接用语言推理做显式规划规划过程可读可解释这是 LLM Agent 的核心工程价值。03 四大核心组件深度拆解目前工程界最主流的 Agent 架构来自 Weng LilianOpenAI2023 年的博文将 Agent 拆成四个模块。这个拆法已成为事实上的标准框架。3.1 推理核心Brain / LLMAgent 的核心是 LLM但不是简单地调用一次 API。LLM 在 Agent 里承担三件事# LLM 在 Agent 里扮演的三个角色 1. 规划者Planner 给定目标 → 拆分子任务 → 决定执行顺序 2. 推理者Reasoner 观察工具返回的结果 → 判断是否满足条件 → 决定下一步 3. 生成者Generator 最终生成结构化输出或自然语言回复1. 规划者Planner 给定目标 → 拆分子任务 → 决定执行顺序2. 推理者Reasoner 观察工具返回的结果 → 判断是否满足条件 → 决定下一步3. 生成者Generator 最终生成结构化输出或自然语言回复这三个角色在一次 Agent 循环里可能轮流出现多次而不是调一次 LLM用结果那么简单。这是很多初学者搭 Agent 时忽视的地方导致写出来的Agent其实只用了 LLM 的生成能力没有推理能力。陷阱把复杂任务一股脑扔给 LLM 生成不做任何规划分解。这不是 Agent这是一个复杂 prompt 的 LLM 调用。Agent 的核心价值在于「迭代推理」而不是「一次生成」。3.2 记忆系统MemoryLLM 本身无状态Agent 的「记忆」是通过外部存储注入 context 实现的。记忆分四类面试经常考class AgentMemory:1. 感知缓冲区 —— 当前 context window 里的内容 in_context: list[Message] 最新 N 轮对话、工具调用结果2. 外部长期记忆 —— 向量数据库 vector_store: VectorDB 语义搜索召回相关历史记录3. 程序性记忆 —— 固化在 System Prompt 里的规则/SOP system_prompt: str 角色设定、工具描述、约束条件4. 实体记忆 —— 结构化的知识KV/图数据库 entity_store: dict 用户偏好、项目信息等结构化数据工程关键点Context window 是 Agent 真正的「工作内存」所有推理都在这里发生。外部记忆的核心工程挑战是「检索质量」——怎么在正确的时机检索到正确的内容注入 context。RAG 准确率低是目前 Agent 在生产环境最大的单点故障之一。3.3 工具集Tools工具是 Agent 的「手脚」让 LLM 能够与外部世界交互。工具本质上是一个函数签名 描述LLM 根据描述决定何时调用、传什么参数。字段类型说明typeString固定为functionfunction.nameString函数名称function.descriptionString函数描述function.parametersObject参数 SchemapropertiesObject参数列表requiredArray必填参数tool_callsArray模型返回的工具调用argumentsJSON String调用参数tool_call_idString调用唯一标识工具类型按能力分层理解这个分层对设计 Agent 系统很有帮助读取类工具只读搜索引擎、数据库查询、API 读取、文件读取。风险低可以大量使用失败了重试即可。写入类工具有副作用发邮件、数据库写入、代码执行、API 写操作。有不可逆风险需要 human-in-the-loop 确认或沙箱隔离。生产陷阱不区分工具的副作用级别让 Agent 无限制地调用写入类工具。一个错误规划会导致真实数据被修改、邮件被误发。生产 Agent 系统必须对写入类工具做权限控制和确认机制。3.4 规划模块Planning规划是 Agent 和普通 LLM 调用最核心的差别。规划分两个维度维度一任务分解策略方式 A顺序分解Sequential Task → [Step1, Step2, Step3] 串行简单适合强依赖链方式 B层级分解Hierarchical Task → [SubTask1, SubTask2] ↓ ↓ [S1.1, S1.2] [S2.1, S2.2] # 树状适合复杂任务方式 C并行分解Parallel ← 多 Agent 系统的基础 Task → [SubTask1 ‖ SubTask2 ‖ SubTask3] 并发提速但需协调维度二规划时机 静态规划执行前一次性规划完CoT/ToT 动态规划每步执行后根据结果重新规划ReAct← 更常用深度视角静态规划依赖 LLM 对任务的「全局预见能力」在复杂、不确定场景下经常规划失败。动态规划ReAct 模式每步观察工具返回值再决定下一步代价是多轮 LLM 调用latency 和 cost 更高。这是工程设计里的核心 tradeoff下一期专门讲 ReAct。04 Agent 的运行循环把四个组件组合起来Agent 的运行本质是一个循环def agent_loop(goal: str) - str: memory.add_to_context(f目标: {goal}) while True:阶段Agent 行为示例1. 接收任务Observe接收用户目标并理解需求「帮我规划北京三日游」2. 思考分析Think拆解任务制定执行计划需要查询景点、天气、酒店3. 选择工具Plan判断是否需要调用外部工具调用搜索、地图、酒店 API4. 执行工具Act调用 Function Calling 执行任务查询热门景点和酒店5. 获取结果Observe接收工具返回的数据获得景点、天气、价格信息6. 结果评估Reflect判断信息是否足够完成任务酒店信息不足继续搜索7. 再次行动Act继续调用工具补充信息查询酒店评价和交通情况8. 生成答案Respond整合结果输出最终方案生成完整旅游攻略9. 任务结束Finish满足目标后退出循环返回最终结果这个循环没有固定终止条件理论上可以无限运行。实际工程里必须加最大迭代次数防止死循环、超时限制、异常捕获和降级策略。05 和传统 Pipeline 的本质区别传统 DAG Pipeline固定的节点拓扑数据流向在代码里写死。A→B→C步骤数量和顺序不变。适合结构高度稳定的任务可靠性高但无法处理「运行时才知道需要哪些步骤」的场景。LLM Agent运行时动态决定步骤数量、顺序、工具选择。适合开放式、不确定性高的任务灵活性高但引入了「LLM 规划失误」的不确定性。可靠性需要通过评估体系保障。实际工程里两者不是对立的——复杂 Agent 系统内部往往混用确定性强的子任务用 Pipeline 固定不确定性高的子任务用 Agent 动态处理。06 面试高频问题QAgent 和 RAG 有什么区别RAG 是 Agent 记忆系统的一种实现方式外部长期记忆的检索增强。Agent 包含 RAG但 Agent 还有规划、工具调用、循环执行等能力RAG 只解决「知识注入」问题。QAgent 的上下文窗口满了怎么办三种策略① 滑动窗口截断丢弃最早的 messages② 摘要压缩用 LLM 把历史对话压缩成摘要再插入③ 外部化存储把工具调用结果存到外部 DB只在 context 里保留 summary。三种策略各有信息损失是生产 Agent 的重要工程点。Q怎么评估一个 Agent 的质量不能只看最终输出需要分层评估① 工具调用准确率对的工具、对的参数② 规划合理性是否走了弯路③ 任务完成率最终目标达成比例④ Token 效率完成同等任务消耗的 token 数。生产 Agent 系统必须有 trace 和 eval pipeline盲飞不可接受。Q单 Agent 和多 Agent 怎么选单 Agent 适合任务链清晰、工具数量可控10个的场景多 Agent 适合任务可以并行、子任务需要专门角色如「搜索 Agent」「写作 Agent」的场景。多 Agent 引入协调复杂性不要过早引入——先让单 Agent 跑通再拆。结语下一篇我们分享一下ReAct框架的深度拆解希望对大家有帮助
网站建设 高端定制 企业官网