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) | |
| 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 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], ## 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() |