File size: 1,437 Bytes
5831cdb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115169a
 
 
 
 
 
5831cdb
115169a
 
 
 
 
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
import gplace

# %%
def find_place_from_text(location:str):
    """Finds a place and related data from the query text"""
    
    result = gplace.find_place_from_text(location)
    r = result['candidates'][0]
    return f"""
    address: {r['formatted_address']}\n
    location: {r['geometry']['location']}\n
    name: {r['name']}\n
    opening hours: {r['opening_hours']}\n
    rating: {r['rating']}\n
    """
    
def nearby_search(keyword:str, location:str, radius=2000, place_type=None):
    """Searches for many places nearby the location based on a keyword. using keyword like \"coffee shop\", \"restaurants\". radius is the range to search from the location"""
    location = gplace.find_location(location, radius=radius)
    result = gplace.nearby_search(keyword, location, radius)
    
    strout = ""
    for r in result:
        strout = strout + f"""
        address: {r['vicinity']}\n
        location: {r['geometry']['location']}\n
        name: {r['name']}\n
        opening hours: {r['opening_hours']}\n
        rating: {r['rating']}\n
        plus code: {r['plus_code']['global_code']}\n\n
        """
    return strout

# %%
# gplace_tools.py
from langgraph.prebuilt import ToolNode
from langchain_core.tools import tool

find_place_from_text = tool(find_place_from_text)
nearby_search = tool(nearby_search)

tools = [find_place_from_text, nearby_search]

# Create ToolNodes for each tool
tool_node = ToolNode(tools)