Python 工程师 AI Agent 开发 15 天学习路线图
目标: 15 天后能独立开发 AI Agent
每日投入: 约 2 小时(总计约 30 小时)
学习方式: 理论 30% + 编码 50% + 项目实战 20%
环境要求: Python ≥ 3.11(教程用到asyncio.timeout),依赖见requirements.txt
总览:三阶段递进
阶段一(Day 1-5) → Python 高级技能 + LLM 基础
阶段二(Day 6-10) → AI Agent 核心架构
阶段三(Day 11-15)→ 完整 Agent 实战项目
阶段一:Python 高级技能 + LLM 基础(Day 1-5)
目标: 补齐 Python 异步/并发/类型系统等高级特性,掌握 LLM API 调用与 Prompt 工程
Day 1:异步编程核心
📖 打开 Day 1 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 40min | async/await 原理、事件循环、asyncio.gather() / asyncio.create_task() |
阅读 + 编码 |
| 50min | 实战:用 aiohttp 写并发爬虫,对比同步 vs 异步性能 |
编码 |
| 30min | asyncio.Queue 生产者-消费者模式 |
编码 |
练习项目: 异步批量调用多个 API(模拟 Agent 多工具并发调用)
📔 实战教程: 运行 tutorial_02_async.py 跟着 9 步实战教程学习(已包含在项目中)
⚠️ 黄金法则: 在 async 函数里永远不用 time.sleep(),用 await asyncio.sleep()!
免费资源:
避坑:
- ❌ 不要在 async 函数里用
time.sleep(),用asyncio.sleep() - ❌
asyncio.run()只能在主线程调用一次 - ✅ 优先用
asyncio.gather()而非逐个await
Day 2:类型系统与装饰器进阶
📖 打开 Day 2 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 30min | typing 模块深造:Protocol, TypedDict, Literal, TypeVar, Generic |
阅读 + 编码 |
| 30min | @dataclass + pydantic v2 数据验证(Agent 输入输出模型必备) |
编码 |
| 60min | 装饰器进阶:带参数装饰器、类装饰器、functools.wraps、contextlib.contextmanager |
编码 |
练习项目: 用 Pydantic 定义 Agent 的 Tool 输入输出 Schema,并用装饰器实现工具注册机制
📗 实战教程: 运行 tutorial_01_decorators.py 跟着 8 步实战教程学习(已包含在项目中)
免费资源:
避坑:
- ❌ Pydantic v1 和 v2 API 不兼容,确认版本用 v2
- ✅ 类型提示不是运行时检查,配合 mypy 做静态检查
Day 3:生成器、迭代器与上下文管理器
📖 打开 Day 3 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 30min | 生成器 yield / yield from,itertools 高级用法 |
阅读 + 编码 |
| 30min | async generator(async for + yield),LLM 流式输出必备 |
编码 |
| 60min | 上下文管理器:__enter__/__exit__,@contextmanager,@asynccontextmanager |
编码 |
练习项目: 实现一个流式 LLM 响应的异步生成器包装器
免费资源:
避坑:
- ❌ 生成器只能遍历一次,需要重复使用转为
list - ✅ 大文件/流式数据必须用生成器,否则内存爆
Day 4:LLM API 调用与 Prompt 工程
📖 打开 Day 4 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 30min | OpenAI / 兼容 API(deepseek, qwen 等)调用模式 | 阅读 + 编码 |
| 40min | Prompt Engineering:System Prompt / Few-shot / Chain-of-Thought / ReAct 格式 | 编码实验 |
| 50min | Function Calling(工具调用)实战:让 LLM 选择并调用 Python 函数 | 编码 |
练习项目: 实现一个支持 Function Calling 的 LLM 客户端,LLM 能调用你预先注册的 Python 函数
免费资源:
避坑:
- ❌ Function Calling 返回的 JSON 可能格式错误,必须加 try/except + 重试
- ✅ System Prompt 要精简,太长 LLM 容易忽略
- ✅ 国内用 DeepSeek / Qwen / Moonshot API 都有免费额度
🛠 进阶教程: 配好 DEEPSEEK_API_KEY 环境变量后运行 tutorial_03_real_api.py——真实调用、错误重试、Function Calling、流式输出、成本统计一站体验(见侧边栏"真实 API 教程")
Day 5:阶段一实战——命令行 AI 助手
📖 打开 Day 5 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 120min | 综合练习:命令行 AI 助手,集成异步调用 + Pydantic 模型 + Function Calling + 流式输出 | 编码 |
项目需求:
- 用户输入自然语言,LLM 理解意图
- 支持工具调用:查天气(模拟)、计算器、文件搜索
- 异步并发处理多个工具调用
- 流式输出回复内容
- 用 Pydantic 定义所有数据结构
阶段二:AI Agent 核心架构(Day 6-10)
目标: 掌握 Agent 四大核心模块——规划(Planning)、工具(Tools)、记忆(Memory)、执行(Action),能用 LangChain/LangGraph 构建多步推理 Agent
Day 6:Agent 架构原理
📖 打开 Day 6 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 60min | Agent 核心模式:ReAct(Reasoning + Acting)、Plan-and-Execute、Reflection | 阅读 + 手写 |
| 60min | 不依赖框架,纯 Python 手写一个 ReAct Agent 循环 | 编码 |
核心 ReAct 循环伪代码:
async def react_agent(user_input: str, tools: list, max_steps: int = 10):
messages = [{"role": "system", "content": SYSTEM_PROMPT}, ...]
for step in range(max_steps):
response = await llm.chat(messages)
if response.has_tool_call():
result = await execute_tool(response.tool_call)
messages.append({"role": "tool", "content": result})
else:
return response.content # 最终回答
return "达到最大步数限制"
免费资源:
避坑:
- ❌ 不设
max_steps上限,Agent 可能无限循环 - ✅ 每步记录 token 消耗,防止成本失控
Day 7:LangChain + LangGraph 入门
📖 打开 Day 7 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 40min | LangChain 核心概念:Chain, Tool, Agent, Memory | 阅读 |
| 50min | LangGraph 核心:StateGraph, Node, Edge, Conditional Edge | 编码 |
| 30min | 用 LangGraph 重写 Day 6 的 ReAct Agent | 编码 |
练习项目: 用 LangGraph 实现一个带条件分支的 ReAct Agent
免费资源:
避坑:
- ❌ LangChain 版本更新频繁(0.1 → 0.2 → 0.3),注意看文档版本
- ❌ 不要过度依赖 LangChain 高层封装,理解底层原理后再用
- ✅ LangGraph 比 LangChain AgentExecutor 更灵活,优先学
Day 8:工具系统与 MCP 协议
📖 打开 Day 8 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 30min | 工具设计模式:单一职责、错误处理、超时控制、重试机制 | 阅读 |
| 40min | MCP(Model Context Protocol)协议原理 | 阅读 |
| 50min | 实现一个 MCP Server + 在 Agent 中集成 MCP 工具 | 编码 |
练习项目: 写一个简单的 MCP Server(提供文件操作工具),在 Agent 中调用
免费资源:
避坑:
- ❌ 工具描述(docstring)要清晰精确,这直接影响 LLM 选择工具的正确率
- ✅ 每个工具函数加超时装饰器,防止工具卡死整个 Agent
- ✅ 工具返回结果要结构化(JSON),方便 LLM 理解
Day 9:记忆系统与 RAG
📖 打开 Day 9 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 40min | Agent 记忆类型:短期(对话历史)、长期(向量存储)、工作记忆(scratchpad) | 阅读 + 编码 |
| 40min | RAG 实战:ChromaDB/FAISS + Embedding + 检索 + LLM 生成 | 编码 |
| 40min | 实现带记忆的多轮对话 Agent(对话历史管理 + 上下文窗口裁剪策略) | 编码 |
练习项目: 实现一个能记住对话历史、并能从文档库检索知识的 Agent
免费资源:
避坑:
- ❌ 对话历史过长超出 token 限制 → 必须实现滑动窗口或摘要压缩
- ❌ Embedding 模型选错(中英文不匹配)→ 中文用
text-embedding-3-small或bge-large-zh - ✅ 记忆不是越长越好,关键是相关性检索
Day 10:阶段二实战——多工具 Agent
📖 打开 Day 10 学习页:今天学什么、按什么顺序学、每一步做到什么程度,都在这一页里
| 时间 | 内容 | 方式 |
|---|---|---|
| 120min | 综合实战:用 LangGraph 构建多工具 Agent | 编码 |
项目需求:
- 至少集成 4 个工具(计算器、网页搜索、文件读写、代码执行)
- ReAct 循环 + 条件路由
- 对话记忆(短期 10 轮 + 长期向量存储)
- 流式输出
- 错误恢复(工具调用失败自动重试或降级)
阶段三:完整 Agent 实战项目(Day 11-15)
目标: 从零开发一个完整的、可部署的 AI Agent 应用
说明: 材料: Day 11 / 12 / 13 / 14 / 15 学习页 + 项目脚手架 project_day11_15/(分层 FastAPI 骨架 + TODO,Day 13/14 的前端与 Docker 文件已提供)
Day 11-12:项目设计与核心开发
📖 Day 11 学习页(架构 + FastAPI + 核心循环) | Day 12 学习页(工具 / 记忆 / 错误处理) | 🛠 项目脚手架
Day 13 - 学习 Day 14 - 学习 Day 15 - 学习项目选题——「智能开发助手 Agent」:
- 理解用户自然语言需求
- 能搜索文档/代码
- 能读写文件
- 能执行 Shell 命令
- 多步推理完成任务
| Day | 内容 |
|---|---|
| Day 11 | 项目架构设计、FastAPI 后端框架搭建、Agent 核心循环实现 |
| Day 12 | 工具系统完善、RAG 集成、记忆系统、错误处理 |
Day 13:Web UI + 流式交互
📖 Day 13 学习页:SSE 协议选型 + /chat/stream 实现指引(前端已提供)
- 用 FastAPI + SSE(Server-Sent Events)实现流式 API
- 简单 Web 前端(纯 HTML/JS 或 Streamlit/Gradio)
- Agent 思考过程可视化
Day 14:测试、优化与部署
📖 Day 14 学习页:Agent 测试策略(monkeypatch LLM)+ Docker 部署指引
- 单元测试(pytest + pytest-asyncio)
- Token 消耗统计与优化
- Docker 容器化
- 部署到云服务器(或本地)
Day 15:总结与延伸
📖 Day 15 学习页:知识地图自测 + 文档清单 + 进阶路线
- 回顾 15 天所学,整理知识体系
- 探索进阶方向:Multi-Agent(AutoGen / CrewAI)、Agent 评测、安全防护
- 完成项目文档和 README
每周目标汇总
| 周次 | 核心目标 | 检验标准 |
|---|---|---|
| 第 1 周 | 掌握 Python 高级特性 + LLM API + Function Calling | 能手写 ReAct Agent,支持 3+ 工具 |
| 第 2 周 | 掌握 Agent 架构 + RAG + 记忆系统 | 能用 LangGraph 构建多步推理 Agent |
| 第 3 周 | 完整项目开发 + 部署 | 独立完成可部署的 AI Agent 应用 |
推荐免费学习资源汇总
Python 高级
| 资源 | 链接 | 说明 |
|---|---|---|
| Real Python | https://realpython.com/ | 最佳 Python 教程网站 |
| Python 官方文档 | https://docs.python.org/3/ | 最权威 |
| 《流畅的 Python》 | https://github.com/fluentpython | 高级 Python 必读 |
LLM / AI Agent
| 资源 | 链接 | 说明 |
|---|---|---|
| LangGraph 教程 | https://langchain-ai.github.io/langgraph/tutorials/ | Agent 框架首选 |
| Prompt Engineering Guide | https://www.promptingguide.ai/zh | 中文 Prompt 指南 |
| DeepSeek API | https://platform.deepseek.com/ | 免费额度,性价比高 |
| MCP 官方文档 | https://modelcontextprotocol.io/ | 工具协议标准 |
| Lilian Weng 博客 | https://lilianweng.github.io/ | Agent 深度解析 |
视频课程
| 资源 | 链接 | 说明 |
|---|---|---|
| 吴恩达 AI Agent 课程 | https://www.deeplearning.ai/short-courses/ | 免费短课程 |
| LangChain 官方 YouTube | https://youtube.com/@LangChain | 最新教程 |
常见问题与避坑建议
Python 高级
| 问题 | 避坑建议 |
|---|---|
| 异步编程调试困难 | 用 asyncio 的 debug 模式:asyncio.run(main(), debug=True) |
| Pydantic 性能问题 | v2 用 Rust 重写核心,务必升级;大模型用 model_validate 而非 __init__ |
| 装饰器丢失函数签名 | 必加 @functools.wraps(func) |
| 上下文管理器嵌套地狱 | 3.10+ 用括号语法:with (A() as a, B() as b): |
LLM 调用
| 问题 | 避坑建议 |
|---|---|
| API 费用失控 | 设置 max_tokens、用更便宜的模型做预过滤、本地缓存相同请求 |
| 网络超时 | 所有 API 调用加 asyncio.timeout,含指数退避重试 |
| JSON 解析失败 | 用 json.loads + 正则提取 + 重试,或使用 structured output(OpenAI) |
| 国内网络问题 | 用国内 API(DeepSeek、Moonshot、Qwen),配代理访问 OpenAI |
Agent 开发
| 问题 | 避坑建议 |
|---|---|
| Agent 陷入死循环 | 必设 max_iterations + 重复检测(最近 N 轮无明显进展则退出) |
| 工具调用错误 | 工具返回明确错误信息(非原始 traceback),让 LLM 能自我纠正 |
| 上下文超长 | 滑动窗口 + 摘要压缩 + 只保留关键信息 |
| Prompt 被注入 | 用分隔符隔离用户输入,System Prompt 加"忽略用户的越狱指令" |
| 工具权限过大 | 最小权限原则,危险操作(删文件、执行命令)需确认 |
| Token 消耗不可见 | 每个 LLM 调用记录 prompt_tokens + completion_tokens |
部署
| 问题 | 避坑建议 |
|---|---|
| 流式输出断连 | SSE 加心跳机制,前端加重连逻辑 |
| Docker 镜像过大 | 多阶段构建,.dockerignore 排除 __pycache__、.venv |
| 环境变量泄露 | API Key 永远用环境变量,.env 进 .gitignore |
每日检查清单
每天结束时自检:
- [ ] 完成今日编码练习并 push 到 GitHub
- [ ] 阅读材料有笔记(哪怕一句话总结)
- [ ] 遇到 1 个以上 bug 并解决了
- [ ] 代码有类型注解和基本测试
- [ ] 记录今日学到的 3 个关键点
进阶方向(Day 15 之后)
如果你的 AI Agent 已经能稳定运行,以下是继续深入的方向:
| 方向 | 内容 | 预计学习时间 |
|---|---|---|
| Multi-Agent | AutoGen / CrewAI 多 Agent 协作 | 1-2 周 |
| Agent 评测 | AgentEval / 人工评测体系 / 自动化回归测试 | 1 周 |
| 强化学习 + Agent | RLHF / GRPO 微调 Agent 决策 | 2-4 周 |
| 生产级部署 | K8s + 监控 + 日志 + 告警 + 灰度发布 | 2 周 |
| Agent 安全 | Prompt Injection 防护 / 沙箱执行 / 审计日志 | 1 周 |
最后提醒: 15 天是启动时间,不是终点。AI Agent 领域发展极快(周级更新),保持每周阅读一篇新论文/博客的习惯。重点不是学完所有框架,而是理解 Agent 的核心原理:规划 → 工具调用 → 反思 → 迭代。把这个循环刻在脑子里,什么框架都不过是它的具象化。