该项目是一个PPT生成的Agent,用户输入PPT需求后,Agent通过Human-In—The-Loop的方式,分步骤地与用户交互,逐步补齐信息。之后根据用户PPT的需求信息来搜索PPT的内容,生成PPT的大纲,根据大纲生成每一页PPT的内容摘要,再生成ppt的初稿,最后生成终稿。本项目采用的是生成svg的方式,导出ppt之后可以在PowerPoint中转换为图形之后进行编辑
ppt-agent/
├── src/
│ ├── backend/ # FastAPI 接口层
│ ├── frontend/ # React 前端
│ └── ppt_agent/ # LangGraph Agent 与核心逻辑
├── user_data/ # 会话数据、上传文件、生成结果
├── pyproject.toml # Python 依赖
├── uv.lock
└── README.md
前端采用React + Ant Design X来构建用户界面,支持导出PPT,PPT的预览等功能;后端采用FastAPI来构建后端接口;Agent采用了Langgraph构建
前端代码采用的是vibecoding的方式进行开发,后端和agent代码都是自己写的
- PPT的生成: Agent根据用户输入的需求生成svg,最后将svg转换为ppt导出
- PPT的预览和导出: 支持预览生成的PPT,并导出为PPTX文件,并且用户可以在PowerPoint中将svg转换为图形来进行编辑
- 自动根据PPT的主题等信息搜索PPT的内容资料
- 同时支持用户上传PPT的内容资料来作为PPT的内容来源
- 暂停/继续: 在PPT生成过程中,用户可以选择暂停生成,此时Agent会停止当前的生成任务,等待用户继续。当用户选择继续时,Agent会从上次暂停的地方继续生成PPT。
- 专门内置了一个用于ppt修改的agent,可以在生成ppt之后对ppt进行修改
- 生成初稿、终稿等操作采用并发执行尽量缩短时间,对于LLM调用等容易失败的操作,采取了重试的方式来尽量保证Agent顺利执行
- 结果缓存复用:对部分高成本节点启用缓存,相同输入在不同会话中可直接复用结果,减少重复生成开销。
- 可中断、可恢复:生成过程中支持手动取消,之后可从最近一次 checkpoint 继续执行,避免整条流程从头重跑。
- 同时支持
tavily和firecrawl来抓取网页内容。 - 使用
mineru对用户上传的文档内容进行解析 - 同时支持多种PPT的布局方式,目前支持卡片布局、上下布局
- 安装python依赖 (需要 uv ):
uv sync - 安装前端依赖
cd src/frontend
pnpm install-
配置环境变量
cp .env.example .env,并且补齐环境变量 -
启动后端
python -m uvicorn src.backend.main:app --port 8000 --host 0.0.0.0cp src/frontend/.env.example src/frontend/.env,并编辑环境变量设置接口的base_url
pnpm --dir src/frontend/ dev --host --port 5173
- URL的检验
- speaker_note的生成
- 封面页等考虑采用一种统一的布局方式,例如居中并且采用从上到下,从左到右的布局方式
- 支持docker部署

