File size: 2,021 Bytes
7ea140d
9b5b26a
 
c19d193
6aae614
9b5b26a
 
13bbe71
9b5b26a
 
b743f91
 
 
 
 
 
 
 
9b5b26a
 
b743f91
 
9b5b26a
b743f91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
 
6aae614
13bbe71
 
ae7a494
7ea140d
13bbe71
 
7ea140d
13d500a
8c01ffb
7ea140d
 
13bbe71
8c01ffb
8fe992b
b743f91
 
 
 
 
 
 
8c01ffb
 
7ea140d
 
8fe992b
 
13bbe71
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
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


@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').
    
    Returns:
        The current local time as a formatted string.
    """
    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 random_welcome_message(name: str) -> str:
    """Generate a random welcome message for a given user.
    
    Args:
        name: The name of the user to greet.
    
    Returns:
        A personalized welcome string.
    """
    import random
    messages = [
        f"Hey {name}, hope your day’s fantastic!",
        f"Welcome aboard, {name}! Ready to explore?",
        f"Good to see you, {name}! Let's create some magic!"
    ]
    return random.choice(messages)


final_answer = FinalAnswerTool()
search_tool = DuckDuckGoSearchTool()
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

model = HfApiModel(
    max_tokens=2048,
    temperature=0.7,
    model_id="Qwen/Qwen2.5-Coder-32B-Instruct"
)

with open("prompts.yaml", "r") as f:
    prompt_templates = yaml.safe_load(f)

agent = CodeAgent(
    model=model,
    tools=[
        final_answer,
        search_tool,
        image_generation_tool,
        get_current_time_in_timezone,
        random_welcome_message
    ],
    max_steps=6,
    verbosity_level=1,
    description="A multi-tool web chatbot and image generator",
    prompt_templates=prompt_templates,
)

GradioUI(agent).launch()