File size: 3,281 Bytes
af64a0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File: app.py
import streamlit as st
import json
import zipfile
import io
import time
from agents import TopicAgent, ContentAgent, SlideAgent, CodeAgent

# Initialize agents
topic_agent = TopicAgent()
content_agent = ContentAgent()
slide_agent = SlideAgent()
code_agent = CodeAgent()

# Streamlit UI
st.set_page_config(page_title="Workshop in a Box", layout="wide")
st.image("https://i.imgur.com/3fXQ0DB.png", width=200)
st.title("πŸ€– Workshop in a Box")
st.caption("Generate corporate AI training workshops in minutes")

# Sidebar configuration
with st.sidebar:
    st.header("Configuration")
    workshop_topic = st.text_input("Workshop Topic", "Advanced Prompt Engineering")
    duration = st.slider("Duration (hours)", 1.0, 8.0, 2.0)
    difficulty = st.selectbox("Difficulty", ["Beginner", "Intermediate", "Advanced"])
    include_code = st.checkbox("Include Code Labs", True)
    include_voiceover = st.checkbox("Include Voiceovers", False)
    
    if st.button("✨ Generate Workshop", type="primary"):
        with st.spinner("Creating your workshop materials..."):
            # Agent pipeline
            start_time = time.time()
            outline = topic_agent.generate_outline(workshop_topic, duration, difficulty)
            content = content_agent.generate_content(outline)
            slides = slide_agent.generate_slides(content)
            code_labs = code_agent.generate_code(content) if include_code else {}
            
            # Prepare download package
            zip_buffer = io.BytesIO()
            with zipfile.ZipFile(zip_buffer, "a") as zip_file:
                zip_file.writestr("outline.json", json.dumps(outline, indent=2))
                zip_file.writestr("content.json", json.dumps(content, indent=2))
                zip_file.writestr("slides.md", slides)
                if code_labs:
                    zip_file.writestr("code_labs.ipynb", code_labs)
            
            st.session_state.outline = outline
            st.session_state.content = content
            st.session_state.slides = slides
            st.session_state.code_labs = code_labs
            st.session_state.zip_buffer = zip_buffer
            st.session_state.gen_time = round(time.time() - start_time, 2)

# Results display
if "outline" in st.session_state:
    st.success(f"Generated workshop materials in {st.session_state.gen_time} seconds!")
    
    # Download button
    st.download_button(
        label="πŸ“₯ Download Workshop Package",
        data=st.session_state.zip_buffer.getvalue(),
        file_name=f"{workshop_topic.replace(' ', '_')}_workshop.zip",
        mime="application/zip"
    )
    
    # Preview sections
    with st.expander("Workshop Outline"):
        st.json(st.session_state.outline)
    
    with st.expander("Content Script"):
        st.write(st.session_state.content)
    
    with st.expander("Slide Deck Preview"):
        st.markdown(st.session_state.slides)
    
    if st.session_state.code_labs:
        with st.expander("Code Labs"):
            st.code(st.session_state.code_labs)

# Sales CTA
st.divider()
st.subheader("Ready to deliver this workshop?")
st.write("**$10K per corporate engagement | $1K refundable pilot deposit**")
st.link_button("πŸš€ Book Pilot Workshop", "https://calendly.com/your-link")