Battle2733/First_agent_template
0
1from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool2import datetime3import requests4import pytz5import yaml6from tools.final_answer import FinalAnswerTool7 8from Gradio_UI import GradioUI9 10# Below is an example of a tool that does nothing. Amaze us with your creativity !11@tool12def my_custom_tool(arg1:str, arg2:int)-> str: #it's import to specify the return type13 #Keep this format for the description / args / args description but feel free to modify the tool14 """A tool that does nothing yet 15 Args:16 arg1: the first argument17 arg2: the second argument18 """19 return "What magic will you build ?"20 21@tool22def get_current_time_in_timezone(timezone: str) -> str:23 """A tool that fetches the current local time in a specified timezone.24 Args:25 timezone: A string representing a valid timezone (e.g., 'America/New_York').26 """27 try:28 # Create timezone object29 tz = pytz.timezone(timezone)30 # Get current time in that timezone31 local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")32 return f"The current local time in {timezone} is: {local_time}"33 except Exception as e:34 return f"Error fetching time for timezone '{timezone}': {str(e)}"35 36@tool37def summarize_text(text: str, max_bullets: int = 5) -> str:38 """Summarize the given text into concise bullet points.39 Args:40 text: The text to summarize.41 max_bullets: Maximum number of bullet points to return.42 """43 # Simple heuristic summary (no extra model calls):44 # grabs the first N sentences / lines with trimming.45 cleaned = " ".join(text.strip().split())46 if not cleaned:47 return "No text provided."48 49 # naive sentence split50 sentences = [s.strip() for s in cleaned.replace("?", ".").replace("!", ".").split(".") if s.strip()]51 bullets = sentences[: max(1, int(max_bullets))]52 return "\n".join([f"- {b}." for b in bullets])53 54search_tool = DuckDuckGoSearchTool()55 56 57 58 59final_answer = FinalAnswerTool()60 61# 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:62# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud' 63 64model = HfApiModel(65max_tokens=2096,66temperature=0.5,67model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded68custom_role_conversions=None,69)70 71 72# Import tool from Hub73image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)74 75with open("prompts.yaml", 'r') as stream:76 prompt_templates = yaml.safe_load(stream)77 78agent = CodeAgent(79 model=model,80 tools=[81 final_answer,82 search_tool,83 summarize_text,84 get_current_time_in_timezone], ## add your tools here (don't remove final answer)85 max_steps=6,86 verbosity_level=1,87 grammar=None,88 planning_interval=None,89 name=None,90 description=None,91 prompt_templates=prompt_templates92)93 94 95GradioUI(agent).launch()