amitbehura's picture
Update app.py
e8a4403 verified
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# Below is an example of a tool that does nothing. Amaze us with your creativity !
@tool
def get_two_liner_roast(target: str) -> str:
"""Generates a savage two-liner roast reply based on the target string.
Args:
target: A string representing the target or context to roast.
"""
try:
roasts = [
f"{target}? That’s not a name, that’s a warning label.",
f"{target} walks into a room and the Wi-Fi drops out of respect.",
f"If {target} had a dollar for every smart thing they've said, they'd still be broke.",
f"{target} thinks a thought and Google files a restraining order.",
f"{target} makes elevators take the stairs to avoid awkward conversation.",
f"{target} is the human version of a software update at 2 AM—unwanted and confusing.",
f"Calling {target} sharp is like calling a spoon a knife—technically wrong and physically impossible.",
]
# Simple randomness based on length hash
roast = roasts[hash(target) % len(roasts)]
return roast
except Exception as e:
return f"Error generating roast for '{target}': {str(e)}"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""A tool that fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
try:
# Create timezone object
tz = pytz.timezone(timezone)
# Get current time in that timezone
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {timezone} is: {local_time}"
except Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
@tool
def funny_hi_response(message: str) -> str:
"""
Returns a funny or sarcastic response to someone saying 'Hi' or another casual greeting.
Args:
message: A greeting message from the user, like 'Hi', 'Hello', or 'Hey'.
Returns:
A humorous or sarcastic one-liner response.
"""
import random
responses = [
"Oh hey, look who remembered how to type!",
"Hi? That’s it? After everything we’ve been through?",
"Welcome back, I almost started enjoying the silence.",
"Hi there, social butterfly. Slow day?",
"If I had a nickel for every 'Hi' I got… I’d still be broke.",
"Wow, a 'Hi'? You sure you didn’t mean to send that to your other assistant?",
"Hello, mortal. What wisdom dost thou seek today?",
"Hi. I was hoping for pizza, but I guess you’ll do.",
"You say 'Hi', I hear 'I'm bored, entertain me.'",
"A wild user appeared! What shall we do now?"
]
return random.choice(responses)
@tool
def answer_with_duckduckgo(query: str) -> str:
"""Uses DuckDuckGo to search and return an answer to any user question.
Args:
query: A natural language question from the user.
Returns:
A short answer or summary from DuckDuckGo.
"""
try:
duck_tool = DuckDuckGoSearchTool()
result = duck_tool.run(query)
return result or "No relevant results found, but hey, at least I tried."
except Exception as e:
return f"Oops! I ran into an issue while searching: {str(e)}"
final_answer = FinalAnswerTool()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
custom_role_conversions=None,
)
# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer,get_two_liner_roast,get_current_time_in_timezone,funny_hi_response,answer_with_duckduckgo], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch()