from smolagents import Tool from typing import Any, Optional class SimpleTool(Tool): name = "get_coordinates" description = "Retrieves the geographical coordinates (latitude and longitude) of a city." inputs = {"city":{"type":"string","description":"The name of the city to retrieve coordinates for."}} output_type = "array" def forward(self, city: str) -> tuple[float, float]: """ Retrieves the geographical coordinates (latitude and longitude) of a city. Args: city (str): The name of the city to retrieve coordinates for. Returns: tuple[float, float]: The latitude and longitude of the city, or None if the coordinates could not be retrieved. """ import requests API_KEY = "d8376952ee1e3b3e591cec518a7d41cb" api_url = f"http://api.openweathermap.org/geo/1.0/direct?q={city}&limit=1&appid={API_KEY}" try: response = requests.get(api_url) response.raise_for_status() data = response.json() if data: return data[0]["lat"], data[0]["lon"] else: return None except (requests.RequestException, ValueError, KeyError) as e: print(f"Error retrieving coordinates: {e}") return None