Crypto-Analyst / crypto_analysis_agents.py
menikev's picture
Update crypto_analysis_agents.py
a991115 verified
from crewai import Agent
from langchain_huggingface import HuggingFacePipeline
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline, GenerationConfig
from crypto_tools import CryptoTools
from news_tools import NewsTools
from sentiment_tools import SentimentTools
class CryptoAnalysisAgents:
def __init__(self):
model_name = "microsoft/phi-2" # A smaller, open-source model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Set pad_token_id to eos_token_id if pad_token_id is not defined
model.config.pad_token_id = tokenizer.eos_token_id
# Create a custom generation config
generation_config = GenerationConfig(
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.95,
max_length=2048
)
# Update the model' config
model.config.max_length = 2048
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
generation_config=generation_config,
repetition_penalty=1.1
)
self.llm = HuggingFacePipeline(pipeline=pipe)
def market_analyst(self):
return Agent(
role='Crypto Market Analyst',
goal="Provide in-depth industry, market analysis and insights for cryptocurrencies. You also provide insight on our geo-politics and economic policies impact on crypto",
backstory="""You are a seasoned crypto market analyst with years of experience in blockchain technology and cryptocurrency markets. Your expertise helps clients navigate the volatile crypto landscape.""",
verbose=True,
llm=self.llm,
tools=[
CryptoTools.get_crypto_price,
CryptoTools.get_market_cap,
NewsTools.search_crypto_news,
SentimentTools.analyze_sentiment
]
)
def technical_analyst(self):
return Agent(
role='Crypto Technical Analyst',
goal="Analyze cryptocurrency price patterns and provide technical insights",
backstory="""You are an expert in technical analysis, specializing in cryptocurrency markets. Your chart reading skills and understanding of technical indicators are unparalleled.""",
verbose=True,
llm=self.llm,
tools=[
CryptoTools.get_crypto_price,
CryptoTools.calculate_rsi,
CryptoTools.calculate_moving_average
]
)
def crypto_advisor(self):
return Agent(
role='Cryptocurrency Investment Advisor',
goal="Provide comprehensive investment advice for cryptocurrency portfolios",
backstory="""You are a trusted cryptocurrency investment advisor with a deep understanding of blockchain technology, market dynamics, and risk management in the crypto space.""",
verbose=True,
llm=self.llm,
tools=[
CryptoTools.get_crypto_price,
CryptoTools.get_market_cap,
NewsTools.search_crypto_news,
SentimentTools.analyze_sentiment
]
)