Spaces:
Sleeping
Sleeping
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! | |
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 ?" | |
def get_country_capital(country_name:str)-> str: | |
"""A tool that fetches the country's capital | |
Args: | |
country_name: A string representing the country name | |
""" | |
countries = { | |
"afghanistan": "Kabul", | |
"albania": "Tirana", | |
"algeria": "Algiers", | |
"andorra": "Andorra la Vella", | |
"angola": "Luanda", | |
"antigua and barbuda": "Saint John’s", | |
"argentina": "Buenos Aires", | |
"armenia": "Yerevan", | |
"australia": "Canberra", | |
"austria": "Vienna", | |
"azerbaijan": "Baku", | |
"the bahamas": "Nassau", | |
"bahrain": "Manama", | |
"bangladesh": "Dhaka", | |
"barbados": "Bridgetown", | |
"belarus": "Minsk", | |
"belgium": "Brussels", | |
"belize": "Belmopan", | |
"benin": "Porto-Novo", | |
"bhutan": "Thimphu", | |
"bolivia": "La Paz, Sucre", | |
"bosnia and herzegovina": "Sarajevo", | |
"botswana": "Gaborone", | |
"brazil": "Brasilia", | |
"brunei": "Bandar Seri Begawan", | |
"bulgaria": "Sofia", | |
"burkina faso": "Ouagadougou", | |
"burundi": "Bujumbura", | |
"cambodia": "Phnom Penh", | |
"cameroon": "Yaounde", | |
"canada": "Ottawa", | |
"cape verde": "Praia", | |
"central african republic": "Bangui", | |
"chad": "N’Djamena", | |
"chile": "Santiago", | |
"china": "Beijing", | |
"colombia": "Bogota", | |
"comoros": "Moroni", | |
"republic of the congo": "Brazzaville", | |
"democratic republic of the congo": "Kinshasa", | |
"costa rica": "San Jose", | |
"cote d’ivoire": "Yamoussoukro", | |
"croatia": "Zagreb", | |
"cuba": "Havana", | |
"cyprus": "Nicosia", | |
"czech republic": "Prague", | |
"denmark": "Copenhagen", | |
"djibouti": "Djibouti", | |
"dominica": "Roseau", | |
"dominican republic": "Santo Domingo", | |
"east timor": "Dili", | |
"ecuador": "Quito", | |
"egypt": "Cairo", | |
"el salvador": "San Salvador", | |
"equatorial guinea": "Malabo", | |
"eritrea": "Asmara", | |
"estonia": "Tallinn", | |
"ethiopia": "Addis Ababa", | |
"fiji": "Suva", | |
"finland": "Helsinki", | |
"france": "Paris", | |
"gabon": "Libreville", | |
"the gambia": "Banjul", | |
"georgia": "Tbilisi", | |
"germany": "Berlin", | |
"ghana": "Accra", | |
"greece": "Athens", | |
"grenada": "Saint George’s", | |
"guatemala": "Guatemala City", | |
"guinea": "Conakry", | |
"guinea-bissau": "Bissau", | |
"guyana": "Georgetown", | |
"haiti": "Port-au-Prince", | |
"honduras": "Tegucigalpa", | |
"hungary": "Budapest", | |
"iceland": "Reykjavik", | |
"india": "New Delhi", | |
"indonesia": "Jakarta", | |
"iran": "Tehran", | |
"iraq": "Baghdad", | |
"ireland": "Dublin", | |
"israel": "Jerusalem", | |
"italy": "Rome", | |
"jamaica": "Kingston", | |
"japan": "Tokyo", | |
"jordan": "Amman", | |
"kazakhstan": "Astana", | |
"kenya": "Nairobi", | |
"kiribati": "Tarawa Atoll", | |
"north korea": "Pyongyang", | |
"south korea": "Seoul", | |
"kosovo": "Pristina", | |
"kuwait": "Kuwait City", | |
"kyrgyzstan": "Bishkek", | |
"laos": "Vientiane", | |
"latvia": "Riga", | |
"lebanon": "Beirut", | |
"lesotho": "Maseru", | |
"liberia": "Monrovia", | |
"libya": "Tripoli", | |
"liechtenstein": "Vaduz", | |
"lithuania": "Vilnius", | |
"luxembourg": "Luxembourg", | |
"macedonia": "Skopje", | |
"madagascar": "Antananarivo", | |
"malawi": "Lilongwe", | |
"malaysia": "Kuala Lumpur", | |
"maldives": "Male", | |
"mali": "Bamako", | |
"malta": "Valletta", | |
"marshall islands": "Majuro", | |
"mauritania": "Nouakchott", | |
"mauritius": "Port Louis", | |
"mexico": "Mexico City", | |
"federated states of micronesia": "Palikir", | |
"moldova": "Chisinau", | |
"monaco": "Monaco", | |
"mongolia": "Ulaanbaatar", | |
"montenegro": "Podgorica", | |
"morocco": "Rabat", | |
"mozambique": "Maputo", | |
"myanmar": "Naypyidaw", | |
"namibia": "Windhoek", | |
"nauru": "Yaren District", | |
"nepal": "Kathmandu", | |
"netherlands": "Amsterdam", | |
"new zealand": "Wellington", | |
"nicaragua": "Managua", | |
"niger": "Niamey", | |
"nigeria": "Abuja", | |
"norway": "Oslo", | |
"oman": "Muscat", | |
"pakistan": "Islamabad", | |
"palau": "Melekeok", | |
"panama": "Panama City", | |
"papua new guinea": "Port Moresby", | |
"paraguay": "Asuncion", | |
"peru": "Lima", | |
"philippines": "Manila", | |
"poland": "Warsaw", | |
"portugal": "Lisbon", | |
"qatar": "Doha", | |
"romania": "Bucharest", | |
"russia": "Moscow", | |
"rwanda": "Kigali", | |
"saint kitts and nevis": "Basseterre", | |
"saint lucia": "Castries", | |
"saint vincent and the grenadines": "Kingstown", | |
"samoa": "Apia", | |
"san marino": "San Marino", | |
"sao tome and principe": "Sao Tome", | |
"saudi arabia": "Riyadh", | |
"senegal": "Dakar", | |
"serbia": "Belgrade", | |
"seychelles": "Victoria", | |
"sierra leone": "Freetown", | |
"singapore": "Singapore", | |
"slovakia": "Bratislava", | |
"slovenia": "Ljubljana", | |
"solomon islands": "Honiara", | |
"somalia": "Mogadishu", | |
"south africa": "Pretoria, Cape Town, Bloemfontein", | |
"south sudan": "Juba", | |
"spain": "Madrid", | |
"sri lanka": "Colombo, Sri Jayewardenepura Kotte", | |
"sudan": "Khartoum", | |
"suriname": "Paramaribo", | |
"swaziland": "Mbabane", | |
"sweden": "Stockholm", | |
"switzerland": "Bern", | |
"syria": "Damascus", | |
"taiwan": "Taipei", | |
"tajikistan": "Dushanbe", | |
"tanzania": "Dodoma", | |
"thailand": "Bangkok", | |
"togo": "Lome", | |
"tonga": "Nuku’alofa", | |
"trinidad and tobago": "Port-of-Spain", | |
"tunisia": "Tunis", | |
"turkey": "Ankara", | |
"turkmenistan": "Ashgabat", | |
"tuvalu": "Funafuti", | |
"uganda": "Kampala", | |
"ukraine": "Kyiv", | |
"united arab emirates": "Abu Dhabi", | |
"united kingdom": "London", | |
"united states of america": "Washington D.C.", | |
"uruguay": "Montevideo", | |
"uzbekistan": "Tashkent", | |
"vanuatu": "Port-Vila", | |
"vatican city": "Vatican City", | |
"venezuela": "Caracas", | |
"vietnam": "Hanoi", | |
"yemen": "Sanaa", | |
"zambia": "Lusaka", | |
"zimbabwe": "Harare", | |
} | |
capital = countries.get(country_name.lower()) | |
if not capital: | |
return f"Cannot find the capital of {country_name} Try to enter the name correct" | |
return f"The Capital of {country_name} is {capital}" | |
def search(text: str) -> str: | |
"""A tool that uses DuckDuckGoSearchTool to search. | |
Args: | |
text: | |
""" | |
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)}" | |
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'). | |
""" | |
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)}" | |
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, DuckDuckGoSearchTool(), get_country_capital], ## 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() |