01-Agent 智能体开发实战指南(一):Agent基础概念
·
Agent 智能体开发实战指南(一):从 LLM 到 Agent 的认知升级
系列导读:这是《Agent 智能体开发实战指南》系列的第一篇,将从零开始介绍 Agent 的核心概念、工作原理,以及为什么它能让大语言模型从"只会回答"升级为"会做事"。
一、为什么我们需要 Agent?
1.1 LLM 的局限性
想象一下,你问一个博学但被关在密室里的专家:
“明天深圳的天气怎么样?”
“帮我查一下华胜天成的股价”
“给我订一张明天去北京的机票”
这个专家可以滔滔不绝地讲解气象学原理、分析股市走势、介绍订票流程——但他无法获取实时数据,也无法执行实际操作。
这就是纯 LLM 的困境:
- ❌ 无法访问实时数据(天气、股价、新闻)
- ❌ 无法执行外部操作(发邮件、调用 API、操作文件)
- ❌ 无法进行复杂计算(需要代码解释器)
- ❌ 知识截止于训练数据,无法学习新信息
1.2 Agent 的诞生
Agent(智能体)= 大语言模型(大脑)+ 工具集(手脚)+ 决策逻辑(思维)
Agent 让 LLM 从一个"被动的问答机器"变成"主动的任务执行者":
| 能力维度 | 纯 LLM | Agent |
|---|---|---|
| 数据来源 | 训练数据(静态) | 实时数据 + 训练数据 |
| 行动能力 | 仅生成文本 | 调用工具、影响现实 |
| 任务类型 | 单轮问答 | 多步骤复杂任务 |
| 决策方式 | 直接回答 | 思考→行动→观察→迭代 |
二、Agent 的核心架构
核心特点:
- 目标驱动:围绕用户的具体任务目标展开工作。
- 工具调用能力:能连接外部工具,弥补LLM 的局限性。
- 自主决策与迭代:不需要人工干预,能根据工具返回的结果,判断是否需要继续调用工具,或直接生成最终答案。

根据用户需求,创建工作流,根据工作流的进行自主调用不同的工具skills来完成任务
2.1 三层架构模型
┌─────────────────────────────────────┐
│ 决策逻辑层(思维) │
│ ReAct 框架:思考→行动→观察→再思考 │
├─────────────────────────────────────┤
│ 大语言模型层(大脑) │
│ ChatTongyi / GPT-4 / Claude 等 │
├─────────────────────────────────────┤
│ 工具集层(手脚) │
│ 天气查询 / 股价获取 / RAG 检索 / ... │
└─────────────────────────────────────┘
2.2 工作流程示意
用户提问
↓
┌──────────────────┐
│ LLM 分析任务 │ ← 思考:需要什么信息?
└──────────────────┘
↓
┌──────────────────┐
│ 选择并调用工具 │ ← 行动:调用 get_weather()
└──────────────────┘
↓
┌──────────────────┐
│ 接收工具返回结果 │ ← 观察:获取到天气数据
└──────────────────┘
↓
┌──────────────────┐
│ 判断是否完成 │ ← 再思考:还需要其他信息吗?
└──────────────────┘
↓
是 → 生成最终答案
否 → 回到第一步
三、Agent vs Chain:本质区别
3.1 执行流程对比
普通 Chain(固定流程):
# 流程在代码中写死
step1 = get_user_input()
step2 = process_data(step1)
step3 = generate_output(step2)
return step3
Agent(动态决策):
# 流程由 LLM 根据任务决定
agent = create_agent(model, tools=[tool_a, tool_b, tool_c])
# LLM 自己决定:先调哪个工具?需要调几个?
result = agent.invoke({"messages": [user_query]})
3.2 适用场景对比
| 场景特征 | 选择 Chain | 选择 Agent |
|---|---|---|
| 任务步骤固定 | ✅ | ❌ 杀鸡用牛刀 |
| 需要条件分支 | ⚠️ 代码复杂 | ✅ LLM 自动决策 |
| 工具调用不确定 | ❌ 无法处理 | ✅ 核心优势 |
| 需要多轮推理 | ❌ 难以实现 | ✅ 天然支持 |
经验法则:
- 简单、标准化任务 → Chain
- 复杂、需要决策的任务 → Agent
四、第一个 Agent 示例
4.1 最简天气查询 Agent
from langchain.agents import create_agent
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.tools import tool
@tool(description="查询天气")
def get_weather() -> str:
return "晴天"
agent = create_agent(
model=ChatTongyi(model="qwen3-max"), # 智能体的大脑LLM
tools=[get_weather], # 向智能体提供工具列表
system_prompt="你是一个聊天助手,可以回答用户问题。",
)
res = agent.invoke({
"messages": [
{"role": "user", "content": "明天深圳的天气如何?"},
]
})
for msg in res["messages"]:
print(type(msg).__name__, msg.content)
4.2 执行过程解析
当用户问"明天深圳的天气如何?"时,Agent 内部发生:
- 思考:用户问天气,我有 get_weather 工具可用
- 行动:调用 get_weather()工具
- 观察:工具返回"晴天"
- 生成答案:整合信息,回复用户
4.3 关键知识点
@tool 装饰器的作用:
- 将普通 Python 函数转换为 LangChain 可识别的 Tool 对象
- 自动提取函数名、参数、类型注解
- description 参数至关重要:LLM 靠它理解何时调用该工具
# 描述不够清晰
@tool(description="获取天气")
# 优秀的描述
@tool(description="查询指定城市的天气情况,返回包含气温、湿度、风向的详细信息")
五、核心概念速查
5.1 术语表
| 术语 | 含义 |
|---|---|
| LLM | 大语言模型,Agent 的"大脑" |
| Tool | 工具,LLM 可调用的函数/API |
| ReAct | Reasoning + Acting,Agent 的思考框架 |
| Chain | 固定的任务执行流程 |
| Agent | 能自主决策的工具调用系统 |
| Stream | 流式输出,实时展示思考过程 |
5.2 LangChain 核心组件
langchain.agents.create_agent → 创建 Agent
langchain_core.tools.tool → 定义工具
langchain_community.chat_models → 模型接入
六、常见误区与避坑指南
6.1 误区一:工具越多越好
错误做法:给 Agent 提供 50+ 工具,指望它自动找到合适的。
问题:
- LLM 选择工具的准确率随工具数量增加而下降
- Token 消耗剧增(每个工具的 description 都要传入)
- 调试困难
建议:
- 每个 Agent 专注 3-8 个核心工具
- 按场景拆分不同 Agent(客服 Agent、数据分析 Agent 等)
6.2 误区二:description 随便写
错误做法:
@tool(description="获取数据") # 太模糊!
问题:LLM 不知道何时该用这个工具。
建议:
@tool(description="获取股票价格,传入股票名称(如'华胜天成'),返回当前股价字符串")
6.3 误区三:忽略系统提示词
错误做法:
agent = create_agent(model, tools, system_prompt="你是助手") # 太简单
建议:
system_prompt="""你是严格遵循 ReAct 框架的智能体,必须按「思考→行动→观察」的流程解决问题。
每轮仅能调用 1 个工具,禁止单次调用多个工具。
告知用户你的思考过程,解释为什么调用某个工具。"""
七、本章小结
核心要点
- Agent 的本质:让 LLM 从"被动回答"升级为"主动做事"
- 三层架构:决策逻辑 + 大模型 + 工具集
- 与 Chain 的区别:动态决策 vs 固定流程
- 关键组件:@tool 装饰器、description 描述、system_prompt
下章预告
下一篇我们将深入 工具调用系统,学习:
- 如何设计优秀的工具函数
- 工具描述的最佳实践
- 多工具协作的场景
- 工具参数设计技巧
系列文章导航
- Agent 智能体开发实战指南(一):从 LLM 到 Agent 的认知升级(本文)
- Agent 智能体开发实战指南(二):工具调用系统深度解析
- Agent 智能体开发实战指南(三):ReAct 框架深度解析
- Agent 智能体开发实战指南(四):流式输出与状态管理
- Agent 智能体开发实战指南(五):中间件系统与动态提示词
- Agent 智能体开发实战指南(六):RAG 与向量存储实战
- Agent 智能体开发实战指南(七):项目架构设计与工程化实践
- Agent 智能体开发实战指南(八):UI 集成与生产部署
本文是《Agent 智能体开发实战指南》系列的第一篇,下一篇将深入讲解工具调用系统。
更多推荐



所有评论(0)