Content
# 🚀 MultiAgentPPT
A multi-agent system based on A2A + MCP + ADK, supporting streaming concurrent generation of high-quality PPT content.
## 🧠 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 Agents Working in Parallel**: Multiple agents conduct in-depth research on each topic.
4. **Summary Agent Aggregates Output**: Compiles the research results to generate PPT content, returning it to the frontend in real-time.
## Advantages
- **Multi-Agent Collaboration**: Enhances the efficiency and accuracy of content generation through parallel work by 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 produce high-quality content outlines and presentations.
- **Scalability**: The system is designed flexibly, making it easy to expand with new agents and functional modules.
## User Interface Screenshots
Here are the core functionalities of the MultiAgentPPT project:
### 1. Topic Input Interface
Users input the desired PPT topic content in the interface:

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

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

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

## 📊 Concurrent Multi-Agent Collaboration Process
```mermaid
flowchart TD
A[Outline Generation Agent<br>Generates initial content outline based on user requirements] --> B[Topic Splitting Agent<br>Breaks down the outline into multiple topics]
B --> C1[Research Agent 1<br>Researches Topic 1]
B --> C2[Research Agent 2<br>Researches Topic 2]
B --> C3[Research Agent N<br>Researches Topic N]
C1 --> D[Summary Agent Aggregates Output<br>Integrates research results to generate PPT content]
C2 --> D
C3 --> D
D --> E[Real-time streaming return to frontend]
```
## 🗂️ 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/ # Outline generation service with external retrieval
│ ├── slide_agent/ # Concurrent multi-agent PPT generation main service
├── frontend/ # Next.js frontend interface
```
---
## ⚙️ Quick Start
### 🐍 Backend Environment Setup (Python)
1. Create and activate a Conda virtual environment:
```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 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
```
---
### 🧪 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 (requires `simpleOutline` to be closed) | `python main_api.py` |
| `slide_agent` | Multi-agent concurrent complete PPT generation | 10011 (requires `simplePPT` to be closed) | `python main_api.py` |
---
## 🧱 Frontend Database Setup
To use the full database functionality (such as user management), please follow these steps:
1. Start PostgreSQL using Docker:
```bash
docker run --name postgresdb -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=welcome -d postgres
```
2. Install dependencies and push database models:
```bash
pnpm install
pnpm db:push
```
3. Insert default user (if the frontend reports no user, please check insert_oneUser.sql)
4. Example `.env` 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"
```
### 🌐 Frontend Installation and Running (Next.js)
1. Install dependencies:
```bash
cd frontend
npm install
```
2. Configure environment variables:
```bash
cp env_template .env
```
3. Run the frontend development server:
```bash
npm run dev
```
4. Open your browser and visit: [http://localhost:3000](http://localhost:3000)
---
---
## 🧪 Sample Data Description
> The current system includes a built-in research example: **“Overview of Electric Vehicle Development”**. For research on other topics, please configure the corresponding agents and connect to real data sources.
---
## 📎 References
The frontend project is partially based on the open-source repository: [allweonedev/presentation-ai](https://github.com/allweonedev/presentation-ai)
## Author WeChat ID
johnsongzc