smolagents-weather-codeagent / tools /get_coordinates.py
VLAIResearchLab's picture
Upload agent
6b5d8c4 verified
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