File size: 1,977 Bytes
4990391
9b5b26a
f78a8ef
 
6aae614
9b5b26a
8563f1a
38abccb
72da679
9b5b26a
670b88c
 
 
38abccb
 
 
670b88c
 
38abccb
 
670b88c
9b5b26a
 
 
 
 
 
8c01ffb
c73fca6
6aae614
ae7a494
38abccb
e121372
8563f1a
38abccb
8563f1a
 
13d500a
8c01ffb
38abccb
c73fca6
 
 
861422e
 
8563f1a
38abccb
8c01ffb
8fe992b
38abccb
8c01ffb
 
 
 
38abccb
 
861422e
8fe992b
 
c73fca6
8563f1a
72da679
b8c8cbd
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
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI

# Define the tool correctly using @tool decorator
@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """
    Fetches the current local time in a specified timezone.

    Parameters:
        timezone (str): The name of the timezone in "Continent/City" format. 
                        Example: "Asia/Kolkata", "America/New_York".

    Returns:
        str: The current time in the given timezone in 'YYYY-MM-DD HH:MM:SS' format, 
             or an error message if the timezone is invalid.
    """
    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)}"

# Load final answer tool
final_answer = FinalAnswerTool()

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

# Import an image generation tool from Hugging Face Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

# Load prompt templates
with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)

# Create the Agent with properly defined tools
agent = CodeAgent(
    model=model,
    tools=[final_answer, DuckDuckGoSearchTool(), get_current_time_in_timezone, image_generation_tool],  
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name="My First SmolAgent",
    description="An AI assistant capable of searching, fetching time, and generating images.",
    prompt_templates=prompt_templates
)

# Launch UI
GradioUI(agent).launch()