1、crewai_tools中包含很多工具插件,例如爬虫、搜索插件,而且都已经完成了
例如SerperDevTool,可以去它的官网申请key,免费
from crewai import Agent, Task, Crew , Process
from crewai_tools import ScrapeWebsiteTool
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()
data_analyst_agent = Agent(role="Data Analyst", goal="Monitor and analyze market data in real-time to identify trends and predict market movements.", backstory="Specializing in financial markets, this agent uses statistical modeling and machine learning to provide crucial insights.", verbose=True, allow_delegation=True, tools=[scrape_tool, search_tool] )trading_strategy_agent = Agent(role="Trading Strategy Developer", goal="Develop and test various trading strategies based on insights from the Data Analyst Agent.", backstory="Equipped with a deep understanding of financial markets and quantitative analysis, this agent devises and refines trading strategies.", verbose=True, allow_delegation=True, tools=[scrape_tool, search_tool] )# 交易
execution_agent = Agent(role="Trade Advisor", goal="Suggest optimal trade execution strategies based on approved trading strategies.", backstory="This agent specializes in analyzing the timing, price, and logistical details of potential trades.", verbose=True, allow_delegation=True, tools=[scrape_tool, search_tool] )risk_management_agent = Agent(role="Risk Advisor", goal="Evaluate and provide insights on the risks associated with potential trading activities.", backstory="Armed with a deep understanding of risk assessment models and market dynamics, this agent scrutinizes the potential risks of proposed trades.", verbose=True, allow_delegation=True, tools=[scrape_tool, search_tool])data_analysis_task = Task(description=("Continuously monitor and analyze market data for the selected stock ({stock_selection}). " "Use statistical modeling and machine learning to identify trends and predict market movements."), expected_output=("Insights and alerts about significant market opportunities or threats for {stock_selection}." ), agent=data_analyst_agent, )# TASK
strategy_development_task = Task( description=("Develop and refine trading strategies based on the insights from the Data Analyst and user-defined risk tolerance ({risk_tolerance}). " "Consider trading preferences ({trading_strategy_preference})." ), expected_output=("A set of potential trading strategies for {stock_selection} that align with the user's risk tolerance."), agent=trading_strategy_agent, )execution_planning_task = Task(description=("Analyze approved trading strategies to determine the best execution methods for {stock_selection}, " "considering current market conditions and optimal pricing."), expected_output=("Detailed execution plans suggesting how and when to execute trades for {stock_selection}."), agent=execution_agent,)
risk_assessment_task = Task(description=("Evaluate the risks associated with the proposed trading strategies and execution plans for {stock_selection}. " "Provide a detailed analysis of potential risks and suggest mitigation strategies." ), expected_output=("A comprehensive risk analysis report detailing potential risks and mitigation recommendations for {stock_selection}."), agent=risk_management_agent, )financial_trading_crew = Crew(agents=[ data_analyst_agent, trading_strategy_agent, execution_agent, risk_management_agent ], tasks=[ data_analysis_task, strategy_development_task, execution_planning_task, risk_assessment_task ],
# manager_llm=ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7), manager_llm=llama_model,process=Process.hierarchical, verbose=True )
financial_trading_inputs = { 'stock_selection': 'AAPL', 'initial_capital': '100000', 'risk_tolerance': 'Medium', 'trading_strategy_preference': 'Day Trading', 'news_impact_consideration': True }
result = financial_trading_crew.kickoff(inputs=financial_trading_inputs)
结果: