拆解AI Agent的四大核心模块:感知→思考→行动→记忆,缺一不可!🔧

导读:上一期我们搞清楚了AI Agent、传统AI和ChatGPT的区别。今天我们要深入Agent内部,像拆手表一样,把它的每一个核心模块拆开来仔细看。搞懂这四个模块,你就掌握了Agent开发的底层密码!🔑


一、开篇:Agent的"身体构造" 🏗️

还记得上期提到的Agent核心公式吗?

AI Agent = 大模型(大脑)🧠 + 工具(手脚)🦾 + 记忆(经验)📝 + 规划(策略)🗺️

今天我们把这个公式展开,详细拆解每一个模块的内部构造。

先看全景图:

🤖 AI Agent 核心架构

👁️ 感知模块

🧠 思考模块

🦾 行动模块

👀 观察模块

💾 记忆模块

外部环境

💡 核心理解:Agent的工作就是一个无限循环 —— 感知环境 → 思考决策 → 采取行动 → 观察结果 → 再思考… 直到任务完成。


二、模块一:感知模块 👁️ —— Agent的"眼睛和耳朵"

2.1 什么是感知模块?

感知模块负责接收和理解来自外部世界的信息。就像人的眼睛和耳朵一样,它让Agent能够"看到"和"听到"用户的需求和环境变化。

2.2 感知的三种类型

感知类型 输入来源 处理方式 应用场景
📝 文本感知 用户输入的文字 LLM直接理解 对话、问答、指令
🖼️ 视觉感知 图片、视频、截图 多模态模型解析 UI理解、文档分析
📊 结构化感知 API返回、数据库查询结果 数据解析+理解 数据分析、监控

2.3 感知的关键挑战

🔹 挑战一:信息过载

用户可能丢过来一大段文字、几张图片、一个Excel文件。Agent需要快速提取关键信息,过滤掉噪音。

🔹 挑战二:意图识别

用户说"帮我处理一下那个东西"——"那个东西"是什么?"处理"是什么意思?感知模块需要准确理解用户的真实意图

🔹 挑战三:多模态融合

当用户同时发送文字+图片时,Agent需要将两种信息融合理解,而不是分开处理。

2.4 代码示例:感知模块实现

from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI

# 多模态感知:同时处理文字和图片
llm = ChatOpenAI(model="gpt-4o")

# 用户发送了一张截图 + 一段文字
message = HumanMessage(
    content=[
        {"type": "text", "text": "这个报错是什么意思?怎么解决?"},
        {"type": "image_url", "image_url": {"url": "screenshot.png"}}
    ]
)

response = llm.invoke([message])
# Agent "看到" 了截图中的错误信息,并 "理解" 了用户的问题

重点:感知模块的核心不是"接收数据",而是**“理解数据”**。同样的数据,理解深度不同,Agent的能力天差地别。


三、模块二:思考模块 🧠 —— Agent的"大脑"

3.1 思考模块的核心:大语言模型(LLM)

思考模块是Agent的核心中的核心,它由大语言模型驱动。所有的理解、推理、规划、决策都在这里完成。

感知到的信息

思考模块

思考过程

理解意图

检索记忆

制定计划

选择工具

预测结果

决策输出

3.2 思考的三种模式

模式 英文 原理 适用场景 示例
🚀 快速思考 System 1 直觉式,直接给出答案 简单问题 “1+1=?” → “2”
🐢 深度思考 System 2 逐步推理,逻辑分析 复杂问题 数学证明、代码Debug
🎨 创造思考 Creative 发散思维,生成新方案 创意任务 写文章、设计方案

3.3 思考模块的核心技术

🔹 技术一:Chain of Thought(CoT,思维链)

让模型一步步思考,而不是直接跳到答案:

用户:一个水池有进水管和出水管,进水管每小时注水3立方米...

❌ 直接回答(容易出错):
"答案是12小时"

✅ CoT思考(更准确):
"让我一步步分析:
Step 1: 进水速度 = 3m³/h
Step 2: 出水速度 = 2m³/h  
Step 3: 净进水速度 = 3-2 = 1m³/h
Step 4: 水池容量 = 12m³
Step 5: 所需时间 = 12/1 = 12小时"

🔹 技术二:ReAct(推理+行动)

将**思考(Reasoning)行动(Acting)**交织在一起:

# ReAct 模式的思考过程示例
thought_1 = "用户想要分析股价,我需要先获取数据"
action_1 = "调用 web_search('特斯拉股价 最近一个月')"
observation_1 = "获取到30天的股价数据..."

