最强agent学习路线
# Agent 开发学习计划:从入门到独立完成项目
建议采用 **8 周、每周 8~12 小时** 的学习周期。核心路线是:
> **大模型 API → Prompt 与结构化输出 → 工具调用 → Agent 循环 → 记忆与知识库 → 工作流编排 → 评估与安全 → 完整项目**
第一阶段不要同时学习多个框架。建议先使用 **Python + OpenAI Agents SDK** 理解 Agent 的基本机制,再学习 LangGraph 处理复杂、可恢复的工作流。OpenAI Agents SDK 的核心抽象相对少,主要包括 Agent、工具、handoff、guardrails、sessions 和 tracing,比较适合作为入门框架。([OpenAI][1])
---
## 一、你最终要达到的能力
完成学习后,你应该能够独立完成下面这些工作:
1. 调用大模型 API,并正确管理配置、异常和费用。
2. 为模型设计清晰的系统提示词。
3. 让模型输出符合 Pydantic 定义的结构化数据。
4. 把 Python 函数、数据库和第三方 API 封装成工具。
5. 实现“思考—调用工具—观察结果—继续执行”的 Agent 循环。
6. 管理多轮对话、短期记忆和长期记忆。
7. 构建基于文档的 RAG Agent。
8. 使用工作流控制 Agent,而不是完全依赖模型自由决策。
9. 编写测试集,评估 Agent 的正确率、成本和延迟。
10. 将 Agent 封装为 API 或 Web 应用并部署。
---
# 二、8 周学习安排
## 第 1 周:理解大模型应用,而不是急着写 Agent
### 理论目标
理解以下概念:
* LLM 是如何根据上下文生成结果的
* system、user、assistant 消息的区别
* Token、上下文窗口、温度、输出长度
* Prompt、结构化输出和普通文本输出
* 幻觉为什么会发生
* API 调用与网页版聊天的区别
* 同步、异步和流式输出
最重要的是建立一个认识:
> Agent 不是一个全新的模型,而是“大模型 + 指令 + 工具 + 状态 + 控制循环”。
### 实践任务
完成三个小程序:
1. 命令行聊天机器人
2. 文本总结器
3. 信息提取器
信息提取器要求输出固定的数据结构,例如:
```python
from pydantic import BaseModel
class TaskInfo(BaseModel):
title: str
priority: str
deadline: str | None
```
输入:
```text
我需要在周五之前完成 Agent 项目的数据库设计,这件事很重要。
```
输出:
```json
{
"title": "完成 Agent 项目的数据库设计",
"priority": "high",
"deadline": "周五"
}
```
### 本周验收标准
你能够:
* 独立调用一次模型 API
* 从环境变量读取 API Key
* 捕获请求异常
* 获得稳定的 JSON 或 Pydantic 对象
* 解释什么是 Token 和上下文
### 项目结构
```text
week1_llm_basics/
├── app.py
├── config.py
├── schemas.py
├── prompts.py
├── requirements.txt
└── .env.example
```
不要把 API Key 直接写进代码。
---
## 第 2 周:工具调用与最小 Agent
这是 Agent 开发最关键的一周。
### 理论目标
理解:
* 什么是 Tool Calling,也叫 Function Calling
* 工具名称、描述、参数 Schema 的作用
* 模型只是“决定调用哪个工具”,真正执行工具的是你的程序
* 工具调用结果为什么要重新交给模型
* Agent Loop 的基本结构
* 最大循环次数和停止条件
* 工具报错如何反馈给模型
工具调用的基本流程是:
```text
用户提出任务
↓
模型判断是否需要工具
↓
模型生成工具名称和参数
↓
Python 执行工具
↓
把工具结果交回模型
↓
模型继续调用工具或生成最终答案
```
### 实践任务
先手写三个工具:
```python
def calculate(expression: str) -> str:
...
def get_current_time(timezone: str) -> str:
...
def search_local_notes(keyword: str) -> list[str]:
...
```
然后完成一个“个人效率 Agent”,支持:
* 数学计算
* 查询本地笔记
* 获取时间
* 自动判断是否需要使用工具
* 最多执行 5 轮
* 工具异常时不崩溃
OpenAI Agents SDK 可以将 Python 函数封装为工具,并自动生成参数 Schema、进行 Pydantic 验证,适合用来理解工具调用。([OpenAI][2])
### 建议做两遍
第一遍:自己手写 Agent Loop。
伪代码:
```python
messages = [system_message, user_message]
for step in range(MAX_STEPS):
response = call_model(messages, tools=tools)
if response_has_tool_call(response):
tool_result = execute_tool(response.tool_call)
messages.append(response.output)
messages.append(tool_result)
else:
return response.final_text
raise RuntimeError("Agent exceeded maximum steps")
```
第二遍:使用 Agents SDK 重写。
```python
from agents import Agent, Runner, function_tool
@function_tool
def calculate(expression: str) -> str:
"""计算一个数学表达式。"""
return str(eval(expression, {"__builtins__": {}}))
agent = Agent(
name="Productivity Assistant",
instructions="帮助用户完成任务,必要时使用可用工具。",
tools=[calculate],
)
result = Runner.run_sync(agent, "计算 125 * 48")
print(result.final_output)
```
实际项目中不要直接使用未经限制的 `eval`,这里仅用于理解最小示例。
### 本周验收标准
你能够解释:
* 模型是否真的执行了 Python 函数
* 工具描述为什么影响调用准确率
* 为什么需要最大执行轮数
* 工具返回值应该是文本、字典还是对象
* 什么情况下不应该调用工具
---
## 第 3 周:Prompt、上下文和对话记忆
### 理论目标
学习 Prompt 的基本结构:
```text
角色
目标
输入说明
可用工具
执行规则
输出格式
边界条件
失败处理方式
示例
```
理解两种“记忆”:
### 短期记忆
当前对话中的消息历史。
问题:
* 对话越长,Token 成本越高
* 历史内容可能包含无关信息
* 旧指令可能干扰新任务
常用处理:
* 保留最近 N 轮
* 对旧对话进行摘要
* 只保留与当前任务相关的信息
### 长期记忆
保存到数据库中的用户偏好、历史事实和任务记录。
例如:
```json
{
"user_id": "u001",
"preferred_language": "Chinese",
"coding_level": "Python beginner",
"current_goal": "Build an independent agent project"
}
```
### 实践任务
开发一个“学习教练 Agent”:
* 用户可以设定学习目标
* Agent 能记录用户的学习进度
* 下次对话能够读取之前的进度
* 长对话自动生成摘要
* 用户可以纠正或删除记忆
推荐先使用 SQLite:
```text
users
conversations
messages
memories
learning_tasks
```
### 必须理解的原则
不要把所有聊天内容都写入长期记忆。
只保存:
* 稳定偏好
* 明确目标
* 用户主动要求保存的信息
* 后续任务确实需要的信息
敏感信息、临时内容和未经确认的推断不应直接成为长期记忆。
Agents SDK 支持会话状态管理;`Agent` 与 `Runner` 也可以代替开发者处理轮次、工具、handoff 和 session 等编排工作。([OpenAI][3])
---
## 第 4 周:RAG 与知识库 Agent
### 理论目标
理解 RAG 的完整流程:
```text
文档
↓
解析和清洗
↓
切分 Chunk
↓
生成 Embedding
↓
存入向量数据库
↓
用户提问
↓
检索相关 Chunk
↓
将检索结果交给模型
↓
生成带来源的回答
```
需要掌握:
* Chunk 大小与重叠
* Embedding
* 相似度检索
* Top-K
* 元数据过滤
* 关键词检索和向量检索
* 混合检索
* 引用来源
* 无答案时拒绝猜测
### 实践任务
开发“Python 学习资料问答 Agent”:
1. 准备若干 Markdown、TXT 或 PDF 学习资料。
2. 对文档进行切分。
3. 建立向量索引。
4. 用户提问时检索相关片段。
5. Agent 必须给出来源。
6. 资料中没有答案时明确说明没有找到。
7. 增加一个普通计算工具。
这样你会得到一个同时具备:
* 知识检索
* 工具调用
* 对话能力
的基础 Agent。
### 验收测试
至少准备 20 个问题:
* 10 个资料中明确有答案的问题
* 5 个需要综合两个片段的问题
* 5 个资料中没有答案的问题
记录:
```text
问题
期望答案
检索到的文档
最终回答
是否正确
是否出现无依据内容
```
---
## 第 5 周:工作流、状态机与 LangGraph
完成前四周之后,再开始学习 LangGraph。
LangGraph 是一个偏底层的 Agent 编排和运行框架,重点在持久化执行、状态管理、人机协作以及复杂工作流控制;其官方文档也建议先熟悉模型和工具,再学习 LangGraph。([Docs by LangChain][4])
### 理论目标
分清两个概念:
### Workflow
执行路径主要由程序决定。
```text
接收需求
→ 分类
→ 检索资料
→ 生成答案
→ 审核答案
→ 返回结果
```
### Agent
由模型动态决定下一步。
```text
接收目标
→ 模型选择工具
→ 根据结果决定下一步
→ 直到完成
```
LangGraph 官方文档也将 workflow 描述为预定义代码路径,而 agent 会动态决定过程和工具使用。([Docs by LangChain][5])
### 实践任务
使用 LangGraph 重构第 4 周的项目:
```text
START
↓
问题分类
├── 普通知识问题 → 直接回答
├── 资料问题 → RAG 检索
├── 计算问题 → 计算工具
└── 高风险问题 → 人工确认
↓
答案检查
├── 合格 → 输出
└── 不合格 → 重新生成
↓
END
```
建议定义清晰的状态:
```python
from typing import TypedDict
class AgentState(TypedDict):
user_query: str
query_type: str
retrieved_documents: list[str]
draft_answer: str
review_result: str
retry_count: int
final_answer: str
```
LangGraph 的核心思路是用图表达 Agent 流程,节点通常是 Python 函数,边表示节点之间的流转关系。([Docs by LangChain][6])
### 本周验收标准
你能够判断:
* 哪些节点应该由代码控制
* 哪些决策可以交给模型
* 什么状态需要持久化
* 失败后应该从哪个节点恢复
* 如何防止流程无限循环
---
## 第 6 周:多 Agent 与 MCP
### 多 Agent
不要因为名字听起来高级,就把所有系统都做成多 Agent。
单 Agent 能完成时,优先使用单 Agent。
只有下面这些情况才考虑多 Agent:
* 不同任务需要完全不同的提示词
* 不同角色拥有不同的工具权限
* 上下文过大,需要拆分
* 各任务可以并行处理
* 需要独立审核角色
* 不同任务需要不同模型
Agents SDK 支持两类常见方式:
* **Agents as tools**:主 Agent 把其他 Agent 当作工具调用。
* **Handoff**:当前 Agent 将任务交给另一个 Agent继续处理。([OpenAI][1])
### 实践任务
构建一个“研究报告 Agent”:
```text
Coordinator Agent
├── Research Agent:收集和整理资料
├── Analyst Agent:分析和归纳
└── Reviewer Agent:检查证据和逻辑
```
工作流程:
```text
用户给出研究主题
→ Coordinator 拆分任务
→ Researcher 返回资料
→ Analyst 形成初稿
→ Reviewer 检查
→ 不合格则返回修改
→ Coordinator 输出最终报告
```
### MCP
本周只需要理解并做一个简单练习。
MCP 是连接 AI 应用与外部系统的开放标准,可用于暴露工具、资源和提示模板。([Model Context Protocol][7])
你需要理解:
```text
MCP Host
MCP Client
MCP Server
Tools
Resources
Prompts
Transport
```
实践:
* 写一个本地 MCP Server
* 暴露两个工具:
* 查询学习任务
* 新增学习任务
* 让 Agent 通过 MCP 调用它们
不要一开始研究复杂的远程部署、认证和大量 MCP Server 集成。
---
## 第 7 周:测试、评估、安全与可观测性
一个能运行的 Agent,不代表是一个可靠的 Agent。
### 理论目标
建立四类指标。
### 1. 任务效果
* 最终答案是否正确
* 是否完成用户目标
* 是否遗漏步骤
* 是否使用了正确工具
### 2. 工具行为
* 工具选择准确率
* 参数是否正确
* 是否进行了不必要调用
* 工具出错后是否正确恢复
### 3. 系统指标
* 响应时间
* 模型调用次数
* Token 消耗
* 单次任务成本
* 错误率
Agents SDK 可以追踪每次运行的请求数、输入 Token、输出 Token和总 Token,可用于成本监控和限制。([OpenAI][8])
### 4. 安全指标
* Prompt Injection 防护
* 越权工具调用
* 敏感数据泄露
* 危险操作确认
* 输出格式校验
* 无限循环
* 超预算执行
### 实践任务
为前面的项目建立测试集:
```python
TEST_CASES = [
{
"input": "计算 38 * 27",
"expected_tool": "calculate",
"expected_contains": "1026",
},
{
"input": "根据资料解释 Python 装饰器",
"expected_tool": "search_documents",
"must_have_citation": True,
},
]
```
至少完成:
* 30 个固定测试案例
* 5 个工具异常案例
* 5 个 Prompt Injection 案例
* 5 个长对话案例
* 5 个资料中不存在答案的案例
### 必须加入的保护机制
```text
最大 Agent 步数
单次任务 Token 上限
工具超时
参数验证
工具白名单
危险操作人工确认
外部内容不可信标记
输出 Schema 验证
日志脱敏
```
SDK 内置 tracing,可用于查看和调试 Agent 的运行过程。([OpenAI][1])
---
## 第 8 周:完成一个可展示的完整 Agent
推荐你的第一个完整项目做成:
# 智能学习助理 Agent
它与你现在的实际需求一致,也能覆盖 Agent 开发的大多数核心能力。
### 核心功能
1. 用户设定学习目标。
2. Agent 将目标拆解成学习计划。
3. 查询用户当前的学习进度。
4. 根据学习资料回答问题。
5. 自动生成练习题。
6. 批改用户答案。
7. 保存学习记录。
8. 每周生成学习总结。
9. 必要时调用计算、检索和任务管理工具。
10. 对重要数据修改要求用户确认。
### 推荐技术栈
```text
Python 3.11+
FastAPI
Pydantic
OpenAI Agents SDK
LangGraph
SQLite,后续可替换为 PostgreSQL
向量数据库:先选择一个轻量方案
Streamlit 或简单前端
pytest
Docker
```
### 推荐目录结构
```text
learning_agent/
├── app/
│ ├── main.py
│ ├── api/
│ │ ├── chat.py
│ │ └── tasks.py
│ ├── agents/
│ │ ├── learning_agent.py
│ │ ├── reviewer_agent.py
│ │ └── prompts.py
│ ├── workflows/
│ │ ├── learning_graph.py
│ │ └── state.py
│ ├── tools/
│ │ ├── calculator.py
│ │ ├── knowledge_search.py
│ │ ├── task_manager.py
│ │ └── progress_tracker.py
│ ├── memory/
│ │ ├── short_term.py
│ │ └── long_term.py
│ ├── retrieval/
│ │ ├── ingestion.py
│ │ ├── chunking.py
│ │ └── retriever.py
│ ├── database/
│ │ ├── models.py
│ │ └── repository.py
│ ├── schemas/
│ │ ├── chat.py
│ │ └── tasks.py
│ ├── evaluation/
│ │ ├── datasets.py
│ │ ├── graders.py
│ │ └── runner.py
│ └── core/
│ ├── config.py
│ ├── logging.py
│ └── exceptions.py
├── tests/
├── data/
├── scripts/
├── .env.example
├── requirements.txt
├── Dockerfile
└── README.md
```
### 最终演示流程
```text
用户:我想在一个月内掌握 Agent 开发。
Agent:
1. 读取用户当前水平
2. 生成学习计划
3. 将计划写入任务数据库
4. 推荐今天的学习任务
5. 根据知识库回答问题
6. 生成练习题
7. 批改答案
8. 更新学习进度
9. 输出当日总结
```
---
# 三、每周固定学习节奏
建议每周按照下面的比例安排:
| 环节 | 时间 | 内容 |
| ---- | ---: | --------------- |
| 理论学习 | 2 小时 | 阅读官方文档,整理概念 |
| 示例复现 | 2 小时 | 不修改地运行官方示例 |
| 独立编码 | 4 小时 | 不照抄示例完成任务 |
| 测试调试 | 2 小时 | 构造错误输入和边界情况 |
| 复盘总结 | 1 小时 | 编写 README 和学习笔记 |
每天推荐采用:
```text
20 分钟:阅读概念
60 分钟:写代码
20 分钟:测试和记录问题
```
最重要的是:**每学一个概念,立即写一个可以运行的小程序。**
---
# 四、推荐学习顺序
严格按照这个顺序学习:
```text
模型 API
→ 消息与 Prompt
→ 结构化输出
→ Tool Calling
→ 手写 Agent Loop
→ 使用 Agent SDK
→ 对话状态
→ RAG
→ LangGraph
→ 多 Agent
→ MCP
→ 评估与部署
```
不要采用下面这种顺序:
```text
一开始就学多 Agent
→ 同时学习五个框架
→ 复制一个复杂开源项目
→ 程序能运行但不知道为什么
```
---
# 五、学习过程中必须手写的 6 个项目
按难度依次完成:
1. **结构化信息提取器**
学习 API、Prompt 和 Pydantic。
2. **工具调用助手**
学习 Function Calling 和 Agent Loop。
3. **带记忆的聊天助手**
学习状态、会话和数据库。
4. **本地文档问答 Agent**
学习 RAG、引用和知识边界。
5. **研究报告多 Agent**
学习任务拆解、handoff 和审核。
6. **智能学习助理**
综合 API、工具、记忆、RAG、工作流、评估和部署。
每个项目都必须包含:
```text
README
环境变量示例
类型注解
异常处理
日志
单元测试
测试数据集
运行截图或演示视频
```
---
# 六、你暂时不需要深入学习的内容
入门阶段先不深入:
* 模型微调
* 自己训练大语言模型
* 复杂强化学习
* 大规模分布式 Agent
* Kubernetes
* 十几个 Agent 的群体协作
* 高复杂度知识图谱
* 浏览器自动化和电脑控制
* 自主执行高风险操作
* 同时适配大量模型供应商
先做到:
> 一个 Agent,三个可靠工具,一个清晰工作流,一套测试数据。
这比做十个不能稳定运行的 Agent 更有价值。
---
# 七、判断自己是否真正学会了
遇到一个新 Agent 需求时,你应该能回答:
1. 这个任务真的需要 Agent 吗?
2. 普通工作流是否已经足够?
3. 哪些步骤必须由代码控制?
4. 哪些步骤可以让模型判断?
5. Agent 可以使用哪些工具?
6. 每个工具需要什么权限?
7. 哪些操作必须人工确认?
8. 状态和记忆保存在哪里?
9. 如何判断任务已经完成?
10. 如何测试它比普通聊天机器人更好?
能够独立回答并实现这些问题,就已经具备了独立开发 Agent 的基础能力。
---
## 最重要的学习原则
**先理解循环,再学习框架;先做单 Agent,再做多 Agent;先建立测试,再增加功能。**
你的第一周不要追求做出“万能助手”。只完成一个能够稳定调用模型、返回结构化结果、具备异常处理的小程序。第二周再让它真正使用工具。这样进步最快,也最不容易陷入“会调用框架,但不会设计 Agent”的状态。
[1]: https://openai.github.io/openai-agents-python/?utm_source=chatgpt.com "OpenAI Agents SDK"
[2]: https://openai.github.io/openai-agents-python/zh/tools/?utm_source=chatgpt.com "工具 - OpenAI Agents SDK"
[3]: https://openai.github.io/openai-agents-python/agents/?utm_source=chatgpt.com "Agents - OpenAI Agents SDK"
[4]: https://docs.langchain.com/oss/python/langgraph/overview?utm_source=chatgpt.com "LangGraph overview - Docs by LangChain"
[5]: https://docs.langchain.com/oss/python/langgraph/workflows-agents?utm_source=chatgpt.com "Workflows and agents - Docs by LangChain"
[6]: https://docs.langchain.com/oss/python/langgraph/graph-api?utm_source=chatgpt.com "Graph API overview - Docs by LangChain"
[7]: https://modelcontextprotocol.io/docs/getting-started/intro?utm_source=chatgpt.com "What is the Model Context Protocol (MCP)? - Model Context Protocol"
[8]: https://openai.github.io/openai-agents-python/usage/?utm_source=chatgpt.com "Usage - OpenAI Agents SDK"
更多推荐

所有评论(0)