Spaces:
Sleeping
Sleeping
File size: 2,520 Bytes
e62c239 a8853dd e62c239 |
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 |
from typing import Any, Dict
from smolagents.tools import Tool
from tools.car_sharing_db import CarSharingDB
class RecordTripTool(Tool):
name = "record_trip"
description = "Records a car sharing trip with starting and ending kilometer readings."
inputs = {
'user_name': {'type': 'string', 'description': 'Name of the user who made the trip'},
'start_km': {'type': 'integer', 'description': 'Starting kilometer reading of the vehicle'},
'end_km': {'type': 'integer', 'description': 'Ending kilometer reading of the vehicle'}
}
output_type = "any"
def __init__(self, db_path="car_sharing.db"):
self.db = CarSharingDB(db_path)
self.is_initialized = True
def forward(self, user_name: str, start_km: int, end_km: int) -> Dict[str, Any]:
"""
Record a car sharing trip in the database.
Args:
user_name: Name of the user who made the trip
start_km: Starting kilometer reading
end_km: Ending kilometer reading
Returns:
A dictionary with the result of the operation
"""
try:
# Ensure kilometers are integers
start_km = int(start_km)
end_km = int(end_km)
# Validate input
if end_km <= start_km:
return {
"success": False,
"error": "End kilometer reading must be greater than start kilometer reading",
"km_traveled": 0
}
# Record the trip
success = self.db.record_trip(user_name, start_km, end_km)
if success:
return {
"success": True,
"user_name": user_name,
"start_km": start_km,
"end_km": end_km,
"km_traveled": end_km - start_km
}
else:
return {
"success": False,
"error": "Failed to record trip",
"km_traveled": 0
}
except ValueError:
return {
"success": False,
"error": "Kilometer readings must be integers",
"km_traveled": 0
}
except Exception as e:
return {
"success": False,
"error": str(e),
"km_traveled": 0
} |