thought_2 = "数据已获取,接下来生成走势图"
action_2 = "调用 code_executor('生成股价走势图代码')"
observation_2 = "图表已生成..."

thought_3 = "现在可以综合分析并给出建议了"
action_3 = "生成分析报告"

🔹 技术三:Reflection(反思)

Agent在执行过程中审视自己的输出,发现错误并自我纠正:

Agent初始回答:特斯拉股价上涨了20%
   ↓ [反思]
Agent自检:等等,让我重新核实数据...
   ↓ [重新计算]
Agent修正回答:根据最新数据,特斯拉股价实际上涨了8.3%,
              主要受Q3财报超预期影响

🔑 关键洞察:思考模块的质量直接决定了Agent的智能程度。同样的工具,不同的思考模式,效果天差地别。

3.4 思考模块的配置示例

from langchain_openai import ChatOpenAI

# 配置思考模块
llm = ChatOpenAI(
    model="gpt-4o",           # 选择"大脑"
    temperature=0.7,          # 控制创造性(0=严谨,1=发散)
    max_tokens=4096,          # 思考的"长度限制"
)

# 通过System Prompt塑造思考方式
system_prompt = """你是一个严谨的数据分析Agent。
请遵循以下思考框架:
1. 先理解用户的核心需求
2. 列出需要获取的数据
3. 选择合适的工具
4. 执行并验证结果
5. 给出有数据支撑的结论"""

四、模块三:行动模块 🦾 —— Agent的"手和脚"

4.1 行动模块是什么?

行动模块让Agent从"纸上谈兵"变成"真正做事"。它通过**调用工具(Tools)**来与外部世界交互。

4.2 工具的类型大全

工具类型 功能 典型示例 使用频率
🔍 信息获取 搜索、查询 搜索引擎、数据库查询 ⭐⭐⭐⭐⭐
💻 代码执行 运行代码 Python解释器、SQL执行器 ⭐⭐⭐⭐
📁 文件操作 读写文件 文件读写、PDF解析 ⭐⭐⭐⭐
🌐 API调用 调用外部服务 天气API、邮件发送 ⭐⭐⭐⭐
🖥️ 系统操作 控制计算机 鼠标点击、键盘输入 ⭐⭐⭐
📊 数据计算 精确计算 计算器、统计分析 ⭐⭐⭐

4.3 工具定义的标准格式

在LangChain中,工具使用@tool装饰器定义:

from langchain.tools import tool

@tool
def web_search(query: str) -> str:
    """搜索互联网获取最新信息。当需要查询实时数据时使用此工具。
    
    Args:
        query: 搜索关键词
    """
    # 实际的搜索逻辑
    results = search_engine.search(query)
    return format_results(results)

@tool  
def execute_python(code: str) -> str:
    """执行Python代码并返回结果。当需要进行计算或数据处理时使用。
    
    Args:
        code: 要执行的Python代码
    """
    result = exec(code)
    return str(result)

重点:工具的描述(docstring)非常重要!Agent是通过阅读工具描述来决定什么时候用哪个工具的。描述写得不好,Agent就选不对工具。

4.4 行动模块的执行流程

🌍 外部环境 🔧 工具执行器 🎯 工具选择器 🧠 思考模块 🌍 外部环境 🔧 工具执行器 🎯 工具选择器 🧠 思考模块 我需要搜索特斯拉股价 匹配最佳工具: web_search 调用 web_search("特斯拉股价") HTTP请求搜索引擎 返回搜索结果 观察结果: 获取到股价数据 思考下一步...

4.5 工具调用的常见陷阱

陷阱 描述 解决方案
🔴 工具选择错误 Agent选了一个不合适的工具 优化工具描述,让意图更明确
🔴 参数传递错误 传给工具的参数格式不对 在docstring中明确参数格式
🔴 无限循环 Agent反复调用同一个工具 设置最大迭代次数
🔴 错误处理缺失 工具报错后Agent不知道怎么办 添加错误处理和重试机制

五、模块四:记忆模块 💾 —— Agent的"经验库"

5.1 为什么Agent需要记忆?

想象一下,你跟一个失忆的人合作:

  • 每次都要重新介绍自己 😩
  • 每次都要重复之前的讨论 😩
  • 犯过的错误会一犯再犯 😩

没有记忆的Agent也一样! 记忆模块让Agent能够:

  • ✅ 记住对话上下文
  • ✅ 积累历史经验
  • ✅ 从错误中学习
  • ✅ 提供个性化服务

5.2 记忆的三种类型

💾 Agent 记忆系统

当前对话

历史积累

技能规则

