PPT自動生成系統
基于LangGraph的PPT自動生成系統,可以將Markdown文檔自動轉換為PPT演示文稿。
功能特點
- Markdown解析:自動解析Markdown文檔結構
- PPT模板分析:分析PPT模板的布局和風格
- 智能布局決策:匹配內容與合適的PPT布局
- 自動生成PPT:根據解析結果生成最終的PPT文件
演示Demo
通過多模態+Agent實現的PPT輔助編輯助手演示視頻
部署方法
項目地址:https://github.com/BJSS-China/ppt_assistant
方式一:使用Docker部署
cd docker# 編輯.env文件
cp .env.example .env# 執行部署腳本
./deploy.sh build
# 執行啟動腳本
./deploy.sh start
備注:
- 需要提前安裝好docker和docker-compose
方式二:使用本地環境部署(適用于開發調試)
1. 安裝依賴
# 創建虛擬環境
conda create -n ppt_gen python=3.12
conda activate ppt_gen# 安裝依賴
pip install -r requirements.txt# 初始化子模塊
git submodule update --init# 安裝ppt_manager
cd libs/ppt_manager
pip install -e .
2. 安裝LibreOffice
Mac用戶可以通過brew安裝LibreOffice
brew install --cask libreoffice
安裝之后創建soffice的命令腳本
# 創建軟鏈接
sudo tee /usr/local/bin/soffice <<EOF
#!/bin/bash
/Applications/LibreOffice.app/Contents/MacOS/soffice "\$@"
EOF# 賦予執行權限
sudo chmod +x /usr/local/bin/soffice
驗證安裝
soffice --version
3. 安裝poppler
Mac用戶可以通過brew安裝poppler
brew install poppler
Linux用戶可以通過apt安裝poppler
sudo apt-get install poppler-utils
Windows用戶需要手動下載安裝
下載地址:https://poppler.freedesktop.org/
4. 運行
4.1 復制配置文件
cp .env.example .env
4.2 啟動redis服務
docker-compose -f docker/docker-compose-dev.yml up -d
4.3 啟動后端FastAPI服務
uvicorn apps.api.main:app --reload --host 0.0.0.0 --port 8000
4.4 啟動celery服務
celery -A apps.api.celery_app worker --loglevel=info --concurrency=2 --pool=solo -Q celery,template_analysis,ppt_generation
4.5 啟動前端Vue服務
cd apps/web
npm install --legacy-peer-deps
npm run dev
使用方法
- 訪問前端頁面
- docker部署:http://localhost
- 本地部署:http://localhost:5173
-
訪問管理后臺:點擊前端頁面右上角管理后臺按鈕,進入管理后臺頁面(admin/admin123)
-
配置API_KEY:點擊管理后臺,分別配置LLM、VLLM、deepthink的API Key
備注:
- 模型配置中的文本模型(LLM)和深度思考(deepthink),本質都是文本大模型。
- 前者一般承擔比較輕量級的任務,后者一般承擔上下文比較長的分析任務,為了節省token消耗,區分使用,但都需要配置。
-
上傳PPT模板:在管理后臺,上傳PPT模板文件,稍等分析完畢后,即可在管理后臺看到分析結果
-
在前端頁面,輸入Markdown文檔,點擊生成PPT按鈕
-
下載PPT:待提示PPT生成完畢后,點擊PPT文件,即可下載PPT文件
常見問題
- 問題1: PPT生成過程中,提示"內容規劃失敗,無法獲取內容規劃結果".
問題原因:這種情況是大模型返回的內容存在異常,比如:未按照要求返回。具體可以通過mlflow調試頁面查看返回內容。
- 問題2: PPT生成過程中,生成的PPT文件內容不全,存在部分內容缺失。
問題原因:這種情況是因為大模型在進行內容規劃時,對部分內容進行了刪減所致。該問題解決方式同問題1。
- 問題3: 開啟多模態能力檢測,PPT生成時間變得很長。
問題原因:由于目前PPT的視覺檢測,主要是依賴于soffice的PPT轉圖片,這一過程速度慢且無法優化干預,所以暫時沒有好的解決方案。
備注:各個模型在不同任務上的表現,可以參考模型對比
項目結構
ppt-assisstant/
├── apps/ # 應用層
│ ├── api/ # FastAPI接口服務
│ │ ├── routers/ # 接口路由
│ │ │ ├── agent.py # Agent能力接口
│ │ │ └── file.py # 文件處理接口
│ │ ├── models/ # 接口數據模型
│ │ ├── dependencies/ # 接口依賴項
│ │ └── main.py # FastAPI入口
│ │
│ └── web/ # 前端工程
│ ├── public/ # 靜態資源
│ ├── src/ # 前端源碼
│ └── package.json # 前端依賴
│
├── core/ # 核心業務
│ ├── agents/ # LangGraph Agent實現
│ │ ├── markdown_agent.py # Markdown解析
│ │ ├── ppt_analysis_agent.py # PPT分析
│ │ ├── content_planning_agent.py # 內容規劃
│ │ ├── slide_generator_agent.py # 幻燈片生成
│ │ ├── ppt_finalizer_agent.py # PPT清理與保存
│ │ └── base_agent.py # 基礎Agent
│ │
│ ├── workflows/ # 工作流配置
│ │ ├── ppt_gen.yaml # 主工作流配置
│ │ └── utils.py # 工作流工具
│ │
│ └── engine/ # 執行引擎
│ ├── state.py # 狀態管理
│ └── workflow.py # 工作流引擎
│
├── libs/ # 第三方庫
│ ├── ppt_manager/ # PPT操作庫(git子模塊)
│ └── ... # 其他子模塊
│
├── workspace/ # 運行時文件
│ ├── sessions/ # 會話數據
│ │ └── {session_id}/ # 按會話隔離
│ ├── cache/ # 緩存文件
│ ├── logs/ # 系統日志
│ ├── mlflow/ # mlflow調試日志
│ ├── outputs/ # 輸出文件
│ ├── data/ # 數據文件
│ └── temp/ # 臨時文件
│
├── config/ # 配置中心
│ ├── prompts/ # 提示詞
│ ├── settings.py # 應用配置
│ └── model_config.yaml # 模型配置
│
├── docs/ # 文檔中心
│ ├── arch/ # 架構設計
│ ├── report/ # 報告
│ ├── prd/ # 需求文檔
│ └── api/ # API文檔
│
├── tests/ # 測試體系
│ ├── test_files/ # 測試文件
│ └── test_utils.py # 測試工具
│
├── Dockerfile # 容器化構建
├── docker-compose.yml # 服務編排
└── requirements.txt # Python依賴
實現原理
PPT分析agent(ppt_analysis_agent):
主要負責對PPT模板文件進行逐頁的圖像生成和調用多模態大模型分析布局,生成詳細的PPT特征信息,以Json數據格式保存。
Markdown解析Agent(markdown_agent):
主要負責對PPT的底稿內容進行分析解析,得到title(標題)、content(內容)、內容之間的關系等信息,以Json數據格式保存。
PPT內容規劃Agent(Content_plannning_agent):
主要負責基于ppt_analysis_agent提供的PPT特征信息和markdown_agent提供的底稿內容,進行PPT每一頁幻燈片的規劃,包括:幻燈片的順序、幻燈片的標題、幻燈片的內容、內容計劃展現的形式。
PPT生成Agent(slide_generator_agent):
主要職責:
1.基于Content_plannning_agent提供的規劃內容和PPT文件的Dom內容結構,通過大模型分析每一頁PPT需要修改的Dom節點內容,生成相應的操作指令提供給slide_generator_agent
2.執行操作指令,修改PPT中對應的幻燈片
3.將修改的幻燈片生成圖片后,利用多模態大模型進行排版、內容、樣式的檢查,進而提供修改指令,直到滿足要求或者達到最大修改次數閾值。
PPT歸檔Agent(PPTFinalizerAgent):
主要負責基于Content_plannning_agent規劃的內容和順序,調整PPT中幻燈片的順序,去除多余的幻燈片,最后保存PPT文件。
📄 許可證
本項目采用 Apache License 2.0 開源許可證。
商業使用說明
- ? 開源免費使用:您可以自由使用、修改和分發本軟件
- ? 商業用途友好:允許在商業項目中使用,無需支付許可費
- ? 專利保護:提供明確的專利許可條款
- ?? 版權聲明要求:使用時必須保留原始版權聲明
🙏 致謝
本項目核心思想來源于PPTAgent提出的多模態大語言模型+Agent框架。我們誠摯感謝該項目提供的創新思路,這為本工程的設計和實現奠定了關鍵基礎。