|
from typing import Any, Optional, List |
|
from smolagents import tool |
|
from smolagents.tools import Tool |
|
|
|
import duckduckgo_search |
|
|
|
@tool |
|
def create_link_to_public_transport_map(routes: List[str]) -> str: |
|
"""A tool that create a link for a map with public transport routes. It can be used to display a route on a map. |
|
Args: |
|
routes: list of routes to display on the map |
|
""" |
|
try: |
|
return f"https://ntrd.top/?routes="+"&routes=".join(routes) |
|
except Exception as e: |
|
return f"Error fetching link to maps for route '{routes}'" |
|
|
|
|
|
@tool |
|
def terminus_to_routes(terminus: str) -> List[str]: |
|
""" |
|
A tool that fetches the route numbers for a given terminus but works only for trams not for buses. |
|
Example: terminus_to_routes('ZAPADNI KOLODVOR') -> [1]; terminus_to_routes('ZAPRUDE') -> [8, 14] |
|
Args: |
|
terminus: the terminus to search for |
|
""" |
|
terminus_to_route_map = { |
|
'ZAPADNI KOLODVOR': [1], |
|
'BORONGAJ': [1, 9, 17, 32], |
|
'ČRNOMEREC': [2, 6, 11, 31], |
|
'SAVIŠĆE': [2, 3, 33], |
|
'LJUBLJANICA': [3, 9, 12, 34], |
|
'SAVSKI MOST': [4, 7, 31], |
|
'DUBEC': [4, 11, 34], |
|
'PREČKO': [5, 17, 32], |
|
'PARK MAKSIMIR': [5], |
|
'SOPOT': [6], |
|
'DUBRAVA': [7, 12], |
|
'MIHALJEVAC': [8, 14, 15, 33], |
|
'ZAPRUĐE': [8, 14], |
|
'ŽITNJAK': [13], |
|
'KVATERNIKOV TRG': [13], |
|
'GRAČANSKO DOLJE': [15] |
|
} |
|
routes = terminus_to_route_map.get(terminus.upper(), None) |
|
if routes: |
|
return routes |
|
else: |
|
return f"No routes found for terminus '{terminus}'. Available terminus: {list(terminus_to_route_map.keys())}" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|