CatoG commited on
Commit
36c40b0
·
1 Parent(s): 3d97c93

Add tool - Identify user location

Browse files
Files changed (1) hide show
  1. app.py +24 -0
app.py CHANGED
@@ -7,6 +7,7 @@ import traceback
7
  from datetime import datetime, timezone
8
  from typing import Dict, List, Optional, Tuple
9
 
 
10
  from dotenv import load_dotenv
11
 
12
  warnings.filterwarnings("ignore", category=UserWarning, module="wikipedia")
@@ -400,6 +401,28 @@ def generate_uuid(_: str = "") -> str:
400
  return str(uuid.uuid4())
401
 
402
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  ALL_TOOLS = {
404
  "add_numbers": add_numbers,
405
  "subtract_numbers": subtract_numbers,
@@ -418,6 +441,7 @@ ALL_TOOLS = {
418
  "wikipedia_chaos_oracle": wikipedia_chaos_oracle,
419
  "random_number": random_number,
420
  "generate_uuid": generate_uuid,
 
421
  }
422
  TOOL_NAMES = list(ALL_TOOLS.keys())
423
 
 
7
  from datetime import datetime, timezone
8
  from typing import Dict, List, Optional, Tuple
9
 
10
+ import requests
11
  from dotenv import load_dotenv
12
 
13
  warnings.filterwarnings("ignore", category=UserWarning, module="wikipedia")
 
401
  return str(uuid.uuid4())
402
 
403
 
404
+ @tool
405
+ def get_user_location(_: str = "") -> str:
406
+ """Determine the user's approximate physical location based on their public IP address."""
407
+ try:
408
+ response = requests.get("http://ip-api.com/json/", timeout=5)
409
+ response.raise_for_status()
410
+ data = response.json()
411
+ if data.get("status") != "success":
412
+ return f"Location lookup failed: {data.get('message', 'unknown error')}"
413
+ return (
414
+ f"City: {data.get('city', 'N/A')}\n"
415
+ f"Region: {data.get('regionName', 'N/A')}\n"
416
+ f"Country: {data.get('country', 'N/A')} ({data.get('countryCode', 'N/A')})\n"
417
+ f"Latitude: {data.get('lat', 'N/A')}\n"
418
+ f"Longitude: {data.get('lon', 'N/A')}\n"
419
+ f"Timezone: {data.get('timezone', 'N/A')}\n"
420
+ f"ISP: {data.get('isp', 'N/A')}"
421
+ )
422
+ except requests.RequestException as exc:
423
+ return f"Location lookup failed: {exc}"
424
+
425
+
426
  ALL_TOOLS = {
427
  "add_numbers": add_numbers,
428
  "subtract_numbers": subtract_numbers,
 
441
  "wikipedia_chaos_oracle": wikipedia_chaos_oracle,
442
  "random_number": random_number,
443
  "generate_uuid": generate_uuid,
444
+ "get_user_location": get_user_location,
445
  }
446
  TOOL_NAMES = list(ALL_TOOLS.keys())
447