SwatGarg's picture
Update app.py
dd025db verified
from crewai import Crew
from textwrap import dedent
from agents import ContentAgents
from tasks import ContentTasks
from dotenv import load_dotenv
import json
import streamlit as st
from image_search_tool import image_search_tool
load_dotenv()
class ContentCrew:
def __init__(self, topic):
self.topic = topic
def run(self):
agents = ContentAgents()
tasks = ContentTasks()
planner_agent = agents.planner_agent(self.topic)
researcher_agent = agents.researcher_agent(self.topic)
writer_agent = agents.writer_agent(self.topic)
planner_task = tasks.planner_task(planner_agent, self.topic)
researcher_task = tasks.researcher_task(researcher_agent, self.topic)
writer_task = tasks.writer_task(writer_agent, self.topic)
crew = Crew(
agents=[planner_agent, researcher_agent, writer_agent],
tasks=[planner_task, researcher_task, writer_task],
verbose=True
)
result = crew.kickoff()
# Debugging: Print the structure and content of the result
print("DEBUG: Result structure and content")
print(json.dumps(result, indent=2))
return result
# Function to display the result in Streamlit
def display_result(result):
st.write("## Research on Topic")
st.write('-------------------------------')
if 'content_plan' in result:
st.write("### Content Plan")
st.write(result['content_plan'])
if 'references' in result:
st.write("### References")
for ref in result['references']:
st.markdown(f"- [{ref['title']}]({ref['link']}): {ref['snippet']}")
if 'images' in result:
st.write("### Images")
for idx, image in enumerate(result['images']):
img_path = f"image_{idx}.png"
WebSearchTools.download_image(image, img_path)
st.image(img_path, caption=f"Image {idx+1}")
if 'content' in result:
st.markdown(result['content'])
# Streamlit UI
st.title('Content Creator Chatbot')
st.write('-------------------------------')
topic = st.text_input("What topic do you want to write about?")
if st.button('Generate Content'):
if topic:
# Instantiate ContentCrew and run
content_crew = ContentCrew(topic)
result = content_crew.run()
# Display the results
st.write(result)
image_search_tool(topic)
image_path = 'images/image_1.jpg'
st.image(image_path, caption='Image1', use_column_width=True)
else:
st.error("Please enter a topic.")