|
|
|
import streamlit as st |
|
import json |
|
import zipfile |
|
import io |
|
import time |
|
from agents import TopicAgent, ContentAgent, SlideAgent, CodeAgent |
|
|
|
|
|
topic_agent = TopicAgent() |
|
content_agent = ContentAgent() |
|
slide_agent = SlideAgent() |
|
code_agent = CodeAgent() |
|
|
|
|
|
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") |
|
|
|
|
|
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..."): |
|
|
|
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 {} |
|
|
|
|
|
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) |
|
|
|
|
|
if "outline" in st.session_state: |
|
st.success(f"Generated workshop materials in {st.session_state.gen_time} seconds!") |
|
|
|
|
|
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" |
|
) |
|
|
|
|
|
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) |
|
|
|
|
|
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") |