Spaces:
No application file
No application file
| from smolagents import DuckDuckGoSearchTool | |
| from smolagents import Tool | |
| import random | |
| # Initialize the DuckDuckGo search tool | |
| search_tool = DuckDuckGoSearchTool() | |
| class CurrencyConverterTool(Tool): | |
| name = "currency_converter" | |
| description = "Converts amounts between different currencies using dummy exchange rates." | |
| inputs = { | |
| "amount": { | |
| "type": "number", # Cambiado de "float" a "number" | |
| "description": "The amount to convert." | |
| }, | |
| "from_currency": { | |
| "type": "string", | |
| "description": "The source currency code (e.g., USD, EUR, CLP)." | |
| }, | |
| "to_currency": { | |
| "type": "string", | |
| "description": "The target currency code (e.g., USD, EUR, CLP)." | |
| } | |
| } | |
| output_type = "string" | |
| def forward(self, amount: float, from_currency: str, to_currency: str): | |
| # Dummy exchange rates (base: USD) | |
| exchange_rates = { | |
| "USD": 1.0, | |
| "EUR": 0.85, | |
| "CLP": 800.0, | |
| "ARS": 350.0, | |
| "BRL": 5.2, | |
| "MXN": 18.5, | |
| "GBP": 0.75, | |
| "JPY": 110.0, | |
| "CAD": 1.25 | |
| } | |
| # Validate currencies | |
| if from_currency not in exchange_rates or to_currency not in exchange_rates: | |
| available_currencies = ", ".join(exchange_rates.keys()) | |
| return f"Error: Moneda no soportada. Divisas disponibles: {available_currencies}" | |
| # Same currency conversion | |
| if from_currency == to_currency: | |
| return f"{amount:.2f} {from_currency} = {amount:.2f} {to_currency} (misma divisa)" | |
| # Convert to USD first, then to target currency | |
| usd_amount = amount / exchange_rates[from_currency] | |
| converted_amount = usd_amount * exchange_rates[to_currency] | |
| # Add small random variation to simulate real market fluctuations (±2%) | |
| variation = random.uniform(-0.02, 0.02) | |
| converted_amount *= (1 + variation) | |
| return f"{amount:.2f} {from_currency} = {converted_amount:.2f} {to_currency} (tasa simulada)" |