File size: 3,072 Bytes
4ec2830
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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())}"


# class TerminusToRoutes(Tool):
#     name = "terminus_to_route"
#     description = "A tool that fetches the route numbers for a given terminus but works only for trams not for buses. Example: 'ZAPADNI KOLODVOR' -> [1]; 'ZAPRUDE' -> [8, 14]"
#     inputs = {'terminus': {'type': 'string', 'description': 'The terminus to search for.'}}
#     output_type = "list"
#
#     def __init__(self):
#         super().__init__()
#         self.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]
#         }
#
#     def forward(self, terminus: str) -> str:
#         routes = self.terminus_to_route_map.get(terminus.upper())
#         if routes:
#             return routes
#         else:
#             return f"No routes found for terminus '{terminus}'. Available terminus: {list(self.terminus_to_route_map.keys())}"