File size: 2,202 Bytes
19d76a8
9b5b26a
 
c19d193
6aae614
9b5b26a
 
e1cf16a
9b5b26a
e1cf16a
 
 
9b5b26a
e1cf16a
 
 
 
 
9b5b26a
e1cf16a
9b5b26a
e1cf16a
9b5b26a
 
e1cf16a
 
9b5b26a
e1cf16a
 
 
 
9b5b26a
 
 
 
 
e1cf16a
 
 
 
 
8c01ffb
e1cf16a
 
8c01ffb
e1cf16a
6aae614
e1cf16a
 
e121372
e1cf16a
 
 
13d500a
8c01ffb
e1cf16a
861422e
 
e1cf16a
 
8c01ffb
8fe992b
e1cf16a
 
 
 
 
 
 
8c01ffb
 
861422e
8fe992b
 
e1cf16a
 
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 pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI

# 🛠️ Custom tool for demonstration purposes
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
    """A placeholder tool that returns a static response.
    
    Args:
        arg1: The first argument (string).
        arg2: The second argument (integer).

    Returns:
        str: A message indicating the tool's response.
    """
    return f"Received {arg1} and {arg2}. What magic will you build?"

# 🕒 Tool to get current time in a specific timezone
@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """Fetches the current local time in a given timezone.
    
    Args:
        timezone: A valid timezone string (e.g., 'America/New_York').
    
    Returns:
        str: 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 pytz.UnknownTimeZoneError:
        return f"Error: Invalid timezone '{timezone}'. Please provide a valid timezone."

# 🔍 DuckDuckGo Search Tool
search_tool = DuckDuckGoSearchTool()

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

# ✅ Final Answer Tool
final_answer = FinalAnswerTool()

# 🤖 LLM Model Configuration
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct'
)

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

# 🧠 Creating the AI Agent with multiple tools
agent = CodeAgent(
    model=model,
    tools=[
        final_answer, 
        my_custom_tool, 
        get_current_time_in_timezone, 
        search_tool, 
        image_generation_tool
    ],  # Added all tools
    max_steps=6,
    verbosity_level=1,
    prompt_templates=prompt_templates
)

# 🚀 Launch the Gradio UI
GradioUI(agent).launch()