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 }