Spaces:
Runtime error
Runtime error
File size: 4,235 Bytes
115169a 5831cdb 7118dfb 5831cdb 7118dfb 5831cdb 7118dfb 5831cdb 0189767 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 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import gplace\n",
"\n",
"location = \"13.744677,100.5295593\" # Latitude and Longitude\n",
"keyword = \"ร้านกาแฟ\"\n",
"result = gplace.nearby_search(keyword, location)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def find_place_from_text(location:str):\n",
" \"\"\"Finds a place and related data from the query text\"\"\"\n",
" \n",
" result = gplace.find_place_from_text(location)\n",
" r = result['candidates'][0]\n",
" return f\"\"\"\n",
" address: {r['formatted_address']}\\n\n",
" location: {r['geometry']['location']}\\n\n",
" name: {r['name']}\\n\n",
" opening hours: {r['opening_hours']}\\n\n",
" rating: {r['rating']}\\n\n",
" \"\"\"\n",
" \n",
"def nearby_search(keyword:str, location:str, radius=2000, place_type=None):\n",
" \"\"\"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\"\"\"\n",
" location = gplace.find_location(location, radius=radius)\n",
" result = gplace.nearby_search(keyword, location, radius)\n",
" \n",
" strout = \"\"\n",
" for r in result:\n",
" # Use .get() to handle missing keys\n",
" address = r.get('vicinity', 'N/A')\n",
" location_info = r.get('geometry', {}).get('location', 'N/A')\n",
" name = r.get('name', 'N/A')\n",
" opening_hours = r.get('opening_hours', 'N/A')\n",
" rating = r.get('rating', 'N/A')\n",
" plus_code = r.get('plus_code', {}).get('global_code', 'N/A')\n",
" \n",
" strout += f\"\"\"\n",
" address: {address}\\n\n",
" location: {location_info}\\n\n",
" name: {name}\\n\n",
" opening hours: {opening_hours}\\n\n",
" rating: {rating}\\n\n",
" plus code: {plus_code}\\n\\n\n",
" \"\"\"\n",
" return strout\n",
"\n",
"def nearby_dense_community(location:str, radius:int=2000):\n",
" \"\"\" getting nearby dense community such as (community mall, hotel, school, etc), by geomatric location, radius(in meters)\n",
" return list of location community nearby, name, community type.\n",
" \"\"\"\n",
" result = gplace.nearby_dense_community(location, radius)\n",
" \n",
" strout = \"\"\n",
" for r in result:\n",
" # Use .get() to handle missing keys\n",
" address = r.get('vicinity', 'N/A')\n",
" location_info = r.get('geometry', {}).get('location', 'N/A')\n",
" name = r.get('name', 'N/A')\n",
" opening_hours = r.get('opening_hours', 'N/A')\n",
" rating = r.get('rating', 'N/A')\n",
" plus_code = r.get('plus_code', {}).get('global_code', 'N/A')\n",
" \n",
" strout += f\"\"\"\n",
" name: {address}\\n\n",
" types: {location_info}\\n\n",
" \"\"\"\n",
" return strout"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# gplace_tools.py\n",
"from langgraph.prebuilt import ToolNode\n",
"from langchain_core.tools import tool\n",
"\n",
"find_place_from_text = tool(find_place_from_text)\n",
"nearby_search = tool(nearby_search)\n",
"\n",
"tools = [find_place_from_text, nearby_search]\n",
"\n",
"# Create ToolNodes for each tool\n",
"tool_node = ToolNode(tools)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|