📌 短期记忆

工作记忆

📚 长期记忆

知识库

🧬 程序记忆

行为模式

Agent决策

记忆类型 类比 存储内容 存储方式 生命周期
📌 短期记忆 工作记忆 当前对话的上下文 消息列表 单次会话
📚 长期记忆 人生记忆 历史对话、学到的知识 向量数据库 永久存储
🧬 程序记忆 肌肉记忆 工具使用方法、行为规则 代码/配置 永久固定

5.3 短期记忆实现

from langgraph.graph.message import add_messages
from typing import Annotated

# 滑动窗口:只保留最近20轮对话(40条消息)
MAX_MESSAGES = 40

def _windowed_messages(old, new):
    """短期记忆:滑动窗口机制"""
    return add_messages(old, new)[-MAX_MESSAGES:]

5.4 长期记忆实现

from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings

# 长期记忆:向量数据库存储
vectorstore = Chroma(
    collection_name="agent_memory",
    embedding_function=OpenAIEmbeddings()
)

# 存入记忆
def save_to_memory(agent_id, experience):
    vectorstore.add_texts(
        texts=[experience],
        metadatas=[{"agent_id": agent_id, "type": "experience"}]
    )

# 检索记忆
def recall_from_memory(query, agent_id):
    results = vectorstore.similarity_search(
        query=query, 
        k=5,  # 检索最相关的5条记忆
    )
    return results

🔑 记忆模块的核心价值:让Agent从"一次性工具"变成"越用越聪明的伙伴"。


六、四大模块的协同工作:一个完整的例子 🎬

让我们通过一个完整的例子,看看四大模块如何协同工作

📋 任务:“帮我查一下明天北京的天气,如果下雨就提醒我带伞”

🦾 行动 💾 记忆 🧠 思考 👁️ 感知 👤 用户 🦾 行动 💾 记忆 🧠 思考 👁️ 感知 👤 用户 "查明天北京天气,下雨提醒带伞" 解析意图:查天气+条件判断+提醒 检索:用户偏好? 用户之前说过喜欢简洁的通知 规划:1.查天气 2.判断 3.提醒 调用工具:weather_api("北京", "明天") 结果:小雨,15-20°C 判断:有雨!需要提醒 调用工具:send_notification("明天有雨,记得带伞🌂") 通知已发送 记录:已完成天气查询任务 "已查明天北京小雨15-20°C,已设置带伞提醒🌂"

各模块分工表

步骤 负责模块 具体动作
1 👁️ 感知 接收用户文字,理解意图
2 🧠 思考 分析需求,制定执行计划
3 💾 记忆 检索用户历史偏好
4 🦾 行动 调用天气API查询数据
5 🧠 思考 分析结果,判断是否下雨
6 🦾 行动 发送提醒通知
7 💾 记忆 记录本次交互经验

七、四大模块的配置对比表 📊

模块 核心组件 可选方案 推荐配置 成本
👁️ 感知 输入解析器 文本/多模态/语音 多模态(GPT-4o) 💰💰💰
🧠 思考 大语言模型 GPT-4o/Claude/DeepSeek GPT-4o或DeepSeek 💰💰💰💰
🦾 行动 工具集 搜索/代码/API/文件 按需配置 💰💰
💾 记忆 存储系统 Redis/向量DB/文件 Chroma+Redis 💰💰

💡 成本优化建议:思考模块是最大的成本来源(LLM调用费用),建议对简单任务使用轻量模型,复杂任务才用高级模型。


八、本期小结 📝

模块 核心职责 关键技术 一句话总结
👁️ 感知 接收和理解信息 多模态、意图识别 Agent的"眼睛和耳朵"
🧠 思考 推理和决策 CoT、ReAct、Reflection Agent的"大脑"
🦾 行动 执行具体操作 工具调用、API集成 Agent的"手和脚"
💾 记忆 存储和检索经验 向量DB、滑动窗口 Agent的"经验库"

🔥 记住:四个模块缺一不可!没有感知,Agent是"瞎子";没有思考,Agent是"木头";没有行动,Agent是"纸上谈兵";没有记忆,Agent是"金鱼"。


📢 下期预告:《手把手搭建你的第一个Agent:用LangChain 10分钟跑通"会说话的助手"》—— 理论够了,该动手了!下期带你从零开始,一步步搭建一个真正能跑的Agent!💻


📌 三连走起!点赞+收藏+关注,学习Agent不迷路! 💪

📚 专栏第3/24期,持续更新中…

作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。

👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)
🔔 关注专栏,不错过后续精彩内容

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