rainwaters11's picture
Update app.py
92c9ccd verified
raw
history blame
2.84 kB
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
import random # Import for random.choice
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# Example of a tool that does nothing (placeholder for creativity)
@tool
def my_custom_tool(arg1: str, arg2: int) -> str: # Fix typo in function name
"""A tool that does nothing yet.
Args:
arg1: The first argument.
arg2: The second argument.
Returns:
A string indicating this tool is currently a placeholder.
"""
return "What magic will you build?"
# Tool to fetch the current time in a specific timezone
@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').
Returns:
A string with the current local time in the given timezone or an error message.
"""
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)}"
# Creative tool to share a random fun fact
@tool
def get_fun_fact() -> str:
"""A tool that shares a random fun fact.
Returns:
A string containing a fun fact.
"""
fun_facts = [
"Honey never spoils. Archaeologists have found pots of honey in ancient Egyptian tombs that are over 3,000 years old!",
"Octopuses have three hearts!",
"Bananas are berries, but strawberries aren't.",
"Your heartbeat changes with the music you listen to."
]
return random.choice(fun_facts)
# Final answer and agent setup
final_answer = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# Load image generation tool
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)
# Create the agent and add tools
agent = CodeAgent(
model=model,
tools=[
final_answer,
get_current_time_in_timezone,
get_fun_fact, # Add fun fact tool
image_generation_tool, # Add image generation tool
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates,
)
# Launch Gradio UI
GradioUI(agent).launch()