|
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'], |
|
'CRNOMEREC': ['2', '6', '11', '31'], |
|
'SAVISCE': ['2', '3', '33'], |
|
'LJUBLJANICA': ['3', '9', '12', '34'], |
|
'SAVSKI MOST': ['4', '7', '31'], |
|
'DUBEC': ['4', '11', '34'], |
|
'PRECKO': ['5', '17', '32'], |
|
'PARK MAKSIMIR': ['5'], |
|
'SOPOT': ['6'], |
|
'DUBRAVA': ['7', '12'], |
|
'MIHALJEVAC': ['8', '14', '15', '33'], |
|
'ZAPRUDE': ['8', '14'], |
|
'ZITNJAK': ['13'], |
|
'KVATERNIKOV TRG': ['13'], |
|
'GRACANSKO 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())}" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|