langchain-ai/deep-agents-from-scratch
GitHub: langchain-ai/deep-agents-from-scratch
该项目通过五个循序渐进的教程,教授如何使用 LangGraph 从零构建具备任务规划、文件系统上下文卸载和子 Agent 委派能力的深度 AI Agent。
Stars: 757 | Forks: 318
# 🧱 从零构建 Deep Agents
[Deep Research](https://academy.langchain.com/courses/deep-research-with-langgraph) 与编程一起,成为了首批主要的 agent 用例之一。现在,我们看到了能够用于广泛任务的通用 agent 正在不断涌现。例如,[Manus](https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus) 在处理长周期任务方面获得了极大的关注和普及;平均每个 Manus 任务会使用约 50 次工具调用!作为第二个例子,Claude Code 也被广泛用于编程之外的任务。仔细研究这些流行的“深度” agent 中的[上下文工程模式](https://docs.google.com/presentation/d/16aaXLu40GugY-kOpqDU4e-S0hD1FmHcNyF0rRRnb1OU/edit?slide=id.p#slide=id.p),可以发现一些共同的方法:
* **任务规划(例如 TODO),通常伴随背诵**
* **上下文卸载到文件系统**
* **通过 sub-agent 委派实现上下文隔离**
本课程将展示如何使用 LangGraph 从零开始实现这些模式!
## 🚀 快速开始
### 前置条件
- 确保你使用的是 Python 3.11 或更高版本。
- 此版本是与 LangGraph 实现最佳兼容性所必需的。
```
python3 --version
```
- [uv](https://docs.astral.sh/uv/) 包管理器
```
curl -LsSf https://astral.sh/uv/install.sh | sh
# 更新 PATH 以使用新版本的 uv
export PATH="/Users/$USER/.local/bin:$PATH"
```
### 安装
1. 克隆仓库:
```
git clone https://github.com/langchain-ai/deep-agents-from-scratch.git
cd deep-agents-from-scratch
```
2. 安装包和依赖项(这会自动创建并管理虚拟环境):
```
uv sync
```
3. 在项目根目录下创建一个 `.env` 文件并填入你的 API 密钥:
```
# 创建 .env 文件
touch .env
```
将你的 API 密钥添加到 `.env` 文件中:
```
# 带有 external search 的 research agents 所需
TAVILY_API_KEY=your_tavily_api_key_here
# model 使用所需
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# 可选:用于 evaluation 和 tracing
LANGSMITH_API_KEY=your_langsmith_api_key_here
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=deep-agents-from-scratch
```
4. 使用 uv 运行 notebook 或代码:
```
# 直接运行 Jupyter notebooks
uv run jupyter notebook
# 或者如果愿意,可以激活 virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate
jupyter notebook
```
## 📚 教程概述
本仓库包含五个循序渐进的 notebook,教你构建高级 AI agent:
### `0_create_agent.ipynb` -
学习如何使用 create_agent 组件。该组件:
- 实现了构成许多 agent 基础的 ReAct(Reason - Act)循环。
- 易于使用且设置快捷。
- 作为后续课程的基础。
### `1_todo.ipynb` - 任务规划基础
学习使用 TODO 列表实现结构化的任务规划。本 notebook 介绍了:
- 带状态管理的任务跟踪(pending/in_progress/completed)
- 进度监控与上下文管理
- 用于组织复杂多步骤工作流的 `write_todos()` 工具
- 保持专注和防止任务漂移的最佳实践
### `2_files.ipynb` - 虚拟文件系统
实现一个存储在 agent state 中的虚拟文件系统以进行上下文卸载:
- 文件操作:`ls()`、`read_file()`、`write_file()`、`edit_file()`
- 通过信息持久化进行上下文管理
- 跨对话轮次启用 agent “记忆”
- 通过将详细信息存储在文件中来减少 token 使用量
### `3_subagents.ipynb` - 上下文隔离
掌握用于处理复杂工作流的 sub-agent 委派:
- 创建具有专注工具集的专业 sub-agent
- 通过上下文隔离防止混淆和任务干扰
- `task()` 委派工具和 agent 注册表模式
- 针对独立研究流的并行执行能力
### `4_full_agent.ipynb` - 完整的研究 Agent
将所有技术整合到一个可用于生产环境的研究 agent 中:
- 集成 TODO、文件和 sub-agent
- 具备智能上下文卸载的真实网络搜索
- 内容摘要和战略思维工具
- 结合 LangGraph Studio 集成的复杂研究任务完整工作流
每个 notebook 都建立在前面的概念之上,最终形成一种能够处理现实世界研究和分析任务的复杂 agent 架构。
[Deep Research](https://academy.langchain.com/courses/deep-research-with-langgraph) 与编程一起,成为了首批主要的 agent 用例之一。现在,我们看到了能够用于广泛任务的通用 agent 正在不断涌现。例如,[Manus](https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus) 在处理长周期任务方面获得了极大的关注和普及;平均每个 Manus 任务会使用约 50 次工具调用!作为第二个例子,Claude Code 也被广泛用于编程之外的任务。仔细研究这些流行的“深度” agent 中的[上下文工程模式](https://docs.google.com/presentation/d/16aaXLu40GugY-kOpqDU4e-S0hD1FmHcNyF0rRRnb1OU/edit?slide=id.p#slide=id.p),可以发现一些共同的方法:
* **任务规划(例如 TODO),通常伴随背诵**
* **上下文卸载到文件系统**
* **通过 sub-agent 委派实现上下文隔离**
本课程将展示如何使用 LangGraph 从零开始实现这些模式!
## 🚀 快速开始
### 前置条件
- 确保你使用的是 Python 3.11 或更高版本。
- 此版本是与 LangGraph 实现最佳兼容性所必需的。
```
python3 --version
```
- [uv](https://docs.astral.sh/uv/) 包管理器
```
curl -LsSf https://astral.sh/uv/install.sh | sh
# 更新 PATH 以使用新版本的 uv
export PATH="/Users/$USER/.local/bin:$PATH"
```
### 安装
1. 克隆仓库:
```
git clone https://github.com/langchain-ai/deep-agents-from-scratch.git
cd deep-agents-from-scratch
```
2. 安装包和依赖项(这会自动创建并管理虚拟环境):
```
uv sync
```
3. 在项目根目录下创建一个 `.env` 文件并填入你的 API 密钥:
```
# 创建 .env 文件
touch .env
```
将你的 API 密钥添加到 `.env` 文件中:
```
# 带有 external search 的 research agents 所需
TAVILY_API_KEY=your_tavily_api_key_here
# model 使用所需
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# 可选:用于 evaluation 和 tracing
LANGSMITH_API_KEY=your_langsmith_api_key_here
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=deep-agents-from-scratch
```
4. 使用 uv 运行 notebook 或代码:
```
# 直接运行 Jupyter notebooks
uv run jupyter notebook
# 或者如果愿意,可以激活 virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate
jupyter notebook
```
## 📚 教程概述
本仓库包含五个循序渐进的 notebook,教你构建高级 AI agent:
### `0_create_agent.ipynb` -
学习如何使用 create_agent 组件。该组件:
- 实现了构成许多 agent 基础的 ReAct(Reason - Act)循环。
- 易于使用且设置快捷。
- 作为后续课程的基础。
### `1_todo.ipynb` - 任务规划基础
学习使用 TODO 列表实现结构化的任务规划。本 notebook 介绍了:
- 带状态管理的任务跟踪(pending/in_progress/completed)
- 进度监控与上下文管理
- 用于组织复杂多步骤工作流的 `write_todos()` 工具
- 保持专注和防止任务漂移的最佳实践
### `2_files.ipynb` - 虚拟文件系统
实现一个存储在 agent state 中的虚拟文件系统以进行上下文卸载:
- 文件操作:`ls()`、`read_file()`、`write_file()`、`edit_file()`
- 通过信息持久化进行上下文管理
- 跨对话轮次启用 agent “记忆”
- 通过将详细信息存储在文件中来减少 token 使用量
### `3_subagents.ipynb` - 上下文隔离
掌握用于处理复杂工作流的 sub-agent 委派:
- 创建具有专注工具集的专业 sub-agent
- 通过上下文隔离防止混淆和任务干扰
- `task()` 委派工具和 agent 注册表模式
- 针对独立研究流的并行执行能力
### `4_full_agent.ipynb` - 完整的研究 Agent
将所有技术整合到一个可用于生产环境的研究 agent 中:
- 集成 TODO、文件和 sub-agent
- 具备智能上下文卸载的真实网络搜索
- 内容摘要和战略思维工具
- 结合 LangGraph Studio 集成的复杂研究任务完整工作流
每个 notebook 都建立在前面的概念之上,最终形成一种能够处理现实世界研究和分析任务的复杂 agent 架构。标签:AI教程, AI智能体, LangGraph, NoSQL, Python, 上下文工程, 任务规划, 无后门, 逆向工具