eaglelandsonce's picture
Update app.py
dd37441 verified
raw
history blame
No virus
6.48 kB
import os
import gradio as gr
from textwrap import dedent
import google.generativeai as genai
# Tool import
from crewai.tools.gemini_tools import GeminiSearchTools
from langchain.tools.yahoo_finance_news import YahooFinanceNewsTool
from crewai.tools.browser_tools import BrowserTools
from crewai.tools.sec_tools import SECTools
from crewai.tools.mixtral_tools import MixtralSearchTools
from crewai.tools.zephyr_tools import ZephyrSearchTools
# Google Langchain
from langchain_google_genai import GoogleGenerativeAI
#Crew imports
from crewai import Agent, Task, Crew, Process
# Retrieve API Key from Environment Variable
GOOGLE_AI_STUDIO = os.environ.get('GOOGLE_API_KEY')
# Ensure the API key is available
if not GOOGLE_AI_STUDIO:
raise ValueError("API key not found. Please set the GOOGLE_AI_STUDIO2 environment variable.")
# Set gemini_llm
gemini_llm = GoogleGenerativeAI(model="gemini-pro", google_api_key=GOOGLE_AI_STUDIO)
# Base Example with Gemini Search
TITLE1 = """<h1 align="center">SmartMix - Your Safe Place</h1>"""
TITLE2 = """<h3 align="left">"This is an agent simulated group therapy session providing a safe, judgment-free environment, allowing for open exploration of sensitive topics. Please input the topic you would like to discuss. Active phrases produce realistic interactions."</h3>"""
TITLE3 = """<h3 align="center">"To see active group discussion click on logs during run."</h3>"""
def crewai_process(research_topic):
# Define your agents with roles and goals
Emily = Agent(
role='Mental Patient',
goal='To learn how to manage her anxiety in social situations.',
backstory="""Emily is a 28-year-old graphic designer. She has always struggled with social anxiety,
making it difficult for her to participate in group settings. She joined the therapy group to improve
her social skills and manage her anxiety.""",
verbose=True,
allow_delegation=False,
llm = gemini_llm,
tools=[
MixtralSearchTools.mixtral_normal,
GeminiSearchTools.gemini_search
]
)
David = Agent(
role='Mental Patient',
goal='To gain insights into managing his bipolar disorder.',
backstory="""David, a 35-year-old musician, has been living with bipolar disorder for over a decade.
His condition has impacted his career and personal life. He seeks to understand his emotions better
and find stability through the group sessions.""",
verbose=True,
allow_delegation=False,
llm = gemini_llm,
tools=[
ZephyrSearchTools.zephyr_crazy,
GeminiSearchTools.gemini_search
]
)
Sarah = Agent(
role='Mental Patient',
goal='To find strategies to cope with her depression.',
backstory="""Sarah, 42, is a former teacher who has been battling depression for several years.
The illness has led her to leave her job. She hopes to find new coping mechanisms and rediscover
her passion for teaching.""",
verbose=True,
allow_delegation=False,
llm = gemini_llm,
tools=[
MixtralSearchTools.mixtral_crazy,
GeminiSearchTools.gemini_search
]
)
Michael = Agent(
role='Mental Patient',
goal='To overcome his PTSD and return to a normal life.',
backstory="""Michael is a 30-year-old ex-soldier. He developed PTSD following his service.
Struggling with flashbacks and anxiety, he joined the group to seek support and ways to
return to civilian life smoothly.""",
verbose=True,
allow_delegation=False,
llm = gemini_llm,
tools=[
ZephyrSearchTools.zephyr_normal,
GeminiSearchTools.gemini_search
]
)
Lisa = Agent(
role='Therapist',
goal='To facilitate the group progress and assist each member in their personal goals.',
backstory=""" Dr. Thompson is a seasoned psychologist specializing in group therapy.
With over 15 years of experience, she is skilled at creating a safe space for her patients
to explore and address their mental health challenges.""",
verbose=True,
allow_delegation=False,
llm = gemini_llm,
tools=[
MixtralSearchTools.mixtral_normal,
ZephyrSearchTools.zephyr_normal,
GeminiSearchTools.gemini_search
]
)
# Create tasks for your agents
task1 = Task(
description=f"""Discuss the {research_topic} from your backstory perspective. Use Mixtral
""",
agent=Emily
)
task2 = Task(
description=f"""Discuss the {research_topic} from your backstory perspective. Use Zephyr
""",
agent=David
)
task3 = Task(
description=f"""Discuss the {research_topic} from your backstory perspective. Use Mixtral
""",
agent=Sarah
)
task4 = Task(
description=f"""Discuss the {research_topic} from your backstory perspective. Use Zephyr
""",
agent=Michael
)
task5 = Task(
description=f"""Discuss the {research_topic} from your backstory perspective.
Use Gemini, Mixtral or Zephyr what ever is appropriate.
""",
agent=Lisa
)
# Instantiate your crew with a sequential process
crew = Crew(
agents=[Emily, David, Sarah, Michael, Lisa ],
tasks=[task1, task2, task3, task4, task5],
verbose=2,
process=Process.sequential
)
# Get your crew to work!
result = crew.kickoff()
return result
# Create a Gradio interface
with gr.Blocks() as iface:
gr.HTML(TITLE1)
gr.HTML(TITLE2)
gr.HTML(TITLE3)
with gr.Row():
with gr.Column(scale=1):
gr.Image(value="crewai/resources/smartmix.jpg")
with gr.Column(scale=5):
run_button_crewai = gr.Button(value="Run", variant="primary", scale=1)
run_button_crewai.click(
fn=crewai_process,
inputs=gr.Textbox(lines=2,label="Topic Input", placeholder="Enter Discussion Topic..."),
outputs=gr.Textbox(label="Group Synopsis"),
)
# Launch the interface
iface.launch(debug=True)