|
from smolagents import Tool |
|
from typing import Optional |
|
|
|
class SimpleTool(Tool): |
|
name = "get_travel_duration" |
|
description = "Gets the travel time between two places." |
|
inputs = {"start_location":{"type":"string","description":"the place from which you start your ride"},"destination_location":{"type":"string","description":"the place of arrival"},"transportation_mode":{"type":"string","nullable":True,"description":"The transportation mode, in 'driving', 'walking', 'bicycling', or 'transit'. Defaults to 'driving'."}} |
|
output_type = "string" |
|
|
|
def forward(self, start_location: str, destination_location: str, transportation_mode: Optional[str] = None) -> str: |
|
"""Gets the travel time between two places. |
|
|
|
Args: |
|
start_location: the place from which you start your ride |
|
destination_location: the place of arrival |
|
transportation_mode: The transportation mode, in 'driving', 'walking', 'bicycling', or 'transit'. Defaults to 'driving'. |
|
""" |
|
import os |
|
import googlemaps |
|
from datetime import datetime |
|
|
|
gmaps = googlemaps.Client(os.getenv("GMAPS_API_KEY")) |
|
|
|
if transportation_mode is None: |
|
transportation_mode = "driving" |
|
try: |
|
directions_result = gmaps.directions( |
|
start_location, |
|
destination_location, |
|
mode=transportation_mode, |
|
departure_time=datetime(2025, 6, 6, 11, 0), |
|
) |
|
if len(directions_result) == 0: |
|
return "No way found between these places with the required transportation mode." |
|
return directions_result[0]["legs"][0]["duration"]["text"] |
|
except Exception as e: |
|
print(e) |
|
return e |