Spaces:
Sleeping
Sleeping
| 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 | |
| } |