File size: 2,236 Bytes
c356aaf
9b5b26a
 
 
c19d193
6aae614
9b5b26a
 
c356aaf
9b5b26a
 
c356aaf
d717ca6
258aed8
9b5b26a
d717ca6
258aed8
c356aaf
d717ca6
9b5b26a
 
 
 
 
 
 
8c01ffb
c356aaf
 
 
d717ca6
258aed8
c356aaf
d717ca6
 
258aed8
c356aaf
d717ca6
c356aaf
 
258aed8
c356aaf
 
 
 
 
 
8c01ffb
6aae614
ae7a494
e121372
c356aaf
 
d717ca6
c356aaf
13d500a
8c01ffb
d717ca6
9b5b26a
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
d717ca6
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
c356aaf
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
70
71
72
73
74
75
76
77
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


@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """
    Fetches the current local time for the specified timezone.

    Args:
        timezone: A valid timezone string.

    Returns:
        A string message with the current local time, or an error message.
    """
    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 calculator_tool(expression: str) -> str:
    """
    Evaluates a mathematical expression.

    Args:
        expression: A string representing a mathematical expression.
                    Supported operators: +, -, *, /, **, and %.

    Returns:
        A string representing the result of the calculation, or an error message if evaluation fails.
    """
    try:
        # Evaluate the expression in a restricted environment for safety.
        result = eval(expression, {"__builtins__": {}}, {})
        if isinstance(result, float) and result.is_integer():
            result = int(result)
        return str(result)
    except Exception as e:
        return f"Error evaluating expression: {e}"

final_answer = FinalAnswerTool()

model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
    custom_role_conversions=None,
)

# Import tool from Hub (e.g., text-to-image)
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)
    
agent = CodeAgent(
    model=model,
    tools=[final_answer, calculator_tool],  # Added final_answer and our calculator tool
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)

GradioUI(agent).launch()