anssio's picture
Update app.py
de86dce 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 my_custom_tool(arg1:str, arg2:int)-> str: #it's import to specify the return type
#Keep this format for the description / args / args description but feel free to modify the tool
"""A tool that does nothing yet
Args:
arg1: the first argument
arg2: the second argument
"""
return "What magic will you build ?"
@tool
def get_current_time_in_timezone(timezone_or_location: str) -> str:
"""Get the current local time for a timezone identifier or a common city name.
Args:
timezone_or_location: A tz database name (e.g. 'Europe/Helsinki') or a common city name
(e.g. 'Helsinki', 'New York', 'London', 'Tokyo'). The function recognizes several
common city names and maps them to the corresponding tz database name.
Returns:
A string describing the current local time in the requested timezone, or an error message
explaining the problem and how to provide a valid timezone.
"""
# Added time zones -AO
city_map = {
"helsinki": "Europe/Helsinki",
"oslo": "Europe/Oslo",
"stockholm": "Europe/Stockholm",
"london": "Europe/London",
"paris": "Europe/Paris",
"berlin": "Europe/Berlin",
"madrid": "Europe/Madrid",
"rome": "Europe/Rome",
"new york": "America/New_York",
"nyc": "America/New_York",
"los angeles": "America/Los_Angeles",
"san francisco": "America/Los_Angeles",
"chicago": "America/Chicago",
"toronto": "America/Toronto",
"sao paulo": "America/Sao_Paulo",
"buenos aires": "America/Argentina/Buenos_Aires",
"mexico city": "America/Mexico_City",
"tokyo": "Asia/Tokyo",
"seoul": "Asia/Seoul",
"beijing": "Asia/Shanghai",
"shanghai": "Asia/Shanghai",
"hong kong": "Asia/Hong_Kong",
"singapore": "Asia/Singapore",
"sydney": "Australia/Sydney",
"melbourne": "Australia/Melbourne",
}
query = (timezone_or_location or "").strip()
if not query:
return "Please provide a timezone or city name (e.g. 'Europe/Helsinki' or 'Helsinki')."
tz_name = query
lower = query.lower()
if lower in city_map:
tz_name = city_map[lower]
try:
tz = pytz.timezone(tz_name)
except Exception:
return (
f"Unrecognized timezone or city: '{timezone_or_location}'. "
"Provide a valid tz database name (e.g. 'Europe/Helsinki') or one of the supported city names: "
+ ", ".join(sorted(set(city_map.keys())))
)
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {tz_name} is: {local_time}"
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], ## 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()