agent / app.py
Wajahat698's picture
Rename main.py to app.py
f42b0b9 verified
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")