Spaces:
No application file
No application file
import os | |
import gradio as gr | |
from crewai import Agent, Task, Crew, Process | |
from crewai_tools import SerperDevTool | |
from langchain_groq import ChatGroq | |
# Set up environment variables | |
os.environ["GROQ_API_KEY"] = "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" | |
os.environ["SERPER_API_KEY"] = "206256c6acfbcd5a46195f3312aaa7e8ed38ae5f" | |
# Initialize Groq LLM | |
groq_llm = ChatGroq( | |
model_name="mixtral-8x7b-32768", | |
temperature=0.7, | |
max_tokens=32768 | |
) | |
# Initialize search tool | |
search_tool = SerperDevTool() | |
# Define agents | |
researcher = Agent( | |
role='Senior Research Analyst', | |
goal='Uncover cutting-edge developments in AI and data science', | |
backstory="""You work at a leading tech 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=groq_llm, | |
tools=[search_tool] | |
) | |
writer = Agent( | |
role='Tech Content Strategist', | |
goal='Craft compelling content on tech advancements', | |
backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles. | |
You transform complex concepts into compelling narratives.""", | |
verbose=True, | |
allow_delegation=True, | |
llm=groq_llm | |
) | |
# Create tasks | |
def create_tasks(topic): | |
task1 = Task( | |
description=f"""Conduct a brief analysis of the latest advancements in {topic}. | |
Identify key trends and potential impacts.""", | |
expected_output="Concise analysis in 2-3 sentences", | |
agent=researcher | |
) | |
task2 = Task( | |
description=f"""Using the insights about {topic}, create a short, engaging response | |
that highlights the most significant points. Keep it brief and conversational.""", | |
expected_output="Conversational response of 2-3 sentences", | |
agent=writer | |
) | |
return [task1, task2] | |
# Function to run the crew | |
def run_crew(topic): | |
try: | |
tasks = create_tasks(topic) | |
crew = Crew( | |
agents=[researcher, writer], | |
tasks=tasks, | |
verbose=2, | |
process=Process.sequential | |
) | |
result = crew.kickoff() | |
return result | |
except Exception as e: | |
return f"I apologize, but I encountered an issue while processing your request. Please try again or rephrase your question. Error details: {str(e)}" | |
# Chatbot function | |
def chatbot(message): | |
if not message.strip(): | |
return "Please enter a valid question or topic." | |
response = run_crew(message) | |
return response | |
# Create Gradio interface | |
iface = gr.Interface( | |
fn=chatbot, | |
inputs=gr.Textbox(lines=2, placeholder="Ask about any AI or technology topic..."), | |
outputs=gr.Textbox(), | |
title="AI Research Assistant Chatbot", | |
description="Ask about any AI or technology topic, and I'll provide a brief, informative response.", | |
examples=[ | |
["What are the latest advancements in natural language processing?"], | |
["Tell me about recent breakthroughs in quantum computing."], | |
["What are the current trends in computer vision?"] | |
], | |
allow_flagging="never" | |
) | |
# Launch the interface | |
iface.launch(share=True) |