File size: 2,466 Bytes
9b5b26a
 
 
 
c19d193
b47b74f
6aae614
8fe992b
9b5b26a
 
 
70ab0ed
c15132c
d04fa28
82cb402
9b5b26a
8f60e84
82cb402
 
70ab0ed
9b5b26a
d04fa28
f0d51be
d04fa28
d0abf90
d04fa28
47e834e
 
d0abf90
 
10f3599
d0abf90
b1d99f4
d0abf90
 
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
 
6aae614
e121372
bf6d34c
 
b177492
fe328e0
13d500a
8c01ffb
 
9b5b26a
 
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
2e3b5ed
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
9b5b26a
8c01ffb
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
78
79
80
81
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
import urllib.parse
from tools.final_answer import FinalAnswerTool

from Gradio_UI import GradioUI

@tool
def calculator(expression: str)-> str: # Returns a string result
    """
    A tool able to solve mathematical expressions using the mathjs.org API.
    
    Args:
        expression: A mathematical expression to solve (e.g., "1+2", "3*5").
        
    Returns:
        str: The result of the calculation if successful, or an error message if the request fails.
    """
    # URL-encode to ensure correct API interpretation
    encoded_expression = urllib.parse.quote(expression, safe="") 

    try:
        api_url = f"http://api.mathjs.org/v4/?expr={encoded_expression}"

        response = requests.get(api_url)

        if response.status_code == 200:
            return f"Result: {response.text}"
        else:
            return f"Error: {response.text}"
    except Exception as e:
        return f"Error: {str(e)}"

@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """A tool that fetches the current local time in a specified timezone.
    Args:
        timezone: A string representing a valid timezone (e.g., 'America/New_York').
    """
    try:
        # Create timezone object
        tz = pytz.timezone(timezone)
        # Get current time in that 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)}"


final_answer = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
# model_id='replace_with_your_inference_endpoint', # Replace with your inference endpoint
custom_role_conversions=None,
)


# Import tool from Hub
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, get_current_time_in_timezone, image_generation_tool], ## add your tools here (don't remove final answer)
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)


GradioUI(agent).launch()