当前位置: 首页 > news >正文

一篇文章搞懂如何理解 AI Agent?


一、先给 Agent 下一个定义

Agent = LLM(大语言模型)+ 工具(Tools)+ 记忆(Memory)+ 规划(Planning)

简单说,Agent 就是一个能自主感知环境、做出决策、执行行动的智能体。传统 LLM 只能"回答问题",而 Agent 能"完成任务"。

两者的核心区别:

传统 LLMAgent
输入单次 prompt目标 + 环境反馈
输出一段文本一系列行动 + 最终结果
能力边界模型知识截止日期可调用工具获取实时信息
交互方式一问一答多轮自主循环

二、Agent 的核心架构

2.1 四大组件

┌─────────────────────────────────────┐ │ Agent │ │ ┌──────┐ ┌──────┐ ┌───────────┐ │ │ │ 记忆 │ │ 规划 │ │ 工具调用 │ │ │ │Memory │ │Plan │ │ Tool Use │ │ │ └──┬───┘ └──┬───┘ └─────┬─────┘ │ │ │ │ │ │ │ └─────────┼─────────────┘ │ │ ▼ │ │ ┌─────────┐ │ │ │ LLM │ │ │ └─────────┘ │ └─────────────────────────────────────┘
(1)LLM —— 大脑

负责理解任务、分解目标、推理决策。Agent 的智能上限取决于底层模型的能力。

(2)Tools —— 手脚

让 Agent 能执行 LLM 本身做不了的事:

  • 搜索工具(Google Search、Wikipedia)—— 获取实时信息

  • 代码执行器(Python Interpreter)—— 计算、数据分析

  • API 调用(数据库查询、发送邮件、操作文件)

  • 多模态工具(图片生成、语音合成)

(3)Memory —— 记忆
类型说明举例
短期记忆当前对话上下文用户刚才说了什么
长期记忆持久化存储的信息用户偏好、历史任务
工作记忆当前任务中间结果上一步工具调用的返回值
(4)Planning —— 规划

让 Agent 不仅"反应",还能"谋划":

  • 任务分解:把复杂目标拆成可执行的子任务

  • 反思与修正:根据中间结果调整后续计划

  • 多路径探索:生成多个方案并行评估


三、Agent 的工作流模式

这是面试高频考点,务必掌握。

3.1 ReAct(Reasoning + Acting)

最经典的 Agent 模式,交替进行思考(Thought)→ 行动(Action)→ 观察(Observation)

用户: 帮我查一下今天北京的天气,然后决定穿什么 ​ Thought: 我需要先获取北京今天的天气 Action: search_weather("北京", "2026-06-15") Observation: 北京今天晴,15°C ~ 28°C ​ Thought: 晴天气温适中,建议穿薄外套或长袖T恤 Action: Finish[建议穿薄外套,早晚偏凉可带一件风衣]

核心思想:让 LLM 在每一步都输出思考过程,显式推理下一步该做什么。

3.2 Plan-and-Execute

先做全局规划,再逐步执行:

用户: 帮我做一个竞品分析报告 ​ Plan: 1. 搜索竞品列表 2. 逐一收集竞品信息 3. 对比分析各维度 4. 生成 PDF 报告 ​ Execute: Step 1 → Step 2 → Step 3 → Step 4 每步执行后可调整后续计划。

3.3 Multi-Agent(多智能体协作)

多个 Agent 各自扮演不同角色,协作完成复杂任务:

Manager Agent: "写一份新产品发布方案" ├── Research Agent: 搜索市场数据 ├── Writer Agent: 撰写文案 └── Reviewer Agent: 审核修改

3.4 Function Calling vs Agent 的关系

很多面试官会问:Function Calling 是不是就是 Agent?

不是。Function Calling 是 Agent 的工具调用机制,是 Agent 的"手"。真正的 Agent 还需要记忆管理和自主规划能力。可以说 FC 是实现 Agent 的关键技术,但不是 Agent 的全部。


