| | import os |
| | from crewai import Agent, Task, Crew, Process |
| | from langchain.tools import DuckDuckGoSearchRun |
| | from langchain.agents import Tool |
| | import gradio as gr |
| |
|
| | |
| | duckduckgo_search_tool = DuckDuckGoSearchRun() |
| |
|
| | |
| | from langchain_google_genai import ChatGoogleGenerativeAI |
| |
|
| | api_gemini = os.environ["api_gemini"] |
| | llm = ChatGoogleGenerativeAI(model="gemini-pro", verbose=True, temperature=0.1, google_api_key=api_gemini) |
| | |
| |
|
| |
|
| | |
| | from langchain.tools import DuckDuckGoSearchRun |
| | from langchain.agents import Tool |
| | |
| | ddg_search = DuckDuckGoSearchRun() |
| |
|
| | def coingecko_search_wrapper(input_text): |
| | return ddg_search.run(f"site:coingecko.com {input_text}") |
| |
|
| | def coinmarketcap_search_wrapper(input_text): |
| | return ddg_search.run(f"site:coinmarketcap.com {input_text}") |
| |
|
| | def general_search_wrapper(input_text): |
| | return ddg_search.run(f'cryptocurrency {input_text}') |
| |
|
| | |
| | GeneralSearch = Tool( |
| | name="GeneralSearch", |
| | func=general_search_wrapper, |
| | description="General search for cryptocurrencies" |
| | ) |
| |
|
| | CoinGeckoSearch = Tool( |
| | name="CoingeckoSearch", |
| | func=coingecko_search_wrapper, |
| | description="Searches on Coingecko" |
| | ) |
| |
|
| | CoinMarketCapSearch = Tool( |
| | name="CoinmarketcapSearch", |
| | func=coinmarketcap_search_wrapper, |
| | description="Searches on CoinMarketCap" |
| | ) |
| | |
| |
|
| | def create_crewai_crypto_setup(crypto_symbol): |
| | |
| | research_agent = Agent( |
| | role="Crypto Analysis Expert", |
| | goal=f"Perform in-depth analysis on {crypto_symbol}, focusing on technical indicators, market trends, and recent news.", |
| | backstory="Expert in technical analysis and market sentiment for cryptocurrencies, capable of identifying investment opportunities and risks.", |
| | verbose=True, |
| | max_iter=40, |
| | allow_delegation=False, |
| | tools=[duckduckgo_search_tool, CoinGeckoSearch, CoinMarketCapSearch], |
| | llm=llm, |
| | ) |
| |
|
| | |
| | report_formatting_agent = Agent( |
| | role="Strategy Report Creator", |
| | goal="Synthesize analysis into a clear, actionable investment strategy report.", |
| | backstory="Specializes in creating detailed investment strategies based on comprehensive market and technical analysis.", |
| | verbose=True, |
| | allow_delegation=True, |
| | max_iter=30, |
| | llm=llm, |
| | ) |
| |
|
| | |
| | MarketTrends_T1 = Task( |
| | description=f"Examine cryptocurrency coin - {crypto_symbol} price history to identify current market trends and potential future movements.", |
| | expected_output="Summary of market trends and historical price analysis, list of key datapoints including price outlook short, medium, longterm", |
| | async_execution=True, |
| | agent=research_agent, |
| | ) |
| |
|
| | |
| | TechnicalAnalysis_T2 = Task( |
| | description=f"Apply technical analysis on the cryptocurrency {crypto_symbol}, focusing on RSI, MACD, support/resistance levels, and other relevant indicators.", |
| | expected_output="Technical analysis summary with key indicator findings, techincal setups, and numerical datapoints", |
| | async_execution=True, |
| | agent=research_agent, |
| | ) |
| |
|
| | |
| | SentimentNews_T3 = Task( |
| | description=f"Gather and analyze recent news and community sentiment regarding cryptocurrency - {crypto_symbol} to gauge market sentiment.", |
| | expected_output="Summary of recent developments, news impact, and community sentiment", |
| | async_execution=True, |
| | agent=research_agent, |
| | ) |
| |
|
| | |
| | OpportunitiesRisks_T4 = Task( |
| | description=f"Identify and evaluate potential investment opportunities and risks associated with cryptocurrency - {crypto_symbol}.", |
| | expected_output="List of investment opportunities and risks", |
| | async_execution=True, |
| | agent=research_agent, |
| | ) |
| |
|
| | |
| | StrategyReport_T5 = Task( |
| | description=f"""Create a detailed investment plan for the cryptocurrency - {crypto_symbol}, incorporating price targets, technical analysis, investment strategies, and timelines. |
| | Ensure the plan includes actionable advice on when to buy, sell, and hold, along with risk management strategies. |
| | """, |
| | expected_output="""Sectioned report that focuses on breif bullet points and notes and key data points, Investment strategy report with actionable insights and strategies |
| | |
| | NOTES: |
| | The report is for advanced cryptocurrency experts. |
| | Do note include disclaimers or warnings |
| | Remove uneeded words make it concise. |
| | Final output needs to be strictly 2000 characters or less. |
| | I will tip you 10,000 dollars if you report great.""", |
| | context=[MarketTrends_T1,TechnicalAnalysis_T2,SentimentNews_T3,OpportunitiesRisks_T4], |
| | agent=report_formatting_agent, |
| | ) |
| |
|
| | |
| | crypto_crew = Crew( |
| | agents=[research_agent, report_formatting_agent], |
| | tasks=[MarketTrends_T1, TechnicalAnalysis_T2, SentimentNews_T3, OpportunitiesRisks_T4, StrategyReport_T5], |
| | verbose=2, |
| | process=Process.sequential, |
| | ) |
| |
|
| | crew_result = crypto_crew.kickoff() |
| | return crew_result |
| |
|
| | |
| | def run_crewai_crypto_app(crypto_symbol): |
| | crew_result = create_crewai_crypto_setup(crypto_symbol) |
| | return crew_result |
| |
|
| | iface = gr.Interface( |
| | fn=run_crewai_crypto_app, |
| | inputs="text", |
| | outputs="text", |
| | title="CryptoScout - CrewAI - Cryptocurrency Investment Advisor", |
| | description="Enter a cryptocurrency symbol to analyze and generate a comprehensive investment plan." |
| | ) |
| |
|
| | iface.launch() |
| |
|