《Agent 学习路线:从工具调用到任务执行系统》
30. Agent 需要解决什么问题
Agent 主要用来解决普通聊天模型不擅长的问题。
普通模型更适合:
- 回答问题
- 总结文本
- 改写内容
- 生成代码片段
- 解释概念
而 Agent 更适合:
- 多步骤任务
- 需要调用外部工具的任务
- 需要读取文件、分析数据、生成结果的任务
- 需要搜索、判断、再执行的任务
- 需要长期上下文和任务状态的任务
例如:
1 | |
这个任务不是一次回答就能完成的。Agent 可能需要:
- 读取项目目录
- 分析文件结构
- 打开关键代码文件
- 总结模块功能
- 判断启动方式
- 生成 README 文档
这类任务就非常适合 Agent。
31. Agent 的核心组成
一个 Agent 系统一般由以下几个部分组成:
1 | |
31.1 大模型
大模型是 Agent 的“大脑”。
它负责理解用户目标、拆解任务、判断下一步应该做什么,以及根据工具返回的结果继续推理。
31.2 任务规划
任务规划是 Agent 的关键能力。
例如用户说:
1 | |
Agent 不能只回答一句“可以使用 RAG”。它应该拆解为:
- 明确需求
- 选择技术栈
- 设计文档处理流程
- 设计向量检索流程
- 设计 Prompt 模板
- 编写后端接口
- 编写前端页面
- 测试问答效果
- 优化检索质量
任务规划决定了 Agent 是否能处理复杂问题。
31.3 工具调用
工具调用让 Agent 具备执行能力。
常见工具包括:
- 搜索工具
- 浏览器工具
- 文件读写工具
- 数据库工具
- Python 执行器
- Shell 命令
- API 接口
- 邮件工具
- 日历工具
没有工具调用,Agent 仍然只是一个会说话的模型。
有了工具调用,Agent 才能真正完成任务。
31.4 记忆系统
记忆系统用于保存上下文、历史信息或用户偏好。
可以分为:
- 短期记忆:当前对话上下文
- 长期记忆:跨会话保存的信息
- 任务记忆:任务执行过程中的中间状态
- 知识记忆:文档、数据库、知识库内容
例如,一个写作 Agent 可以记住用户喜欢的文章风格;一个项目管理 Agent 可以记住项目目标、成员分工和当前进度。
31.5 执行环境
执行环境是 Agent 真正运行任务的地方。
例如:
- 在 Python 环境中分析 CSV
- 在 Shell 中运行测试命令
- 在浏览器中打开网页
- 在数据库中执行查询
- 在文件系统中创建和修改文件
执行环境越强,Agent 能完成的任务越复杂。
31.6 结果反馈
Agent 每执行一步,都需要观察工具返回的结果。
例如:
1 | |
这个过程就是:
1 | |
Agent 的强大之处就在于它可以根据反馈不断调整行为,而不是一次性生成答案。
32. Agent 的基本工作流程
一个典型 Agent 的工作流程可以表示为:
1 | |
例如用户输入:
1 | |
Agent 可能会执行:
- 搜索最近 AI 新闻
- 筛选重要事件
- 读取新闻内容
- 提取关键信息
- 判断哪些内容适合公众号
- 组织文章结构
- 写出标题、摘要和正文
- 输出最终文章
这个过程比普通问答更复杂,因为它包含搜索、筛选、判断、写作等多个步骤。
33. ReAct:Agent 的经典思路
ReAct 是 Reasoning and Acting 的缩写,可以理解为“推理 + 行动”。
它的基本模式是:
1 | |
也就是:
1 | |
例如:
1 | |
ReAct 思路非常适合理解 Agent 的基本运行方式。
34. Agent 和 Workflow 的区别
学习 Agent 时,很容易把 Agent 和 Workflow 混在一起。
Workflow 是固定流程。
例如:
1 | |
每一步都是提前设计好的。
Agent 则更灵活。
它可以根据当前情况决定下一步做什么。
例如:
1 | |
可以简单理解:
| 类型 | 特点 | 适合场景 |
|---|---|---|
| Workflow | 流程固定、稳定可控 | 标准业务流程 |
| Agent | 流程动态、灵活决策 | 开放式复杂任务 |
实际项目中,不一定非要做纯 Agent。
很多成熟系统会采用:
1 | |
也就是大流程固定,局部环节让 Agent 自主决策。
这种方式通常更可靠,也更适合真实业务落地。
35. Agent 常见应用场景
35.1 数据分析 Agent
数据分析 Agent 可以读取 Excel、CSV 或数据库,然后自动分析数据。
典型任务:
- 读取数据字段
- 清洗缺失值
- 生成统计结果
- 绘制图表
- 总结业务发现
- 输出分析报告
例如:
1 | |
35.2 编程 Agent
编程 Agent 可以辅助开发、调试和重构代码。
典型任务:
- 阅读项目结构
- 修改代码
- 运行测试
- 分析报错
- 修复 bug
- 生成文档
- 重构模块
例如:
1 | |
35.3 搜索研究 Agent
搜索研究 Agent 可以完成资料收集和研究总结。
典型任务:
- 搜索资料
- 阅读网页
- 对比信息
- 提取观点
- 生成报告
- 附带引用来源
例如:
1 | |
35.4 办公自动化 Agent
办公自动化 Agent 可以处理邮件、日历、文档和表格。
典型任务:
- 总结邮件
- 安排会议
- 生成会议纪要
- 整理待办事项
- 修改文档
- 生成汇报材料
例如:
1 | |
35.5 个人助理 Agent
个人助理 Agent 可以帮助用户管理日常任务。
典型任务:
- 日程规划
- 学习计划
- 旅行规划
- 信息整理
- 提醒事项
- 长期目标跟踪
例如:
1 | |
36. 学习 Agent 需要掌握哪些基础
学习 Agent 需要的知识可以分为五层。
1 | |
36.1 模型基础
需要理解:
- LLM 的输入输出
- Token 和上下文窗口
- temperature 等参数
- 模型幻觉
- Prompt 约束
- 多轮对话上下文
不需要一开始就训练模型,但要知道模型擅长什么、不擅长什么。
36.2 Prompt 基础
Agent 中的 Prompt 不只是普通提问,而是用于控制模型行为。
例如:
1 | |
Agent Prompt 通常要定义:
- 角色
- 任务目标
- 可用工具
- 工具使用规则
- 输出格式
- 错误处理方式
36.3 工具调用基础
需要理解:
- Function Calling
- JSON 参数
- API 请求
- 工具返回值
- 错误处理
- 权限控制
一个简单工具可以设计成:
1 | |
模型负责决定什么时候调用工具,以及传入什么参数。
36.4 编排框架
常见 Agent 编排框架包括:
- LangChain
- LangGraph
- LlamaIndex
- AutoGen
- CrewAI
- Semantic Kernel
这些框架可以帮助我们管理:
- 多步骤流程
- 工具调用
- 状态保存
- 多 Agent 协作
- 错误重试
- 任务图编排
初学时不建议一上来就追求复杂框架。
可以先手写一个简单 Agent,再学习框架。
36.5 工程能力
Agent 真正落地时,工程能力非常重要。
需要掌握:
- Python
- HTTP API
- 数据库
- 文件系统
- 日志
- 异常处理
- Docker
- 权限控制
- 成本控制
- 监控告警
Agent 系统不是只有 Prompt,它本质上是一个完整的软件系统。
37. Agent 学习路线
如果以应用开发为目标,可以按照下面路线学习:
1 | |
37.1 第一阶段:Prompt 和 API
目标是会调用大模型,并能写出稳定的 Prompt。
需要完成:
- 调用大模型 API
- 理解 messages 格式
- 设置 system prompt
- 控制输出格式
- 使用 JSON 输出
- 处理流式输出
练习项目:
1 | |
37.2 第二阶段:Function Calling
目标是让模型学会调用工具。
需要完成:
- 定义工具名称
- 编写工具描述
- 设计参数 schema
- 解析模型生成的工具调用
- 执行工具函数
- 把工具结果返回给模型
练习项目:
1 | |
37.3 第三阶段:简单 Agent 循环
目标是理解 Agent 的核心执行过程。
可以实现一个最小 Agent:
1 | |
练习项目:
1 | |
37.4 第四阶段:RAG + Agent
目标是让 Agent 可以使用知识库。
需要完成:
- 文档切分
- embedding 向量化
- 向量数据库存储
- 相似度检索
- 检索结果重排
- 基于资料回答
- 引用来源
练习项目:
1 | |
37.5 第五阶段:使用 Agent 框架
目标是学习成熟框架的设计方式。
可以选择:
1 | |
重点学习:
- State
- Node
- Edge
- Conditional Edge
- Tool Node
- Checkpoint
- Human-in-the-loop
练习项目:
1 | |
37.6 第六阶段:多 Agent 协作
多 Agent 是指让不同角色的 Agent 协同完成任务。
例如:
1 | |
多 Agent 不一定总是更好,因为它会增加成本和复杂度。
适合在任务明显可以分工时使用。
37.7 第七阶段:工程化部署
目标是让 Agent 可以稳定运行在真实环境中。
需要关注:
- 权限控制
- 工具调用安全
- 日志记录
- 失败重试
- 成本统计
- 用户反馈
- 任务状态保存
- 并发处理
- 服务部署
练习项目:
1 | |
38. 一个最小 Agent 示例
下面用伪代码表示一个最简单的 Agent 思路:
1 | |
这个示例虽然简单,但已经包含 Agent 的关键思想:
1 | |
39. Agent 开发中的常见问题
39.1 工具描述不清楚
如果工具描述不清楚,模型可能不知道什么时候调用工具。
错误示例:
1 | |
更好的写法:
1 | |
39.2 工具权限过大
Agent 可以调用工具,也意味着它可能误操作。
例如:
- 删除文件
- 修改数据库
- 发送邮件
- 提交订单
- 执行危险命令
因此需要设计权限边界。
常见做法:
- 高风险操作需要用户确认
- 工具参数要校验
- 限制可访问目录
- 限制可执行命令
- 记录操作日志
39.3 缺少状态管理
复杂任务往往需要保存状态。
例如:
1 | |
如果没有状态管理,Agent 很容易重复执行、遗漏步骤或陷入循环。
39.4 缺少错误处理
工具调用可能失败。
例如:
- 网络超时
- 文件不存在
- API 限流
- 参数错误
- 权限不足
- 数据库连接失败
Agent 系统需要告诉模型错误原因,并允许它选择下一步。
例如:
1 | |
39.5 过度依赖 Agent
不是所有任务都需要 Agent。
如果任务流程固定,普通 Workflow 更稳定、更便宜。
例如:
1 | |
这种任务更适合固定流程,而不是完全交给 Agent 自主决定。
40. Agent 项目实践路线
学习 Agent 最好的方式是做项目。
可以按下面顺序练习。
40.1 项目一:命令行工具调用 Agent
功能:
- 用户在命令行输入问题
- 模型判断是否需要调用工具
- 支持计算器工具
- 支持时间查询工具
- 支持简单文本处理工具
目标:
1 | |
40.2 项目二:文件阅读 Agent
功能:
- 读取本地 txt、md、csv 文件
- 总结文件内容
- 根据用户问题查找相关片段
- 输出结构化回答
目标:
1 | |
40.3 项目三:个人知识库 Agent
功能:
- 上传文档
- 自动切分
- 生成 embedding
- 存入向量数据库
- 根据问题检索相关内容
- 基于资料回答
- 给出引用来源
目标:
1 | |
40.4 项目四:代码助手 Agent
功能:
- 读取项目目录
- 分析代码结构
- 定位 bug
- 修改代码
- 运行测试
- 生成说明文档
目标:
1 | |
40.5 项目五:研究报告 Agent
功能:
- 根据主题搜索资料
- 提取关键信息
- 自动生成大纲
- 写出报告正文
- 整理参考来源
目标:
1 | |
41. Agent 工程化需要注意什么
Agent 从 Demo 到真实项目,中间还有很大距离。
真实项目中要重点关注:
41.1 稳定性
Agent 不应该无限循环,也不应该重复调用同一个工具。
可以设置:
- 最大执行步数
- 最大工具调用次数
- 超时时间
- 失败重试次数
- 终止条件
41.2 可控性
用户应该知道 Agent 做了什么。
例如:
1 | |
可控性越强,用户越容易信任 Agent。
41.3 安全性
高风险工具必须加限制。
例如:
- 发邮件前确认
- 删除文件前确认
- 修改数据库前确认
- 支付下单前确认
- 执行 Shell 命令前检查
41.4 可观测性
需要记录:
- 用户请求
- 模型输入
- 模型输出
- 工具调用参数
- 工具返回结果
- 执行耗时
- 错误日志
- 用户反馈
否则系统出错时很难排查。
41.5 成本控制
Agent 往往会多次调用模型和工具,因此成本可能比普通问答更高。
可以通过以下方式控制成本:
- 限制最大执行步数
- 使用小模型处理简单任务
- 对检索结果进行压缩
- 缓存重复结果
- 控制上下文长度
- 对长任务拆分阶段执行
42. Agent 和 RAG 的关系
RAG 解决的是“从哪里找知识”的问题。
Agent 解决的是“如何完成任务”的问题。
二者可以结合:
1 | |
例如:
1 | |
系统可以这样工作:
- Agent 分析任务
- RAG 检索公司产品文档
- Agent 判断是否还需要更多资料
- 再次检索相关案例
- 模型生成产品介绍
- Agent 检查是否符合格式要求
- 输出最终内容
所以,RAG 可以看作 Agent 的一种重要工具。
43. Agent 和微调的关系
Agent 不一定需要微调。
大多数 Agent 项目可以先通过:
- Prompt
- Tool Calling
- RAG
- Workflow
- 规则约束
来实现。
微调更适合解决以下问题:
- 模型总是不按固定格式输出
- 某类任务模式非常稳定
- 需要特定行业表达风格
- 需要减少复杂 Prompt 的长度
- 需要提高某类任务的一致性
但如果问题是知识更新,优先考虑 RAG,而不是微调。
可以简单总结:
1 | |
44. Agent 学习建议
学习 Agent 时,不建议一开始就追求复杂概念。
更好的路线是:
- 先写一个普通大模型 API 调用
- 再加入一个简单工具
- 再让模型自动选择工具
- 再加入多轮执行循环
- 再加入文件读取能力
- 再加入 RAG
- 再学习 LangGraph 等框架
- 最后考虑多 Agent 和工程化部署
学习过程中要多做小项目。
不要只看概念,因为 Agent 的难点往往出现在工程细节中:
- 工具参数设计
- 错误处理
- 状态保存
- 上下文控制
- 成本控制
- 权限安全
- 输出稳定性
真正理解 Agent,必须亲手实现至少一个可以运行的小系统。
45. Agent 总结
Agent 是大模型应用从“问答工具”走向“任务执行系统”的重要方向。
它的核心不是让模型变得神秘,而是把模型放进一个可以执行任务的系统中:
1 | |
一句话总结:
1 | |
学习 Agent 的关键不是一开始就做复杂系统,而是从最小闭环开始:
1 | |
只要理解了这个闭环,就掌握了 Agent 的核心思想。