Spaces:
Configuration error
Configuration error
from crewai import Agent | |
import os | |
from dotenv import load_dotenv | |
from langchain_google_genai import ChatGoogleGenerativeAI | |
from tools import tool | |
import smtplib | |
from email.mime.text import MIMEText | |
from email.mime.multipart import MIMEMultipart | |
load_dotenv() | |
import asyncio | |
try: | |
loop = asyncio.get_running_loop() | |
except RuntimeError: | |
loop = asyncio.new_event_loop() | |
asyncio.set_event_loop(loop) | |
# Defining the base llm model | |
llm = ChatGoogleGenerativeAI( | |
model="gemini-1.5-flash", | |
google_api_key=os.environ.get("GOOGLE_API_KEY"), | |
temperature=0.5, | |
verbose=True | |
) | |
def send_email(to_email, subject, body): | |
from_email = os.environ.get("FROM_EMAIL") | |
password = os.environ.get("EMAIL_PASSWORD") | |
smtp_server = os.environ.get("SMTP_SERVER") | |
smtp_port = int(os.environ.get("SMTP_PORT")) | |
# Create the email content | |
msg = MIMEMultipart() | |
msg['From'] = from_email | |
msg['To'] = to_email | |
msg['Subject'] = subject | |
msg.attach(MIMEText(body, 'plain')) | |
try: | |
# Create a secure SSL context and log in to the email server | |
with smtplib.SMTP(smtp_server, smtp_port) as server: | |
server.starttls() # Upgrade to a secure connection | |
server.login(from_email, password) | |
server.sendmail(from_email, to_email, msg.as_string()) | |
print("Email sent successfully.") | |
except Exception as e: | |
print(f"Failed to send email: {e}") | |
async def generate_report_and_send_email(report, email): | |
subject = "Market Research & Precaution Report" | |
body = f"Here is your report:\n\n{report}" | |
print("Sending email to:", email) | |
send_email(email, subject, body) | |
# Define the agents | |
news_research_agent = Agent( | |
role="News Research and Summarization Agent", | |
goal="Research and summarize the top news article related to {input_text}.", | |
verbose=True, | |
memory=True, | |
backstory=("You are a News Research and Summarization Agent responsible for gathering news articles " | |
"related to user input. Your goal is to summarize the top article in four sentences."), | |
tools=[tool], | |
llm=llm, | |
allow_delegation=False | |
) | |
# 2. Precaution Recommendation Agent | |
precaution_agent = Agent( | |
role="Precaution Recommendation Agent", | |
goal="Provide three precautionary steps based on the summary of the top news article.", | |
verbose=True, | |
memory=True, | |
backstory=("You are a Precaution Recommendation Agent responsible for analyzing the summary of a news article " | |
"and generating three precautionary steps to mitigate any potential risks."), | |
tools=[tool], | |
llm=llm, | |
allow_delegation=False | |
) | |
# 3. Comprehensive Report Generation Agent | |
report_generation_agent = Agent( | |
role="Comprehensive Report Generation Agent", | |
goal="Create a comprehensive report combining the news summary and precautionary steps, then send it via email.", | |
verbose=True, | |
memory=True, | |
backstory=("You are a Comprehensive Report Generation Agent responsible for compiling the summary from the News Research Agent " | |
"and the precautionary steps from the Precaution Recommendation Agent into a detailed report."), | |
tools=[tool], | |
llm=llm, | |
allow_delegation=False | |
) |