An AI-powered presentation generator that creates professional Quarkdown presentations through a structured 4-step pipeline.
This system generates presentations by following a systematic approach:
- Web Research & Resume: Gather comprehensive information about the topic
- Image Collection: Find and integrate relevant images with descriptions
- Markdown Presentation: Structure content into a presentation format
- Quarkdown Adaptation: Convert to rich Quarkdown format for compilation
config.yml- Main configuration file (YAML-based)llm_optimized.py- Optimized LLM module with 4-step pipelineslides_pipeline_optimized.py- Main pipeline orchestratorslides_response_optimized.py- Enhanced response modelsgenerate_quarkdown.py- Quarkdown compilation utilities
templates/step1_research.md- Research step prompt templatetemplates/step2_images.md- Image collection step prompt templatetemplates/step3_markdown.md- Markdown formatting step prompt templatetemplates/step4_quarkdown.md- Quarkdown adaptation step prompt template
llm.py- Original LLM implementationslides_pipeline.py- Original pipelineslides_response.py- Original response modelsprompt.md- Original monolithic prompt
The system is configured via config.yml:
presentation:
llm:
model: "openai:gpt-4.1-nano"
max_results_per_search: 5
image_search_limit: 5
steps:
step1_research:
name: "Web Research & Resume"
input: ["user_prompt"]
output: "research_resume"
tools: ["duckduckgo_search_tool"]
# ... other stepsfrom slides_pipeline_optimized import prompt_to_presentation_pipeline
# Generate a presentation
prompt_to_presentation_pipeline("Create a presentation about artificial intelligence")from llm_optimized import PresentationPipeline
# Initialize pipeline with custom config
pipeline = PresentationPipeline("custom_config.yml")
# Generate presentation
document = pipeline.generate_presentation("Your topic here")- Input: User prompt
- Output: Structured research resume
- Tools: DuckDuckGo search
- Purpose: Gather comprehensive information about the topic
- Input: User prompt + Research resume
- Output: Research resume enhanced with images
- Tools: Image search (DuckDuckGo)
- Purpose: Find and integrate relevant visual content
- Input: User prompt + Research with images
- Output: Markdown-formatted presentation
- Tools: None (formatting only)
- Purpose: Structure content into presentation slides
- Input: User prompt + Markdown presentation
- Output: Document (Quarkdown format)
- Tools: None (conversion only)
- Purpose: Convert to rich Quarkdown with advanced features
- Each step has its own specialized prompt template
- Tools are filtered per step (only relevant tools available)
- Clear input/output definitions for each step
- YAML-based configuration
- Customizable prompts via template files
- Adjustable parameters for each step
- Each step receives only the necessary input
- Clear data flow between steps
- Independent execution of each phase
- Structured error reporting
- Step-by-step execution tracking
- Graceful failure handling
- Install dependencies:
pip install -r requirements.txt- Set up environment variables in
.env:
OPENAI_API_KEY=your_api_key_here
- Configure Quarkdown path in
config.ymlif needed
streamlit run streamlit_app.pyfrom slides_pipeline_optimized import prompt_to_presentation_pipeline
prompt_to_presentation_pipeline("Your presentation topic")- Add step configuration to
config.yml - Create prompt template in
templates/ - Update pipeline logic in
llm_optimized.py
Edit the corresponding template file in templates/ directory.
Update the tools list in the step configuration in config.yml.
The system generates:
- Quarkdown presentation file (
.qmd) - Compiled presentation (HTML/PDF via Quarkdown)
- Intermediate outputs for debugging