File size: 5,042 Bytes
5c11d86
 
2c19cee
eb26a43
f9765e7
2c19cee
 
5c11d86
2c19cee
 
 
 
 
 
 
5c11d86
 
 
2c19cee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5c11d86
2c19cee
 
 
 
 
 
 
 
b9ece36
2c19cee
5c11d86
 
2c19cee
 
 
 
 
 
 
 
 
 
 
5c11d86
 
2c19cee
 
 
 
 
 
 
 
 
5c11d86
2c19cee
 
 
 
 
 
 
 
 
5c11d86
 
2c19cee
 
 
 
 
5c11d86
 
2c19cee
5c11d86
2c19cee
5c11d86
2c19cee
 
 
 
5c11d86
2c19cee
 
 
5c11d86
2c19cee
 
5c11d86
 
2c19cee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import os
from crewai import Agent, Task, Crew, Process
from langchain.tools import Tool  # Assuming DuckDuckGoSearchRun or equivalent tool is available
import gradio as gr

# Assuming WebSearchTools and ChatGoogleGenerativeAI are properly defined and available
from WebScape_TOOL import WebSearchTools  

##################################  -  GOOGLE LLM  -  ##################################
from langchain_google_genai import ChatGoogleGenerativeAI
# Set up API keys and environment variables
api_gemini = 'AIzaSyB4feCeVxvjfd6a6L1jtaV_NHUMSh0MGQk' # Replace with your actual API key
os.environ["api_gemini"] = api_gemini
# Define the Large Language Model (LLM)
llm = ChatGoogleGenerativeAI(model="gemini-pro", verbose=True, temperature=0.1, google_api_key=api_gemini)



from langchain.tools import DuckDuckGoSearchRun
duckduckgo_search_tool = DuckDuckGoSearchRun()

from WebScape_TOOL import WebSearchTools

search = WebSearchTools()
process = WebSearchTools().process_search_results

def create_crewai_crypto_setup(crypto_symbol):
    # Main Research Agent for technical and market analysis
    research_agent = Agent(
        role="Crypto Analysis Expert",
        goal=f"Perform in-depth analysis on cryptocurrency realted queries, focusing on market outlook, investment strategies, technical/trade signals, and risks.",
        backstory="Expert in technical analysis, market sentiment, and investment strategy for cryptocurrencies.",
        verbose=True,
        allow_delegation=True,
        tools=[duckduckgo_search_tool],
        llm=llm,
    )
    research_agent2 = Agent(
        role="Crypto Analysis Expert",
        goal=f"""Using the websearchtools perform in-depth research for the cryptocurrency - {crypto_symbol}, 
        focusing on market outlook, investment strategies, technical/trade signals, etc
        NOTE: Use the Search tool to search and the process tool to scape the url for additonal data, every serch much be followed by a process (webscrape)
        """,
        backstory="Expert in technical analysis, market sentiment, and investment strategy for cryptocurrencies.",
        verbose=True,
        allow_delegation=False,
        llm=llm,
    )

    # Task 1: Market Outlook
    market_data_t0 = Task(
        description=f"""Search and gather market data and metrics for cryptocurrency - {crypto_symbol} - Only focus on the crypto name and symbol.
        focus on 2024 and beyond price trends, including timeline of price targets, key price points, buy/sell/hold levels,
        techincal triggers and metrics, price action, and short, medium, long term predictions along with any other relavant information, metrics and or datapoints.""",
        expected_output="Group similar data into sections, with information and data metrics presented in a clear and concise manner",
        tools=[search.pricetargets_search,
               search.forecast_search,
               search.technicalsignals_search,
               process],
        agent=research_agent2,
    )

    # Task 3: Technical/Trade Signals
    technical_signals_t3 = Task(
        description=f""""Research and perform technical analysis on cryptocurrency - {crypto_symbol}, 
        identify recent trade and techincal signals, report over various timeframes, trend type (Bullish, neutral, bearish), 
        and type of indicator like moving averages, RSI, MACD, or other related signars if present during search.
        note - Use only the crypto symbol to perfom your search""",
        expected_output="Information in list with summary grouped if possible",
        tools=[search.technicalsignals_search, process],
        agent=research_agent,
    )
    
    ### Gather information and structure it? or not ?
    #### DEFINE What sections we need in the report for t3 
    
    Summary_t3 = Task(
        description=f""""Create a report based on the request {crypto_symbol} (Focus on talioring the info,metrics, and metrics
        that are relavant to the query. You have access to all the information you need and can delegate research if needed""",
        expected_output="Report based on query with summary followed by sections with similar datapoints grouped including relavant data and metrics. The report should be organized, easy to read, clear and concise",
        agent=research_agent,
    )

    # Crew setup for processing the tasks sequentially
    crypto_crew = Crew(
        agents=[research_agent, research_agent2],
        tasks=[market_data_t0,Summary_t3],
        verbose=2,
        process=Process.sequential,
    )
    crew_result = crypto_crew.kickoff()

    return crew_result

# Gradio Interface
def run_crewai_app(crypto_symbol):
    crew_result = create_crewai_crypto_setup(crypto_symbol)
    return crew_result

iface = gr.Interface(
    fn=run_crewai_app, 
    inputs="text", 
    outputs="text",
    title="CrewAI Trade Analysis",
    description="Enter a Cryptocurrency Ticker + (optional) Techincal/trading signals, price predictions, price targets, buy/sell/hold prices."
)

iface.launch()