Spaces:
Sleeping
Sleeping
| import os | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| from crewai import Crew | |
| from crewai.process import Process | |
| from langchain_openai import ChatOpenAI | |
| from tasks import CrewTasks | |
| from agents import CrewAgents | |
| from singleton import Singleton | |
| # Initialize Singleton once | |
| if "singleton_initialized" not in st.session_state: | |
| Singleton() | |
| st.session_state.singleton_initialized = True | |
| # Title | |
| st.title("π§ Landing Page Generator using CrewAI") | |
| # Input | |
| user_input = st.text_area("π‘ Describe your landing page idea:", placeholder="e.g., A modern, minimal landing page for an AI copywriting tool...") | |
| # Run button | |
| if st.button("π Build Landing Page"): | |
| if not user_input.strip(): | |
| st.warning("Please enter a landing page idea.") | |
| else: | |
| with st.spinner("π·ββοΈ Building with agents..."): | |
| tasks = CrewTasks() | |
| agents = CrewAgents() | |
| # Create Agents | |
| senior_engineer_agent = agents.senior_engineer_agent() | |
| qa_engineer_agent = agents.qa_engineer_agent() | |
| chief_qa_engineer_agent = agents.chief_qa_engineer_agent() | |
| feedback_agent = agents.feedback_agent() | |
| # Create Tasks | |
| code_landing_page = tasks.code_task(senior_engineer_agent, user_input) | |
| review_landing_page = tasks.review_task(qa_engineer_agent, user_input) | |
| approve_landing_page = tasks.evaluate_task(chief_qa_engineer_agent, user_input) | |
| get_feedback = tasks.get_feedback(feedback_agent, user_input) | |
| # Crew setup | |
| crew = Crew( | |
| agents=[ | |
| senior_engineer_agent, | |
| qa_engineer_agent, | |
| chief_qa_engineer_agent, | |
| feedback_agent | |
| ], | |
| tasks=[ | |
| code_landing_page, | |
| review_landing_page, | |
| approve_landing_page, | |
| get_feedback | |
| ], | |
| verbose=True, | |
| process=Process.sequential | |
| ) | |
| # Kickoff | |
| result = crew.kickoff() | |
| st.success("β Generation Complete!") | |
| st.subheader("π§Ύ Final Landing Page Code:") | |
| st.code(result, language="html") | |