AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章03:拆解AI Agent的核心模块
拆解AI Agent的四大核心模块:感知→思考→行动→记忆,缺一不可!🔧
导读:上一期我们搞清楚了AI Agent、传统AI和ChatGPT的区别。今天我们要深入Agent内部,像拆手表一样,把它的每一个核心模块拆开来仔细看。搞懂这四个模块,你就掌握了Agent开发的底层密码!🔑
一、开篇:Agent的"身体构造" 🏗️
还记得上期提到的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 行动模块的执行流程
4.5 工具调用的常见陷阱
| 陷阱 | 描述 | 解决方案 |
|---|---|---|
| 🔴 工具选择错误 | Agent选了一个不合适的工具 | 优化工具描述,让意图更明确 |
| 🔴 参数传递错误 | 传给工具的参数格式不对 | 在docstring中明确参数格式 |
| 🔴 无限循环 | Agent反复调用同一个工具 | 设置最大迭代次数 |
| 🔴 错误处理缺失 | 工具报错后Agent不知道怎么办 | 添加错误处理和重试机制 |
五、模块四:记忆模块 💾 —— Agent的"经验库"
5.1 为什么Agent需要记忆?
想象一下,你跟一个失忆的人合作:
- 每次都要重新介绍自己 😩
- 每次都要重复之前的讨论 😩
- 犯过的错误会一犯再犯 😩
没有记忆的Agent也一样! 记忆模块让Agent能够:
- ✅ 记住对话上下文
- ✅ 积累历史经验
- ✅ 从错误中学习
- ✅ 提供个性化服务
5.2 记忆的三种类型
| 记忆类型 | 类比 | 存储内容 | 存储方式 | 生命周期 |
|---|---|---|---|---|
| 📌 短期记忆 | 工作记忆 | 当前对话的上下文 | 消息列表 | 单次会话 |
| 📚 长期记忆 | 人生记忆 | 历史对话、学到的知识 | 向量数据库 | 永久存储 |
| 🧬 程序记忆 | 肌肉记忆 | 工具使用方法、行为规则 | 代码/配置 | 永久固定 |
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 | 💾 记忆 | 检索用户历史偏好 |
| 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期,持续更新中…
作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。
👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)。
🔔 关注专栏,不错过后续精彩内容
更多推荐
所有评论(0)