四、动手实现一个简易 Agent(Python)

理论讲完,上代码。以下是一个基于 ReAct 模式的极简 Agent 实现:

import json import re ​ class SimpleAgent: def __init__(self, llm, tools): self.llm = llm # 大模型接口 self.tools = tools # 工具字典 {name: func} self.memory = [] # 对话记忆 ​ def run(self, task): """执行任务的主循环""" prompt = self._build_prompt(task) ​ for _ in range(10): # 防止无限循环,最多10轮 response = self.llm(prompt) ​ # 解析 LLM 输出,提取 Action action, action_input = self._parse_action(response) ​ if action == "Finish": return action_input ​ # 执行工具调用 tool = self.tools.get(action) if tool: observation = tool(action_input) prompt += f"\nObservation: {observation}\n" self.memory.append((action, action_input, observation)) else: prompt += f"\n错误: 工具 '{action}' 不存在\n" ​ return "任务超出轮次限制" ​ def _build_prompt(self, task): """构造 ReAct 格式的 prompt""" tools_desc = "\n".join( f"- {name}: {func.__doc__}" for name, func in self.tools.items() ) return f"""你是一个智能助手,可以使用工具完成任务。 ​ 可用工具: {tools_desc} ​ 请按以下格式响应: Thought: 你的思考过程 Action: 工具名称 Action Input: 工具输入 ...(可重复多轮) Thought: 我现在知道最终答案了 Action: Finish Action Input: 最终答案 ​ 任务: {task} """ ​ def _parse_action(self, text): """从 LLM 输出中提取 Action 和 Action Input""" action_match = re.search(r"Action:\s*(.+?)\n", text) input_match = re.search(r"Action Input:\s*(.+)", text) ​ action = action_match.group(1).strip() if action_match else "Finish" action_input = input_match.group(1).strip() if input_match else text return action, action_input ​ ​ # ========== 使用示例 ========== ​ def search_weather(city): """搜索指定城市的天气信息""" return f"{city}今天晴,15°C ~ 28°C,微风" ​ def calculate(expression): """执行数学计算,参数为数学表达式""" return str(eval(expression)) ​ # 模拟 LLM(实际使用时应替换为真实 API 调用) def mock_llm(prompt): """简易模拟 LLM —— 实际项目中替换为 API 调用""" if "天气" in prompt and "Observation" not in prompt: return """Thought: 我需要查询天气 Action: search_weather Action Input: 北京 """ elif "Observation" in prompt: return """Thought: 查询到天气了,可以给出穿衣建议 Action: Finish Action Input: 今天北京晴天,15~28°C,建议穿薄外套,早晚可加一件风衣。 """ return "Thought: 我理解了\nAction: Finish\nAction Input: 任务完成" ​ agent = SimpleAgent( llm=mock_llm, tools={ "search_weather": search_weather, "calculate": calculate, } ) ​ result = agent.run("查一下北京的天气,告诉我穿什么") print(result)

实际项目中,把mock_llm替换为openai.ChatCompletion.create()或其他 LLM API 即可。


五、主流 Agent 框架对比

框架特点适用场景
LangChain生态最丰富,组件化设计快速原型、复杂链路
LangGraph有状态图编排,支持循环/分支复杂多步 Agent 流程
AutoGen(微软)多 Agent 对话,角色分工明确协作型任务
CrewAI角色驱动的多 Agent 协作团队模拟
OpenAI Agents SDK原生支持,简洁 API基于 OpenAI 的 Agent
Anthropic Claude APITool Use 原生支持,简洁单 Agent 任务

选型建议:简单任务直接用 LLM 原生 Function Calling;复杂工作流用 LangGraph;多角色协作考虑 AutoGen 或 CrewAI。


六、Agent 当前面临的挑战

面试中如果被问到"Agent 有什么局限性",可以从以下几个角度回答:

