naso / app.py
mgbam's picture
Rename package.json to app.py
af64a0f verified
raw
history blame
3.28 kB
# 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")