File size: 2,377 Bytes
d7178e7 9b5b26a c19d193 6aae614 9b5b26a d7178e7 9b5b26a d7178e7 9b5b26a 8c01ffb d7178e7 8c01ffb d7178e7 ae7a494 d7178e7 ae7a494 d7178e7 8c01ffb d7178e7 8c01ffb d7178e7 8c01ffb d7178e7 8c01ffb d7178e7 8c01ffb 8fe992b d7178e7 | 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 | from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# API Key for Currency Conversion (Use your own key if needed)
CURRENCY_API_KEY = "https://api.exchangerate-api.com/v4/latest/"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""Fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
try:
tz = pytz.timezone(timezone)
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {timezone} is: {local_time}"
except Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
@tool
def convert_currency(amount: float, from_currency: str, to_currency: str) -> str:
"""Converts an amount from one currency to another using real-time exchange rates.
Args:
amount: The amount of money to convert.
from_currency: The 3-letter currency code to convert from (e.g., USD).
to_currency: The 3-letter currency code to convert to (e.g., EUR).
"""
try:
response = requests.get(f"{CURRENCY_API_KEY}{from_currency}")
data = response.json()
if "rates" not in data or to_currency not in data["rates"]:
return f"Invalid currency code: {from_currency} or {to_currency}. Please check and try again."
rate = data["rates"][to_currency]
converted_amount = round(amount * rate, 2)
return f"{amount} {from_currency} is equal to {converted_amount} {to_currency} at the rate of {rate}."
except Exception as e:
return f"Error fetching exchange rates: {str(e)}"
final_answer = FinalAnswerTool()
# Model Configuration
# Uncomment the model if needed
# model = HfApiModel(
# max_tokens=2096,
# temperature=0.5,
# model_id='Qwen/Qwen2.5-Coder-32B-Instruct', # Alternative model
# custom_role_conversions=None,
# )
# Define Agent with Currency Converter Tool
agent = CodeAgent(
model=None, # Add your model if required
tools=[final_answer, get_current_time_in_timezone, convert_currency],
max_steps=4,
verbosity_level=1,
)
# Launch UI
GradioUI(agent).launch()
|