这是一个基于 LangGraph 的智能内容提取代理,专为从技术文档(如 LangChain 文档)中提取结构化知识而设计。
- 智能爬虫 (Smart Crawler):自动解析 Sitemap,支持递归查找,并按 URL 前缀过滤。
- 人机交互 (Human-in-the-loop):采用 LangGraph 的中断/恢复机制,允许用户在提取前审核 URL 列表。
- 碎片化存储 (Fragment Storage):采用 Map-Reduce 架构,将单页分析结果保存为本地 JSON 片段,有效防止上下文溢出,支持断点续传。
- 结构化生成 (Structured Generation):基于官方目录结构 (TOC) 索引本地片段,生成标准化的技术书籍,确保逻辑严密且覆盖全面。
- 多语言优化:默认输出中文主导的双语内容(保留英文术语)。
系统采用 Scan -> Extract -> Fragment -> Index -> Generate 的五阶段处理流程:
- Scan (扫描): 解析 Sitemap 发现目标 URL。
- Extract (提取): 并发抓取网页内容。
- Fragment (分片): LLM 分析单页内容,提取核心概念与摘要,保存为
outputs/fragments/*.json。 - Index (索引): 建立 URL 到本地片段的倒排索引。
- Generate (生成): 按照预定义的目录结构 (TOC),从索引中匹配对应片段,组装成完整书籍
outputs/structured.md。
- 安装依赖:
pip install -r requirements.txt
# 或者使用 uv
uv pip install -r requirements.txt- 配置环境变量:
复制
.env.example为.env并填入配置:
LLM_API_KEY=your_api_key
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-4o使用 main.py 抓取目标网站并生成本地内容片段:
PYTHONPATH=. python main.py \
--sitemap "https://docs.langchain.com/sitemap.xml" \
--prefix "https://docs.langchain.com/oss/python/langchain/agents"交互步骤:
- 程序扫描 Sitemap 并列出 URL。
- 用户输入序号选择 URL (或输入
all)。 - 系统自动提取并生成
outputs/fragments/*.json。
当 outputs/fragments 目录中有数据后,运行以下命令生成最终文档:
python main.py --generate该命令会:
- 扫描
outputs/fragments建立内存索引。 - 读取预定义的目录结构 (TOC)。
- 自动匹配片段并生成
outputs/structured.md。
src/core/scanner.py: Sitemap 扫描器extractor.py: 内容提取器generator.py: LLM 分析与生成核心structure_generator.py: 结构化文档生成逻辑indexer.py: 片段索引器
src/graph/workflow.py: LangGraph 状态机定义src/utils/toc_definitions.py: 目录结构定义outputs/fragments/: 中间分析结果存储