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()