Spaces:
No application file
No application file
import os | |
import streamlit as st | |
from crewai import Agent, Task, Crew, LLM | |
# Set your Gemini AI API key and model | |
gemini_api_key = "AIzaSyAC_i-I9uCP2UP14H89uigWP7MDM2xQno8" | |
serper_api_key = "b86545fdabc35dcb13fd8cc0a9b88c3a17b6dc89" | |
os.environ["GEMINI_API_KEY"] = gemini_api_key | |
# Initialize the LLM instance | |
my_llm = LLM( | |
api_key=gemini_api_key, | |
model="gemini/gemini-pro" | |
) | |
# Define your agents with roles, goals, and backstory | |
researcher = Agent( | |
role="Market Researcher", | |
goal=( | |
f"Gather detailed information about {company_name}, including its market position, " | |
f"competitor strategies, customer segments, and latest trends in the industry. " | |
f"Leverage tools like online databases, market reports, and press releases to provide comprehensive insights." | |
), | |
backstory=( | |
f"You are an experienced market researcher with expertise in extracting actionable intelligence " | |
f"about companies like {company_name}. You excel in identifying emerging opportunities, uncovering " | |
f"competitor strengths, and analyzing industry dynamics to provide a complete overview of the business landscape." | |
), | |
llm=my_llm, | |
allow_delegation=False, | |
verbose=True, | |
) | |
analyzer = Agent( | |
role="Data Analyzer", | |
goal=( | |
f"Analyze {company_name}'s financial performance, operational metrics, strengths, and weaknesses. " | |
f"Identify key performance indicators (KPIs) and assess the impact of external factors like market trends " | |
f"and economic conditions. Provide actionable insights and recommendations for improvement." | |
), | |
backstory=( | |
f"You are a skilled data analyst with extensive experience in dissecting business data. Your expertise lies in " | |
f"transforming raw data into meaningful insights, creating detailed performance analyses, and offering strategic guidance " | |
f"tailored to companies like {company_name}. You utilize advanced analytics tools to generate reliable and insightful reports." | |
), | |
llm=my_llm, | |
allow_delegation=False, | |
verbose=True, | |
) | |
research_task = Task( | |
description=f"Conduct research on {company_name}, focusing on its competitors, market trends, and customer demographics.", | |
expected_output=f"A detailed research document outlining {company_name}'s market position, competitor insights, and growth opportunities.", | |
agent=researcher, | |
) | |
analysis_task = Task( | |
description=f"Perform an in-depth analysis of {company_name}'s financial performance, operational metrics, and market impact.", | |
expected_output=f"A comprehensive report on {company_name}'s strengths, weaknesses, and actionable recommendations for growth.", | |
agent=analyzer, | |
) | |
final_article_task = Task( | |
description=f"Combine the research and analysis results into a final article that provides a holistic overview of {company_name}.", | |
expected_output=f"A well-structured final analysis article about {company_name}, including actionable recommendations.", | |
context=[research_task, analysis_task], | |
agent=researcher, | |
) | |
# comparator = Agent( | |
# role="Comparator", | |
# goal="Compare the company with its competitors and provide actionable suggestions.", | |
# backstory="You specialize in comparing companies and offering improvement strategies.", | |
# llm=my_llm, | |
# allow_delegation=False, | |
# verbose=True, | |
# ) | |
# Define Tasks for Agents | |
# Create the crew with your agents and tasks | |
company_analysis_crew = Crew( | |
agents=[researcher, analyzer], | |
tasks=[research_task, analysis_task, final_article_task], | |
verbose=True, | |
) | |
# Streamlit Interface for user input | |
st.title("Company Analysis") | |
# Input section for company and competitors | |
st.write("Enter Company Details") | |
company_name = st.text_input(":)") | |
# competitor_list = st.text_area( | |
# "List of Competitors (comma-separated)", | |
# "Competitor A, Competitor B, Competitor C" | |
# ) | |
# Start the analysis when the user clicks the button | |
if st.button("Start Analysis"): | |
st.write("Running Analysis... Please wait.") | |
# Define inputs for the analysis tasks | |
inputs = { | |
"company_name": company_name, | |
# "competitors": competitor_list.split(","), | |
} | |
# Kick off the Crew Process | |
results = company_analysis_crew.kickoff(inputs=inputs) | |
st.markdown(results) | |
# Display Results | |
st.success("Analysis Completed!") | |
if "final_article.md" in results: | |
st.header("Final Analysis Article") | |
st.markdown(results["final_article.md"], unsafe_allow_html=True) | |