概述
AI Agent(智能体)是一种能够自主感知环境、做出决策并执行行动的智能系统。与单纯的语言模型不同,Agent 具备规划、记忆、工具使用三大核心能力,能够完成复杂的多步骤任务。
如果说 LLM 是「大脑」,那么 Agent 就是「大脑 + 手脚 + 感官」的完整智能体。Agent 让 AI 从被动响应走向主动行动,从单步回答走向任务闭环。
Agent vs 传统软件
| 维度 | 传统软件 | AI Agent |
|---|---|---|
| 交互模式 | 规则驱动 | 意图驱动 |
| 灵活性 | 低,固定流程 | 高,动态适应 |
| 错误处理 | 异常处理预设 | 自我纠错 |
| 用户需求 | 需精确描述 | 模糊需求即可 |
| 能力边界 | 限于预设功能 | 通过工具扩展 |
| 学习方式 | 无 | 可从交互中学习 |
核心架构
┌─────────────────────────────────────────────────────────┐│ AI Agent │├─────────────────────────────────────────────────────────┤│ ││ ┌───────────┐ ┌───────────┐ ┌───────────────────┐ ││ │ 感知 │ │ 认知 │ │ 行动 │ ││ │ Perception│→ │ Cognition │→ │ Action │ ││ └───────────┘ └───────────┘ └───────────────────┘ ││ ││ ┌───────────┐ ┌───────────┐ ┌───────────────────┐ ││ │ 记忆 │ │ 规划 │ │ 工具 │ ││ │ Memory │ │ Planning │ │ Tools │ ││ └───────────┘ └───────────┘ └───────────────────┘ ││ │└─────────────────────────────────────────────────────────┘感知(Perception)
Agent 通过多种方式感知外部世界:
| 感知类型 | 数据来源 | 处理方式 |
|---|---|---|
| 文本感知 | 用户对话、文档内容 | LLM 直接理解 |
| 视觉感知 | 截图、图片、图表 | 多模态模型处理 |
| 听觉感知 | 语音输入 | ASR 转换为文本 |
| 工具感知 | 函数返回结果 | 结构化数据解析 |
| 环境感知 | 系统状态、API 响应 | 状态解析 |
认知(Cognition)
Agent 的核心思维过程:
感知输入 → 理解意图 → 知识检索 → 推理分析 → 决策生成意图理解(Intent Parsing):
# 从用户模糊表述中提取精确意图用户:"我想换工作"→ 意图:职业转换咨询→ 子意图:简历优化、职位推荐、面试准备行动(Action)
Agent 采取的行动类型:
| 行动类型 | 说明 | 示例 |
|---|---|---|
| 文本生成 | 回答用户问题 | 撰写邮件 |
| 工具调用 | 执行外部功能 | 查询天气 |
| 代码执行 | 运行计算逻辑 | 数据分析 |
| 文件操作 | 读写本地文件 | 生成报告 |
| API 调用 | 访问外部服务 | 发送消息 |
| Agent 协作 | 调用其他 Agent | 委托子任务 |
规划(Planning)
规划是 Agent 将复杂任务分解为可执行步骤的能力。
规划的重要性
| 问题 | 无规划 | 有规划 |
|---|---|---|
| 复杂任务 | 容易迷失方向 | 步骤清晰可控 |
| 错误恢复 | 无从回退 | 可回退重试 |
| 效率 | 频繁试错 | 一次做对 |
主流规划方法
方法 1:思维链(Chain of Thought, CoT)
最简单的规划方法,让模型逐步推理:
用户:帮我规划一个成都三日游Agent 思考:1. 首先需要了解用户偏好(美食 / 景点 / 购物?)2. 然后确定游览地点和路线3. 安排每日时间表4. 推荐餐厅和住宿5. 整理成行程单方法 2:思维树(Tree of Thoughts, ToT)
在关键决策点探索多个分支:
开始规划 │ ┌─────────┼─────────┐ ▼ ▼ ▼ 美食游 景点游 亲子游 │ │ │ ┌───┼───┐ ┌──┴──┐ ┌──┴──┐ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 方案 A B C D E F G │ 评估选择最优方案方法 3:ReAct(Reasoning + Acting)
交替进行推理和行动:
Thought: 我需要查一下明天成都的天气Action: call_weather_tool(city="成都", date="明天")Observation: 天气晴朗,25°CThought: 天气很好,适合户外活动,可以在行程中加入宽窄巷子Action: search_attractions(keyword="成都宽窄巷子")...方法 4:Plan-and-Execute
先制定完整计划,再按序执行:
阶段 1(规划阶段): 用户需求 → 任务分解 → 执行计划 ┌──────────────────────────────────┐ │ 1. 查询成都景点 │ │ 2. 搜索景点门票和开放时间 │ │ 3. 根据位置规划路线 │ │ 4. 推荐附近美食 │ │ 5. 生成行程表 │ └──────────────────────────────────┘
阶段 2(执行阶段): 按计划逐步执行,每步记录结果方法 5:LLMCompiler
并行执行独立的子任务:
# 识别可并行任务tasks = [ search("成都景点推荐"), # 任务 1 search("成都美食攻略"), # 任务 2(可并行) search("成都交通指南"), # 任务 3(可并行)]# 并行执行 → 汇总结果 → 生成最终回答自我反思与纠错
优秀的 Agent 具备自我反思能力:
执行:send_email(recipient="张三", content="明天下午 3 点开会")观察:邮件发送成功,但收件人邮箱地址错误(已离职)反思:- 发送前应该先验证收件人状态- 应该查询最新的通讯录纠错:- 重新查询通讯录- 找到正确的收件人- 重新发送记忆(Memory)
Agent 的记忆分为多个层次,实现信息的有效存储和检索。
记忆架构
┌─────────────────────────────────────┐│ 感知输入 │└──────────────┬──────────────────────┘ │ ┌───────┼───────┐ ▼ ▼ ▼ ┌──────┐ ┌──────┐ ┌──────┐ │感官 │ │工作 │ │长期 │ │记忆 │ │记忆 │ │记忆 │ └──┬───┘ └──┬───┘ └──┬───┘ │ │ │ ▼ │ ▼ 即时信息 当前会话 持久存储 原始感知 上下文 经验知识三层记忆详解
| 层次 | 容量 | 生命周期 | 存储方式 |
|---|---|---|---|
| 感官记忆 | 原始数据 | 当前交互 | 原始格式 |
| 工作记忆 | 5-7 项 | 当前会话 | LLM 上下文 |
| 长期记忆 | 无限 | 跨会话 | 向量 DB/ 结构化存储 |
长期记忆实现
向量数据库存储:
# 将重要信息编码为向量存入向量数据库memory_embedding = embed_text("用户偏好:喜欢川菜,不吃辣")vector_db.add(memory_embedding, metadata={ "content": "用户偏好:喜欢川菜,不吃辣", "timestamp": "2026-03-21", "source": "conversation"})
# 检索时,用当前上下文找到相关记忆query_embedding = embed_text("推荐一家成都餐厅")relevant_memories = vector_db.search(query_embedding, top_k=3)知识图谱存储:
节点:用户、偏好、成都、川菜、不辣边:用户-喜欢-> 川菜、用户-不喜欢-> 辣记忆的优先级管理
不是所有信息都同等重要:
| 信息类型 | 重要性 | 处理策略 |
|---|---|---|
| 用户明确要求 | 最高 | 立即存储,长期保留 |
| 任务关键信息 | 高 | 任务期间活跃,任务后可压缩 |
| 上下文线索 | 中 | 临时使用后可遗忘 |
| 闲聊内容 | 低 | 可选择性遗忘 |
工具使用(Tools)
工具是 Agent 能力的延伸,使其能够影响外部世界。
工具类型全景
| 类别 | 工具示例 | 能力 |
|---|---|---|
| 搜索 | Google、Bing、DuckDuckGo | 实时信息获取 |
| 知识库 | Wikipedia、企业知识库 | 结构化知识 |
| 计算 | Python、计算器 | 精确计算 |
| 代码 | Python/Shell 执行器 | 编程能力 |
| 文件 | 读、写、搜索文件 | 文档处理 |
| API | 天气、地图、邮件 | 第三方服务 |
| 数据库 | SQL 查询 | 数据访问 |
| MCP 服务器 | 文件系统、Git 等 | 协议标准化工具 |
工具调用机制
用户:成都今天天气怎么样?
Step 1: LLM 分析请求,判断需要天气信息Step 2: LLM 生成工具调用 { "tool": "weather_api", "parameters": {"city": "成都"} }Step 3: 执行工具,获取结果Step 4: 将结果注入上下文Step 5: LLM 生成自然语言回答工具描述规范
工具描述的质量直接影响 Agent 的工具选择:
# 不好的描述tool = { "name": "search", "description": "搜索"}
# 好的描述tool = { "name": "web_search", "description": "在互联网上搜索实时信息、新闻或知识点", "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": "搜索关键词,建议简洁明确,中文优先" }, "max_results": { "type": "integer", "description": "最多返回结果数,默认 5 条", "default": 5 } }, "required": ["query"] }}工具调用策略
串行调用:结果依赖,顺序执行
search("成都景点") → read_review(id) → generate_itinerary()并行调用:结果独立,同时执行
search("成都景点"), search("成都美食"), search("成都交通") → 汇总条件调用:根据结果决定下一步
search() → 结果数量 =0? → 扩大搜索范围 → search()工作流程
完整生命周期
┌──────────────────────────────────────────────────────────┐│ Agent 任务生命周期 │├──────────────────────────────────────────────────────────┤│ ││ 用户请求 ││ │ ││ ▼ ││ ┌──────────┐ ││ │ 意图理解 │ ← 分析用户真正想要什么 ││ └────┬─────┘ ││ ▼ ││ ┌──────────┐ ││ │ 规划分解 │ ← 将任务拆解为步骤 ││ └────┬─────┘ ││ ▼ ││ ┌──────────┐ ┌──────────┐ ││ │ 工具选择 │ ←→ │ 记忆检索 │ ← 历史经验辅助决策 ││ └────┬─────┘ └──────────┘ ││ ▼ ││ ┌──────────┐ ││ │ 执行操作 │ ← 调用工具 /API ││ └────┬─────┘ ││ ▼ ││ ┌──────────┐ ││ │ 结果评估 │ ← 检查是否达到目标 ││ └──┬───┬───┘ ││ │ │ ││ 是│ │否 ││ ▼ ▼ ││ 结束 回退 / 重试 ││ │ ││ └───────────────────────────────────────┘ │└──────────────────────────────────────────────────────────┘循环控制
Agent 需要在多种情况下进行循环:
| 情况 | 策略 |
|---|---|
| 任务未完成 | 继续下一步 |
| 执行失败 | 回退重试(有限次数) |
| 结果不满意 | 反思改进 |
| 遇到障碍 | 寻求替代方案 |
| 超出能力 | 请求用户澄清 |
主流 Agent 框架
框架对比
| 框架 | 语言 | 特点 | 适用场景 |
|---|---|---|---|
| LangChain / LangGraph | Python/JS | 功能全面,生态丰富 | 生产级应用 |
| AutoGen | Python | 多 Agent 协作 | 团队协作任务 |
| CrewAI | Python | 多 Agent 协作,强调角色 | 团队协作任务 |
| Dify | 多语言 | 低代码,WebUI | 快速原型 |
| Coze(扣子) | 中文 | 国产低代码平台 | 国内用户 |
| Agno | Python | 轻量,AI Native | 新兴框架 |
LangChain Agent 示例
from langchain.agents import AgentExecutor, create_react_agentfrom langchain_openai import ChatOpenAIfrom langchain.tools import tool
@tooldef calculator(expression: str) -> str: """执行数学计算""" return str(eval(expression))
@tooldef get_weather(city: str) -> str: """获取城市天气""" return f"{city}今天晴天,25°C"
tools = [calculator, get_weather]
agent = create_react_agent(llm, tools)agent_executor = AgentExecutor(agent=agent, tools=tools)
result = agent_executor.invoke({ "input": "计算 (25 + 17) * 3,然后告诉我成都天气"})CrewAI 多 Agent 协作
from crewai import Agent, Task, Crew
researcher = Agent( role="研究员", goal="收集相关信息", backstory="资深市场研究员", tools=[web_search])
writer = Agent( role="作家", goal="撰写报告", backstory="专业商业作家", tools=[file_write])
task1 = Task(description="研究竞品信息", agent=researcher)task2 = Task(description="撰写分析报告", agent=writer)
crew = Crew(agents=[researcher, writer], tasks=[task1, task2])result = crew.kickoff()应用场景
| 场景 | 说明 | 价值 |
|---|---|---|
| 个人助理 | 日程管理、邮件处理、信息检索 | 节省时间 |
| 自动化流程 | RPA 级任务自动化 | 提升效率 |
| 代码助手 | 代码生成、调试、审查 | 提升开发效率 |
| 研究助手 | 文献综述、数据分析 | 加速研究 |
| 智能客服 | 多轮对话、问题解答 | 降本增效 |
| 数据分析 | 数据清洗、可视化 | 数据驱动 |
| 金融分析 | 市场分析、风险评估 | 投资辅助 |
与纯 LLM 的关键区别
| 维度 | 纯 LLM | AI Agent |
|---|---|---|
| 交互方式 | 一次性响应 | 多轮自主迭代 |
| 工具能力 | 无 | 可调用多种工具 |
| 任务完成 | 回答问题 | 完成任务闭环 |
| 执行效率 | 高 | 需要规划与验证 |
| 适用场景 | 问答 / 生成 | 复杂自动化任务 |
| 自主性 | 低 | 高 |
| 错误恢复 | 无 | 可回退和重试 |
| 记忆持久性 | 仅当前会话 | 跨会话持久 |
总结
AI Agent 是 LLM 从”会说话”到”会做事”的关键跨越。理解 Agent 的架构与工作原理,是构建实用 AI 应用的基础。规划、记忆、工具三大能力的协同,决定了 Agent 的智能水平上限。
关于我
| 项目 | 内容 |
|---|---|
| 编辑 | echowang |
| 来源 | echospace |
| 邮箱 | echohaoran@gmail.com |
| 简介 | AI 爱好者,专注于大语言模型应用与智能体开发,分享技术与实践心得 |
| 社交 | 欢迎交流讨论,共同成长 |
Auth_Verified: 2026.03.21