6.1 可靠性问题

  • 幻觉:LLM 可能生成错误的工具调用或结论

  • 循环死锁:Agent 可能陷入无限思考-行动的循环

  • 上下文窗口:长任务会导致上下文溢出

6.2 工程化挑战

  • 评估困难:Agent 的输出是非确定性的,难以用传统指标衡量

  • 成本控制:多步推理意味着多次 LLM 调用,Token 消耗大

  • 延迟问题:多轮交互导致响应变慢

6.3 安全与对齐

  • 权限管控:Agent 拥有工具执行权,需要沙箱和权限控制

  • 对抗攻击:Prompt Injection 可能让 Agent 执行恶意指令



七、总结

理解 Agent,抓住一条主线:

LLM 提供智能,Tools 提供能力,Memory 提供连贯性,Planning 提供策略。


本文写于 2026 年 6 月,技术迭代快,建议结合最新的框架文档和论文持续学习。

推荐阅读:

  • ReAct 论文: Synergizing Reasoning and Acting in Language Models

  • Anthropic: Building effective agents

  • LangGraph 官方文档

http://www.jsqmd.com/news/1018514/

相关文章:

  • MPC866 SCC模块BISYNC协议硬件配置与驱动开发实战
  • 避开这些坑,你的保研面试就成功了一半:北航/西工大/哈工大等校计算机保研真题与踩雷实录
  • Havenlon设计哲学: 最后一道防线失守
  • 武汉公司注册机构实测排行:合规省心选品指南 - 奔跑123
  • 3大核心功能重塑你的微信聊天记录价值:从数据到记忆的智能革命
  • 华为supervlan(聚合vlan)技术背景与组网实验
  • C语言非标准库extras.h与fcntl.h函数深度解析与跨平台实战
  • 拆解主流AI编程助手,聊聊不同工具的实际功能边界
  • 2026年北京交通事故律师实力对比 5家深度测评各有特色 - 本地品牌推荐
  • WebRTC音频混音、重采样与声道转换源码分析
  • 螺旋钻杆哪家强?2026三棱钻杆厂家推荐+刻槽钻杆厂家推荐详解 - 栗子测评
  • 华为supervlan+sub address组网模拟与sub vlan互通方法
  • Zephyr最简工程配置指南
  • dump1090:如何构建高性能开源ADS-B信号解码系统?
  • 2026-06-15:频率唯一的第一个元素。用go语言,从左到右扫描数组,统计每个元素出现的次数。对每个元素判断它的出现频率是否与其他元素不同:也就是它的出现次数在所有元素中是唯一的那种。找到最先满足
  • FastSurfer大脑分割终极指南:5分钟完成专业级脑影像分析
  • 企业AI可见度怎么检测?中科信枢带你理清优化思路
  • 避开这些坑!RTKLIB做实时PPP时,观测流和SSR改正流到底怎么配?(以CNES/CAS产品为例)
  • wx-charts:微信小程序图表库的技术演进与架构解析
  • 2026 西安包包上门回收靠谱吗?6 家门店实测,在家卖包不踩坑 - 奢侈品回收测评
  • 3分钟轻松上手:免费打造你的专属互动桌宠BongoCat
  • ABAQUS弹塑性分析总不收敛?从单元选择、载荷施加到后处理诊断的完整避坑指南
  • 2026年沈阳香港留学申请哪家专业:五家优选深度解析 - 科技焦点
  • 2026台州电商企业做GEO怎么选服务商?靠谱GEO服务商判断方法 - 企业新闻快传
  • 终极暗黑2现代化补丁:d2dx优化方案全面解析
  • 计算机毕业设计之jspm学生信息管理系统
  • 爬虫新手避坑指南:用Xpath抓取数据时,这5个语法错误你肯定犯过(以豆果网为例)
  • Mermaid Live Editor:免费图表编辑器的终极指南,零基础也能成为图表大师
  • 5个简单步骤掌握DLSS Swapper:NVIDIA显卡性能提升终极指南
  • 重磅更新|定距测量帮您风管分节、支架排布一步到位