File size: 2,474 Bytes
1c13e02
9b5b26a
 
c19d193
6aae614
9b5b26a
bf109dc
9b5b26a
1c13e02
 
bf109dc
 
 
 
 
 
 
 
 
 
 
d3e7438
 
bf109dc
d3e7438
bf109dc
d3e7438
 
 
 
bf109dc
d3e7438
bf109dc
9b5b26a
 
047ca60
49dc267
047ca60
49dc267
9b5b26a
 
 
 
 
 
8c01ffb
1c13e02
 
 
e121372
dff721e
 
1c13e02
13d500a
8c01ffb
1c13e02
 
047ca60
 
 
0805827
1c13e02
861422e
 
dff721e
1c13e02
8c01ffb
8fe992b
047ca60
bf109dc
7e1b4ff
047ca60
 
 
8c01ffb
 
861422e
8fe992b
 
1c13e02
047ca60
 
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
82
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
import re

# --- CUSTOM TOOLS ---

#@tool
#def my_custom_tool(arg1:str, arg2:int)-> str: # it's important to specify the return type
    # Keep this format for the tool description / args description but feel free to modify the tool
#    """A tool that does nothing yet 
#    Args:
#        arg1: the first argument
#        arg2: the second argument
#    """
#    return "What magic will you build ?"

@tool
def get_pirate_quest(difficulty: str) -> str:
    """Generates a random pirate mission based on difficulty.
    Args:
        difficulty: How hard the quest should be ('easy', 'medium', 'hard').
    """
    quests = {
        "easy": "Find the hidden rum on Tortuga.",
        "medium": "Battle a small merchant sloop.",
        "hard": "Defeat the Kraken in the Bermuda Triangle!"
    }
    return quests.get(difficulty.lower(), "Just scrub the deck for now.")

@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:
        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)}"

# --- AGENT SETUP ---

# Initialize the Model (Updated to Qwen 2.5)
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
)

# Load the external Image Tool
# Make sure to run: pip install --upgrade smolagents
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

final_answer = FinalAnswerTool()

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

# Initialize the Agent with ALL tools
agent = CodeAgent(
    model=model,
    tools=[
        final_answer,
        get_pirate_quest,
        get_current_time_in_timezone, 
        image_generation_tool
    ], 
    max_steps=6,
    verbosity_level=1,
    prompt_templates=prompt_templates
)

# Launch the custom UI you provided
if __name__ == "__main__":
    GradioUI(agent).launch()