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 @tool def search_hf_models(query: str, task: str = None) -> str: """Searches Hugging Face models by query/task. Args: query: Search terms (e.g., 'text classification') task: Filter by task (e.g., 'text-classification') Returns formatted model information with URLs """ try: params = {"search": query, "filter": task} if task else {"search": query} response = requests.get( "https://huggingface.co/api/models", params=params, headers={"Accept": "application/json"} ) response.raise_for_status() results = [] for model in response.json()[:5]: # Top 5 results model_info = f""" 🧠 **{model['modelId']}** - Author: {model['author']} - Downloads: {model['downloads']:,} - Tasks: {', '.join(model.get('tags', []))} - URL: https://huggingface.co/{model['modelId']} """ results.append(model_info) return "\n\n".join(results) if results else "No models found" except Exception as e: return f"Search error: {str(e)}" @tool def get_current_time_in_timezone(timezone: str) -> str: """Fetches current local time in specified timezone. Args: timezone: Valid timezone (e.g., 'America/New_York') """ try: tz = pytz.timezone(timezone) local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S") return f"Current time in {timezone}: {local_time}" except Exception as e: return f"Timezone error: {str(e)}" final_answer = FinalAnswerTool() # Fallback endpoint if model is overloaded: # 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', custom_role_conversions=None, ) 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, search_hf_models, get_current_time_in_timezone, image_generation_tool ], max_steps=6, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None, prompt_templates=prompt_templates ) GradioUI(agent).launch()