vlbandara's picture
Upload folder using huggingface_hub
eb27803 verified
from typing import List
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from tools.calculator_tool import CalculatorTool
from tools.sec_tools import SEC10KTool, SEC10QTool
from crewai_tools import WebsiteSearchTool, ScrapeWebsiteTool, TXTSearchTool
from dotenv import load_dotenv
load_dotenv()
from langchain.llms import Ollama
llm = Ollama(model="llama3.1")
@CrewBase
class StockAnalysisCrew:
agents_config = 'config/agents.yaml'
tasks_config = 'config/tasks.yaml'
@agent
def financial_agent(self) -> Agent:
return Agent(
config=self.agents_config['financial_analyst'],
verbose=True,
llm=llm,
tools=[
ScrapeWebsiteTool(),
WebsiteSearchTool(),
CalculatorTool(),
SEC10QTool("AMZN"),
SEC10KTool("AMZN"),
]
)
@task
def financial_analysis(self) -> Task:
return Task(
config=self.tasks_config['financial_analysis'],
agent=self.financial_agent(),
)
@agent
def research_analyst_agent(self) -> Agent:
return Agent(
config=self.agents_config['research_analyst'],
verbose=True,
llm=llm,
tools=[
ScrapeWebsiteTool(),
# WebsiteSearchTool(),
SEC10QTool("AMZN"),
SEC10KTool("AMZN"),
]
)
@task
def research(self) -> Task:
return Task(
config=self.tasks_config['research'],
agent=self.research_analyst_agent(),
)
@agent
def financial_analyst_agent(self) -> Agent:
return Agent(
config=self.agents_config['financial_analyst'],
verbose=True,
llm=llm,
tools=[
ScrapeWebsiteTool(),
WebsiteSearchTool(),
CalculatorTool(),
SEC10QTool(),
SEC10KTool(),
]
)
@task
def financial_analysis(self) -> Task:
return Task(
config=self.tasks_config['financial_analysis'],
agent=self.financial_analyst_agent(),
)
@task
def filings_analysis(self) -> Task:
return Task(
config=self.tasks_config['filings_analysis'],
agent=self.financial_analyst_agent(),
)
@agent
def investment_advisor_agent(self) -> Agent:
return Agent(
config=self.agents_config['investment_advisor'],
verbose=True,
llm=llm,
tools=[
ScrapeWebsiteTool(),
WebsiteSearchTool(),
CalculatorTool(),
]
)
@task
def recommend(self) -> Task:
return Task(
config=self.tasks_config['recommend'],
agent=self.investment_advisor_agent(),
)
@crew
def crew(self) -> Crew:
"""Creates the Stock Analysis"""
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential,
verbose=True,
)