Content
# 🚀 MultiAgentPPT
**News**: The current version is no longer maintained because the PPT content and templates cannot be well maintained, so a new solution is being used for reconstruction. It is recommended to use the PPT template method, a more corporate version: https://github.com/johnson7788/TrainPPTAgent
Author WeChat Q&A:

A multi-agent system based on A2A + MCP + ADK that supports streaming concurrent generation of high-quality (online editable) PPT content.
## 🧠 I. Project Introduction
MultiAgentPPT uses a multi-agent architecture to automate the process from topic input to complete presentation generation. The main steps include:
1. **Outline Generation Agent**: Generates a preliminary content outline based on user needs.
2. **Topic Splitting Agent**: Divides the outline content into multiple topics.
3. **Research Agent works in parallel**: Multiple agents conduct in-depth research on each topic separately.
4. **Summary Agent summarizes output**: Summarizes the research results to generate PPT content and returns it to the front end in real time.
## Advantages
- **Multi-Agent Collaboration**: Improves the efficiency and accuracy of content generation through parallel work of multiple agents.
- **Real-time Streaming Return**: Supports streaming return of generated PPT content, improving user experience.
- **High-Quality Content**: Combines external retrieval and agent collaboration to generate high-quality content outlines and presentations.
- **Scalability**: The system is designed to be flexible and easy to extend with new agents and functional modules.
## II. Recent Updates
### ✅ Done
- ✅ Bug fixes for stream output other than Gemini, ADK and A2A package issues: [View Details](https://github.com/johnson7788/MultiAgentPPT/blob/stream/backend/birthday_planner/README.md)
- ✅ Image rendering: Dynamically switch styles (`object-cover` or `object-contain`) depending on whether it is a background image, and display explanatory text under non-background images. To ensure the uniqueness of PPT pages, use the `page_number` in the large model output as a unique identifier, replacing the original title-based method, to support content updates and proofreading.
- ✅ Use a loop Agent to generate each PPT page, instead of generating all content at once, to facilitate the generation of more pages and avoid LLM token output limitations.
- ✅ Introduced PPTChecker Agent to check the quality of each generated PPT page. The actual test results are good, please replace it with real picture data and content RAG data.
- ✅ The front end displays the generation process status of each Agent.
- ✅ pptx download, use python-pptx to download front-end json data, and back-end rendering.
- ✅ metadata data transmission: Support the front end to transmit configuration to the Agent, and the Agent returns the result with metadata information.
- ✅ [Local Model Adaptation.md](docs/%E6%9C%AC%E5%9C%B0%E6%A8%A1%E5%9E%8B%E9%80%82%E9%85%8D.md)
### 📝 Todo
- 🔄 Integrate editable and downloadable pptx front end
## III. Screenshot Display of the User Interface
The following is a demonstration of the core functions of the MultiAgentPPT project:
### 1. Enter Topic Interface
Users enter the PPT topic content they want to generate in the interface:

### 2. Streaming Generation Outline Process
The system returns the generated outline structure in real time according to the input content:

### 3. Generate Complete Outline
Finally, the system will display the complete outline for users to further confirm:

### 4. Streaming Generation of PPT Content
After confirming the outline, the system starts streaming the content of each slide and returns it to the front end:

### 5. For multi-Agent generated PPT, add progress details display in slide_agent





## 📊 Concurrent Multi-Agent Collaboration Process (slide_agent + slide_outline)
```mermaid
flowchart TD
A[User input research content] --> B[Call Outline Agent]
B --> C[MCP Retrieve data]
C --> D[Generate outline]
D --> E{User confirms outline}
E --> F[Send outline to PPT Generation Agent]
F --> G[Split Outline Agent split outline]
G --> H[Parallel Agent parallel processing]
%% Concurrent Research Agent
H --> I1[Research Agent 1]
H --> I2[Research Agent 2]
H --> I3[Research Agent 3]
I1 --> RAG1[Automatic Knowledge Base Retrieval RAG]
I2 --> RAG2[Automatic Knowledge Base Retrieval RAG]
I3 --> RAG3[Automatic Knowledge Base Retrieval RAG]
RAG1 --> J[SummaryAgent merge results]
RAG2 --> J
RAG3 --> J
J --> L[Loop PPT Agent generate slides]
subgraph Loop PPT Agent
L1[Write PPT Agent<br>Generate each slide]
L2[Check PPT Agent<br>Check the quality of each page, retry up to 3 times]
L1 --> L2
L2 --> L1
end
L --> L1
```
## 🗂️ Project Structure
```bash
MultiAgentPPT/
├── backend/ # Backend multi-Agent service directory
│ ├── simpleOutline/ # Simplified outline generation service (no external dependencies)
│ ├── simplePPT/ # Simplified PPT generation service (no retrieval or concurrency)
│ ├── slide_outline/ # High-quality outline generation service with external retrieval (outline is more accurate after MCP tool retrieval)
│ ├── slide_agent/ # Concurrent multi-Agent PPT generation of the main xml format PPT content
├── frontend/ # Next.js front-end interface
```
---
## ⚙️ IV. Quick Start
### 🐍 4.1 Backend Environment Configuration (Python)
1. Create and activate a Conda virtual environment (recommended python3.11 or above, otherwise there may be bugs):
```bash
conda create --name multiagent python=3.12
conda activate multiagent
```
2. Install dependencies:
```bash
cd backend
pip install -r requirements.txt
```
3. Set backend environment variables:
```bash
# Copy the template configuration file for all modules
cd backend/simpleOutline && cp env_template .env
cd ../simplePPT && cp env_template .env
cd ../slide_outline && cp env_template .env
cd ../slide_agent && cp env_template .env
```
---
### 🧪 4.2 Start Backend Service
| Module | Functionality | Default Port | Startup Command |
| --------------- | --------------- | -------------------------- | -------------------- |
| `simpleOutline` | Simple outline generation | 10001 | `python main_api.py` |
| `simplePPT` | Simple PPT generation | 10011 | `python main_api.py` |
| `slide_outline` | High-quality outline generation (with retrieval) | 10001 (need to close `simpleOutline`) | `python main_api.py` |
| `slide_agent` | Multi-Agent concurrent generation of complete PPT | 10011 (need to close `simplePPT`) | `python main_api.py` |
---
## 🧱 V. Frontend Database Setup and Installation and Running (Next.js)
Database stores user-generated PPTs:
1. Start PostgreSQL using Docker:
```bash
Use when using VPN
docker run --name postgresdb -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=welcome -d postgres
Use in China:
docker run --name postgresdb -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=welcome -d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/cloudnative-pg/postgresql:15
```
2. Modify the `.env` example configuration:
```env
DATABASE_URL="postgresql://postgres:welcome@localhost:5432/presentation_ai"
A2A_AGENT_OUTLINE_URL="http://localhost:10001"
A2A_AGENT_SLIDES_URL="http://localhost:10011"
DOWNLOAD_SLIDES_URL="http://localhost:10021"
```
3. Install dependencies and push the database model:
```bash
cp env_template .env
# Install front-end dependencies
pnpm install
# Push database model and insert user data
pnpm db:push
# Start the front end
npm run dev
```
4. Open the browser to visit: [http://localhost:3000/presentation](http://localhost:3000/presentation)
---
## Docker deployment
```
# Please check docker-compose.yml and the Dockerfile files in each directory yourself
cd frontend
docker compose up
cd backend
docker compose up
```
---
## 🧪 Example Data Description
> The current system's built-in research example is: **"Overview of Electric Vehicle Development"**. If you need research on other topics, please configure the corresponding Agent and connect to the real data source.
> To configure real data, you only need to change the prompt and the corresponding MCP tool.
---
## 📎 VI. Reference Source
The front-end project is partially based on the open-source repository: [allweonedev/presentation-ai](https://github.com/allweonedev/presentation-ai)
# Star History
[](https://www.star-history.com/#johnson7788/MultiAgentPPT&Date)
Connection Info
You Might Also Like
markitdown
Python tool for converting files and office documents to Markdown.
oh-my-opencode
Background agents · Curated agents like oracle, librarians, frontend...
chatbox
User-friendly Desktop Client App for AI Models/LLMs (GPT, Claude, Gemini, Ollama...)
continue
Continue is an open-source project for seamless server management.
semantic-kernel
Build and deploy intelligent AI agents with Semantic Kernel's orchestration...
repomix
Repomix packages your codebase into AI-friendly formats for easy integration.