Spaces:
Sleeping
Sleeping
| 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 | |
| # Google Langchain | |
| #from langchain_google_genai import ChatGoogleGenerativeAI | |
| from langchain_google_genai import GoogleGenerativeAI | |
| from crewai import Agent, Task, Crew, Process | |
| # Retrieve API Key from Environment Variable | |
| GOOGLE_AI_STUDIO = os.environ.get('GOOGLE_API_KEY') | |
| # os.environ["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.") | |
| gemini_llm = GoogleGenerativeAI(model="models/text-bison-001", google_api_key=GOOGLE_AI_STUDIO) | |
| # os.environ["OPENAI_API_KEY"] = "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" | |
| # Crew Bot: https://chat.openai.com/g/g-qqTuUWsBY-crewai-assistant | |
| ''' | |
| tools=[ | |
| GeminiSearchTools.gemini_search, | |
| BrowserTools.scrape_and_summarize_website | |
| ] | |
| ''' | |
| #llm = ChatGoogleGenerativeAI(model=model), | |
| # Base Example with Gemini Search | |
| def crewai_process(research_topic): | |
| # Define your agents with roles and goals | |
| researcher = Agent( | |
| role='Senior Research Analyst', | |
| goal=f'Uncover cutting-edge developments in {research_topic}', | |
| backstory="""You are a Senior Research Analyst at a leading think tank. | |
| Your expertise lies in identifying emerging trends. You have a knack for dissecting complex data and presenting | |
| actionable insights.""", | |
| verbose=True, | |
| allow_delegation=False, | |
| llm = gemini_llm, | |
| tools=[ | |
| GeminiSearchTools.gemini_search | |
| ] | |
| ) | |
| writer = Agent( | |
| role='Tech Content Strategist', | |
| goal='Craft compelling content on tech advancements', | |
| backstory="""You are a renowned Tech Content Strategist, known for your insightful | |
| and engaging articles on technology and innovation. With a deep understanding of | |
| the tech industry, you transform complex concepts into compelling narratives.""", | |
| verbose=True, | |
| allow_delegation=True, | |
| llm = gemini_llm | |
| # Add tools and other optional parameters as needed | |
| ) | |
| # Create tasks for your agents | |
| task1 = Task( | |
| description=f"""Conduct a comprehensive analysis of the latest advancements in {research_topic}. | |
| Compile your findings in a detailed report. Your final answer MUST be a full analysis report""", | |
| agent=researcher | |
| ) | |
| task2 = Task( | |
| description="""Using the insights from the researcher's report, develop an engaging blog | |
| post that highlights the most significant advancements. | |
| Your post should be informative yet accessible, catering to a tech-savvy audience. | |
| Aim for a narrative that captures the essence of these breakthroughs and their | |
| implications for the future. Your final answer MUST be the full blog post of at least 3 paragraphs.""", | |
| agent=writer | |
| ) | |
| # Instantiate your crew with a sequential process | |
| crew = Crew( | |
| agents=[researcher, writer], | |
| tasks=[task1, task2], | |
| verbose=2, | |
| process=Process.sequential | |
| ) | |
| # Get your crew to work! | |
| result = crew.kickoff() | |
| return result | |
| # Create a Gradio interface | |
| iface = gr.Interface( | |
| fn=crewai_process, | |
| inputs=gr.Textbox(lines=2, placeholder="Enter Research Topic Here..."), | |
| outputs="text", | |
| title="CrewAI Research and Writing Assistant", | |
| description="Input a research topic to get a comprehensive analysis and a blog post draft." | |
| ) | |
| # Launch the interface | |
| iface.launch() | |
| # Stock Evaluation | |
| ''' | |
| from stock_analysis_agents import StockAnalysisAgents | |
| from stock_analysis_tasks import StockAnalysisTasks | |
| #from dotenv import load_dotenv | |
| #load_dotenv() | |
| def run_financial_analysis(company_name): | |
| # Assuming StockAnalysisAgents and StockAnalysisTasks are defined elsewhere | |
| agents = StockAnalysisAgents() | |
| tasks = StockAnalysisTasks() | |
| research_analyst_agent = agents.research_analyst() | |
| financial_analyst_agent = agents.financial_analyst() | |
| investment_advisor_agent = agents.investment_advisor() | |
| research_task = tasks.research(research_analyst_agent, company_name) | |
| financial_task = tasks.financial_analysis(financial_analyst_agent) | |
| filings_task = tasks.filings_analysis(financial_analyst_agent) | |
| recommend_task = tasks.recommend(investment_advisor_agent) | |
| crew = Crew( | |
| agents=[ | |
| research_analyst_agent, | |
| financial_analyst_agent, | |
| investment_advisor_agent | |
| ], | |
| tasks=[ | |
| research_task, | |
| financial_task, | |
| filings_task, | |
| recommend_task | |
| ], | |
| verbose=True | |
| ) | |
| result = crew.kickoff() | |
| return result | |
| iface = gr.Interface( | |
| fn=run_financial_analysis, | |
| inputs=gr.Textbox(lines=2, placeholder="Enter Company Name Here"), | |
| outputs="text", | |
| title="CrewAI Financial Analysis", | |
| description="Enter a company name to get financial analysis." | |
| ) | |
| #if __name__ == "__main__": | |
| iface.launch() | |
| ''' | |
| # Therapy Group | |
| ''' | |
| def run_therapy_session(group_size, topic): | |
| participant_names = ['Alice', 'Bob', 'Charlie', 'Diana', 'Ethan', 'Fiona', 'George', 'Hannah', 'Ivan'] | |
| if group_size > len(participant_names) + 1: # +1 for the therapist | |
| return "Group size exceeds the number of available participant names." | |
| # Create the therapist agent | |
| dr_smith = Agent( | |
| role='Therapist', | |
| goal='Facilitate a supportive group discussion', | |
| backstory='An experienced therapist specializing in group dynamics.', | |
| verbose=True, | |
| allow_delegation=False | |
| ) | |
| # Create participant agents | |
| participants = [Agent( | |
| role=f'Group Therapy Participant - {name}', | |
| goal='Participate in group therapy', | |
| backstory=f'{name} is interested in sharing and learning from the group.', | |
| verbose=True, | |
| allow_delegation=False) | |
| for name in participant_names[:group_size - 1]] | |
| participants.append(dr_smith) | |
| # Define tasks for each participant | |
| tasks = [Task(description=f'{participant.role.split(" - ")[-1]}, please share your thoughts on the topic: "{topic}".', agent=participant) | |
| for participant in participants] | |
| # Instantiate the crew with a sequential process | |
| therapy_crew = Crew( | |
| agents=participants, | |
| tasks=tasks, | |
| process=Process.sequential, | |
| verbose=True | |
| ) | |
| # Start the group therapy session | |
| result = therapy_crew.kickoff() | |
| # Simulating a conversation (placeholder, adjust based on CrewAI capabilities) | |
| conversation = "\n".join([f"{participant.role.split(' - ')[-1]}: [Participant's thoughts on '{topic}']" for participant in participants]) | |
| return result | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=run_therapy_session, | |
| inputs=[ | |
| gr.Slider(minimum=2, maximum=10, label="Group Size", value=4), | |
| gr.Textbox(lines=2, placeholder="Enter a topic or question for discussion", label="Discussion Topic") | |
| ], | |
| outputs="text" | |
| ) | |
| # Launch the interface | |
| iface.launch() | |
| ''' | |
| # Choosing topics | |
| ''' | |
| def run_crew(topic): | |
| # Define your agents | |
| researcher = Agent( | |
| role='Senior Research Analyst', | |
| goal='Uncover cutting-edge developments', | |
| backstory="""You are a Senior Research Analyst at a leading tech think tank...""", | |
| verbose=True, | |
| allow_delegation=False | |
| ) | |
| writer = Agent( | |
| role='Tech Content Strategist', | |
| goal='Craft compelling content', | |
| backstory="""You are a renowned Tech Content Strategist...""", | |
| verbose=True, | |
| allow_delegation=False | |
| ) | |
| # Assign tasks based on the selected topic | |
| if topic == "write short story": | |
| task_description = "Write a captivating short story about a journey through a futuristic city." | |
| elif topic == "write an article": | |
| task_description = "Compose an insightful article on the latest trends in technology." | |
| elif topic == "analyze stock": | |
| task_description = "Perform a detailed analysis of recent trends in the stock market." | |
| elif topic == "create a vacation": | |
| task_description = "Plan a perfect vacation itinerary for a family trip to Europe." | |
| task1 = Task( | |
| description=task_description, | |
| agent=researcher | |
| ) | |
| task2 = Task( | |
| description=f"Use the findings from the researcher's task to develop a comprehensive report on '{topic}'.", | |
| agent=writer | |
| ) | |
| # Instantiate your crew with a sequential process | |
| crew = Crew( | |
| agents=[researcher, writer], | |
| tasks=[task1, task2], | |
| verbose=2, | |
| process=Process.sequential | |
| ) | |
| # Get your crew to work! | |
| result = crew.kickoff() | |
| return result | |
| # Gradio Interface with Dropdown for Topic Selection | |
| iface = gr.Interface( | |
| fn=run_crew, | |
| inputs=gr.Dropdown(choices=["write short story", "write an article", "analyze stock", "create a vacation"], label="Select Topic"), | |
| outputs="text", | |
| title="AI Research and Writing Crew", | |
| description="Select a topic and click the button to run the crew of AI agents." | |
| ) | |
| iface.launch() | |
| ''' | |