一、打破认知:Agent 和普通大模型到底有什么不一样?
很多人对 Agent 的初印象是 “更聪明的 ChatGPT”,这是典型的认知偏差。二者的核心差异,是被动应答和主动执行的本质区别。
1.1 普通大模型:被动的信息输出器
你问一句,它答一句,所有能力都局限在模型自身的训练知识里:
- 遇到实时信息、私有数据,只能编造幻觉
- 需要计算、操作外部系统时,只能给出步骤建议,无法实际执行
- 无法对真实世界产生任何影响,输出的只有文本
1.2 Agent:主动的任务执行者
Agent(智能体)是以大模型为决策大脑,通过调用工具、沉淀记忆,自主完成用户指定目标的系统。简单来说:大模型负责 “想”,Agent 负责 “想 + 做” 。
举个例子:你说 “帮我安排下周三和产品部的需求评审会”
- 普通大模型:会告诉你 “组织会议需要确认时间、预定会议室、发送邀请” 等方法论
- Agent:会自动查询所有人的日程、找空闲时间、预定会议室、发送会议邀请,最后告诉你 “已经安排好了”
1.3 核心差异对比
| 维度 | 普通大模型对话 | Agent 智能体 |
|---|---|---|
| 核心目标 | 回答用户问题 | 完成用户任务 |
| 能力边界 | 模型自身训练知识 | 可通过工具无限扩展 |
| 执行模式 | 一问一答,单次交互 | 多轮自主决策,自动迭代 |
| 输出结果 | 文本信息 | 行动操作 + 最终结果 |
| 错误来源 | 知识盲区、幻觉 | 工具调用错误、规划偏差 |
二、Agent 三大核心组件:拆解智能底层逻辑
所有 Agent 无论多复杂,本质都由三大核心模块构成,三者协作形成完整的智能闭环。
2.1 大模型:决策大脑
这是 Agent 的核心指挥中心,负责四件事:
- 理解需求:解析用户的自然语言指令,明确最终目标
- 规划拆解:把复杂任务拆成多个步骤,规划执行路径
- 工具选型:判断当前步骤需要调用哪个工具,生成对应参数
- 整合输出:汇总工具返回的结果,整理成自然语言回答用户
大模型的推理能力决定了 Agent 的智商上限:模型越强,任务规划越合理,复杂场景处理越稳定。
2.2 工具集:执行手脚
工具是 Agent 连接真实世界的桥梁,让大模型突破自身知识边界,完成实际操作。常见工具分为三类:
- 信息查询类:搜索引擎、数据库查询、知识库检索、天气查询
- 操作执行类:发送邮件、创建日程、代码执行、文件读写
- 计算分析类:计算器、数据统计、图表生成
工具的丰富度和稳定性,决定了 Agent 的能力边界。工具越完善,Agent 能做的事越多。
2.3 记忆系统:经验沉淀
让 Agent 记住之前的对话、做过的操作、学到的经验,避免重复犯错,支持连续交互。
- 短期记忆:当前会话的对话上下文,支撑多轮连续对话,会话结束即清空
- 长期记忆:跨会话的用户偏好、历史操作、知识沉淀,持久化存储
没有记忆的 Agent,每次对话都是从零开始,永远只能处理简单单轮任务。
三、入门必学:ReAct 推理范式
ReAct(Reasoning + Acting,推理 + 行动)是目前最主流、最基础的 Agent 工作范式,也是几乎所有 Agent 框架的底层逻辑。
3.1 核心:三步循环
ReAct 让大模型像人一样解决问题:先思考,再行动,看完结果再思考,循环往复直到任务完成。完整循环包含三个核心步骤:
- Thought(思考) :分析当前状态,判断下一步该做什么,为什么这么做
- Action(行动) :调用对应的工具,传入参数,执行操作
- Observation(观察) :获取工具执行的结果,作为下一轮思考的依据
当大模型判断任务已经完成时,就会输出最终答案,结束循环。
3.2 完整流程示例:计算 1234 × 5678
表格
| 步骤 | 内容 |
|---|---|
| 用户提问 | 帮我算一下 1234 × 5678 等于多少? |
| Thought(思考) | 用户需要计算两个大数的乘积,直接口算容易出错,我应该调用计算器工具来得到准确结果。 |
| Action(行动) | 调用 calculator 工具,传入参数:expression = "1234 * 5678" |
| Observation(观察) | 工具返回结果:7006652 |
| Thought(思考) | 我已经得到了准确的计算结果,任务完成,可以回答用户了。 |
| 最终回答 | 1234 × 5678 的计算结果是 7006652。 |
理解了这个循环,你就理解了 80% 的 Agent 底层逻辑。后续所有复杂的多 Agent、工作流,本质都是这个循环的扩展和组合。
四、实战:10 分钟跑通你的第一个 Agent
我们基于 LangChain 框架,实现一个带计算器工具的极简 Agent,亲手跑通完整的 ReAct 循环。
4.1 环境准备
- Python 3.10 及以上版本
- 安装核心依赖
pip install langchain langchain-openai python-dotenv
- 准备大模型 API 密钥:支持 DeepSeek、通义千问、GPT 等所有 OpenAI 兼容接口
4.2 完整可运行代码
新建 first_agent.py 文件,复制以下代码,填入你的 API 配置即可运行:
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain.agents import create_agent
# 加载环境变量
load_dotenv()
# ---------------------- 1. 初始化大模型 ----------------------
llm = ChatOpenAI(
model="deepseek-chat", # 替换为你使用的模型名称
api_key="你的API密钥",
base_url="https://api.deepseek.com/v1", # 对应模型的接口地址
temperature=0 # Agent场景固定设为0,输出更稳定,减少随机发散
)
# ---------------------- 2. 定义工具 ----------------------
# 用 @tool 装饰器快速把普通函数封装成Agent可调用的标准工具
@tool
def calculator(expression: str) -> str:
"""
专业数学计算器,支持加减乘除、括号运算。
传入数学表达式字符串,返回计算结果。
"""
try:
# 简单演示用eval实现,生产环境请使用安全的计算库
result = eval(expression)
return f"计算结果:{result}"
except Exception as e:
return f"计算失败:{str(e)}"
# Agent可用的工具列表
tools = [calculator]
# ---------------------- 3. 创建Agent ----------------------
agent = create_agent(
model=llm,
tools=tools,
system_prompt="你是一个严谨的计算助手,所有数学计算必须调用计算器工具,禁止口算回答。"
)
# ---------------------- 4. 运行测试 ----------------------
if __name__ == "__main__":
user_question = "计算 1234 * 5678 的结果是多少?"
# 运行配置:限制最大执行步数,防止Agent陷入死循环
run_config = {
"recursion_limit": 5
}
# ========== 运行方式1:直接获取最终结果 ==========
result = agent.invoke(
{"messages": [{"role": "user", "content": user_question}]},
config=run_config
)
print("最终回答:", result["messages"][-1].content)
# ========== 运行方式2:按节点流式打印执行步骤(推荐) ==========
# 可以清晰看到「模型决策 → 工具执行 → 结果总结」的完整ReAct流程
# print(f"用户提问:{user_question}\n")
# print("===== 执行步骤 =====")
# for step in agent.stream(
# {"messages": [{"role": "user", "content": user_question}]},
# config=run_config,
# stream_mode="updates"
# ):
# for node_name, node_output in step.items():
# print(f"\n执行节点:{node_name}")
# messages = node_output.get("messages", [])
# for msg in messages:
# if hasattr(msg, "tool_calls") and msg.tool_calls:
# for tc in msg.tool_calls:
# print(f" 调用工具:{tc['name']}")
# print(f" 传入参数:{tc['args']}")
# if msg.content:
# print(f" 输出内容:{msg.content}")
# print("\n===== 执行结束 =====")
4.3 执行效果解析
运行代码后,你会看到完整的两阶段执行过程,对应 ReAct 的核心循环:
- 模型决策阶段:大模型分析问题后,决定调用计算器工具,生成对应的调用参数
- 工具执行阶段:计算器工具接收参数,执行运算,返回计算结果
- 结果总结阶段:大模型拿到工具返回的结果,整理成自然语言回答,输出最终答案
✅ 恭喜你跑通了第一个真正意义上的 Agent。仔细观察执行步骤,感受 “思考 - 行动 - 观察” 的循环逻辑,这是所有 Agent 的核心。
4.4 关键细节说明
- temperature=0:Agent 场景必须设置为 0,降低模型随机性,保证工具调用和任务规划的稳定性
- 工具描述很重要:
@tool下方的函数文档字符串会被模型读取,描述越清晰准确,模型调用准确率越高 - recursion_limit:生产环境必加参数,限制最大执行轮数,避免 Agent 陷入无限工具调用死循环
5、明日预告
第 2 天我们会给 Agent 装上记忆系统,实现连续多轮对话,让它能记住之前的对话内容,支持上下文关联的提问(比如 “刚才的结果乘以 2 是多少”),彻底解决 “一问一失忆” 的问题。