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() |