Content
# 🚀 MultiAgentPPT
**News**: The current version is no longer maintained, as the PPT content and templates cannot be well maintained. A new solution is being adopted for reconstruction. It is recommended to use the template approach for PPT, which is a more enterprise-oriented version: https://github.com/johnson7788/TrainPPTAgent
Author's WeChat for Q&A:

A multi-agent system based on A2A + MCP + ADK, supporting streaming concurrent generation of high-quality (editable online) PPT content.
## 🧠 I. Project Introduction
MultiAgentPPT utilizes a multi-agent architecture to automate the process from topic input to complete presentation generation. The main steps include:
1. **Outline Generation Agent**: Generates an initial content outline based on user requirements.
2. **Topic Splitting Agent**: Breaks down the outline content into multiple topics.
3. **Research Agent Working in Parallel**: Multiple agents conduct in-depth research on each topic separately.
4. **Summary Agent Aggregates Output**: Compiles the research results to generate PPT content and streams it back to the frontend in real-time.
## Advantages
- **Multi-Agent Collaboration**: Improves the efficiency and accuracy of content generation through parallel work by multiple agents.
- **Real-time Streaming Return**: Supports streaming return of generated PPT content, enhancing user experience.
- **High-Quality Content**: Generates high-quality content outlines and presentations by combining external retrieval and agent collaboration.
- **Scalability**: The system is designed to be flexible, making it easy to expand with new agents and functional modules.
## II. Recent Upgrades
### ✅ Done
- ✅ Bug fixes for outputs other than Gemini, package issues for ADK and A2A: [View Details](https://github.com/johnson7788/MultiAgentPPT/blob/stream/backend/birthday_planner/README.md)
- ✅ In terms of image rendering: dynamically switch styles (`object-cover` or `object-contain`) based on whether it is a background image, and display explanatory text for non-background images. To ensure the uniqueness of the PPT pages, use the `page_number` from the large model output as a unique identifier, replacing the previous title-based method to support content updates and proofreading.
- ✅ Use a loop Agent to generate each page of the PPT, instead of generating all content at once, making it easier to create more pages and avoiding the token output limit of the LLM.
- ✅ Introduced the PPTChecker Agent to check the quality of each generated PPT page. The actual testing results are good; please replace with real image data and content RAG data.
- ✅ Frontend displays the generation process status of each Agent.
- ✅ pptx download, using python-pptx to download frontend json data and render it on the backend.
- ✅ Metadata data transmission: supports the frontend to transmit configuration to the Agent, with metadata information included in the results returned by the Agent.
- ✅ [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 the frontend for editable and downloadable pptx
## 3. User Interface Screenshot Demonstration
The following are demonstrations of the core features of the MultiAgentPPT project:
### 1. Input Theme Interface
Users enter the desired PPT theme content in the interface:

### 2. Streamed Outline Generation Process
The system generates and returns the outline structure in real-time based on the input content:

### 3. Generate Complete Outline
The final system will display the complete outline for user confirmation:

### 4. Streaming Generation of PPT Content
After confirming the outline, the system begins to stream the content for each slide and returns it to the frontend:

### 5. For Multi-Agent PPT Generation, Add Progress Detail Display in slide_agent





## 📊 Concurrency in Multi-Agent Collaboration Process (slide_agent + slide_outline)
```mermaid
flowchart TD
A[User inputs research content] --> B[Call Outline Agent]
B --> C[MCP retrieves materials]
C --> D[Generate outline]
D --> E{User confirms outline}
E --> F[Send outline to PPT generation Agent]
F --> G[Split Outline Agent splits outline]
G --> H[Parallel Agent processes in parallel]
%% Concurrent Research Agents
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 merges results]
RAG2 --> J
RAG3 --> J
J --> L[Loop PPT Agent generates slide pages]
subgraph Loop PPT Agent
L1[Write PPT Agent<br>generates each slide]
L2[Check PPT Agent<br>checks content quality of each page, up to 3 retries]
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 (does not use retrieval or concurrency)
│ ├── slide_outline/ # Outline generation service with external retrieval (outline is more accurate after retrieval using MCP tool)
│ ├── slide_agent/ # Concurrent multi-Agent PPT generation primarily in XML format
├── frontend/ # Next.js frontend interface
```
## ⚙️ IV. Quick Start
### 🐍 4.1 Backend Environment Configuration (Python)
1. Create and activate a Conda virtual environment (recommended Python version 3.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 up backend environment variables:
```bash
# Copy template configuration files 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 Services
| Module | Function | Default Port | Start 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 (must close `simpleOutline`) | `python main_api.py` |
| `slide_agent` | Concurrent Generation of Complete PPT with Multiple Agents | 10011 (must close `simplePPT`) | `python main_api.py` |
## 🧱 V. Frontend Database Setup and Installation and Running (Next.js)
The database stores user-generated PPTs:
1. Start PostgreSQL using Docker:
```bash
Use when connected to VPN
docker run --name postgresdb -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=welcome -d postgres
Use in mainland 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 frontend dependencies
pnpm install
# Push database model and insert user data
pnpm db:push
# Start the frontend
npm run dev
```
4. Open your browser and visit: [http://localhost:3000/presentation](http://localhost:3000/presentation)
---
## Docker Deployment
```
# Please check the docker-compose.yml and the Dockerfile files in each directory
cd frontend
docker compose up
cd backend
docker compose up
```
## 🧪 Sample Data Description
> The current system has a built-in research example: **“Overview of Electric Vehicle Development”**. For research on other topics, please configure the corresponding Agent and connect to real data sources.
> To configure real data, simply change the prompt and the corresponding MCP tools.
## 📎 6. References
The front-end project is 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
semantic-kernel
Integrate cutting-edge LLM technology quickly and easily into your apps
repomix
📦 Repomix is a powerful tool that packs your entire repository into a...
Serena
A powerful coding agent toolkit providing semantic retrieval and editing...
Blender
BlenderMCP integrates Blender with Claude AI for enhanced 3D modeling.
pydantic-ai
GenAI Agent Framework, the Pydantic way
cua
Open-source infrastructure for Computer-Use Agents. Sandboxes, SDKs, and...