|
from crewai import Crew
|
|
from textwrap import dedent
|
|
|
|
from stock_analysis_agents import StockAnalysisAgents
|
|
from stock_analysis_tasks import StockAnalysisTasks
|
|
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
|
|
class FinancialCrew:
|
|
def __init__(self, company):
|
|
self.company = company
|
|
|
|
def run(self):
|
|
agents = StockAnalysisAgents()
|
|
tasks = StockAnalysisTasks()
|
|
|
|
research_analyst_agent = agents.research_analyst()
|
|
financial_analyst_agent = agents.financial_analyst()
|
|
investment_advisor_agent = agents.investment_advisor()
|
|
|
|
research_task = tasks.research(research_analyst_agent, self.company)
|
|
financial_task = tasks.financial_analysis(financial_analyst_agent)
|
|
filings_task = tasks.filings_analysis(financial_analyst_agent)
|
|
recommend_task = tasks.recommend(investment_advisor_agent)
|
|
|
|
|
|
crew = Crew(
|
|
agents=[
|
|
research_analyst_agent,
|
|
financial_analyst_agent,
|
|
investment_advisor_agent
|
|
],
|
|
tasks=[
|
|
research_task,
|
|
financial_task,
|
|
filings_task,
|
|
recommend_task
|
|
],
|
|
verbose=True
|
|
)
|
|
|
|
result = crew.kickoff()
|
|
return result
|
|
|
|
if __name__ == "__main__":
|
|
print("## Welcome to Financial Analysis Crew")
|
|
print('-------------------------------')
|
|
company = input(
|
|
dedent("""
|
|
What is the company you want to analyze?
|
|
"""))
|
|
|
|
financial_crew = FinancialCrew(company)
|
|
result = financial_crew.run()
|
|
print("\n\n########################")
|
|
print("## Here is the Report")
|
|
print("########################\n")
|
|
print(result)
|
|
with open("report.txt", "w+") as f:
|
|
f.write(result)
|
|
|