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()