Spaces:
Sleeping
Sleeping
| # crew.py | |
| from crewai import Agent, Crew, Process, Task, LLM | |
| from crewai.project import CrewBase, agent, crew, task | |
| from dotenv import load_dotenv | |
| import os | |
| from tools.retrieve_financial_data import retrieve_financial_data | |
| from tools.company_profile_tool import get_company_profile | |
| from tools.news_tool import get_stock_news | |
| # Load environment variables | |
| load_dotenv() | |
| class PredictingStock(): | |
| """PredictingStock crew""" | |
| agents_config = 'config/agents.yaml' | |
| tasks_config = 'config/tasks.yaml' | |
| def __init__(self): | |
| self.llm = LLM( | |
| model="claude-3-haiku-20240307", | |
| api_key=os.getenv("ANTHROPIC_API_KEY") | |
| ) | |
| def stock_information_specialist(self) -> Agent: | |
| return Agent( | |
| config=self.agents_config['stock_information_specialist'], | |
| llm=self.llm, | |
| tools=[retrieve_financial_data], | |
| verbose=True | |
| ) | |
| def company_profile_specialist(self) -> Agent: | |
| return Agent( | |
| config=self.agents_config['company_profile_specialist'], | |
| llm=self.llm, | |
| tools=[get_company_profile], | |
| verbose=True | |
| ) | |
| def news_analyst(self) -> Agent: | |
| return Agent( | |
| config=self.agents_config['news_analyst'], | |
| llm=self.llm, | |
| tools=[get_stock_news], | |
| verbose=True | |
| ) | |
| def investment_advisor(self) -> Agent: | |
| return Agent( | |
| config=self.agents_config['investment_advisor'], | |
| llm=self.llm, | |
| verbose=True | |
| ) | |
| def generate_stock_information(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['generate_stock_information'], | |
| agent=self.stock_information_specialist() | |
| ) | |
| def analyze_company_profile(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['analyze_company_profile'], | |
| agent=self.company_profile_specialist() | |
| ) | |
| def gather_news_sentiment(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['gather_news_sentiment'], | |
| agent=self.news_analyst() | |
| ) | |
| def make_investment_decision(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['make_investment_decision'], | |
| agent=self.investment_advisor(), | |
| context=[self.generate_stock_information(), self.analyze_company_profile(), self.gather_news_sentiment()] | |
| ) | |
| def crew(self) -> Crew: | |
| """Creates the PredictingStock crew""" | |
| return Crew( | |
| agents=self.agents, # Automatically created by the @agent decorator | |
| tasks=self.tasks, # Automatically created by the @task decorator | |
| process=Process.sequential, | |
| verbose=True, | |
| ) |