File size: 2,441 Bytes
9fb2c0b
9b5b26a
 
 
c19d193
6aae614
9b5b26a
 
9fb2c0b
eb31f6c
9b5b26a
eb31f6c
 
9b5b26a
eb31f6c
 
9b5b26a
eb31f6c
 
 
 
 
 
 
 
 
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
eb31f6c
6aae614
ae7a494
eb31f6c
9fb2c0b
 
eb31f6c
 
 
13d500a
8c01ffb
eb31f6c
9b5b26a
8c01ffb
eb31f6c
 
861422e
eb31f6c
 
8c01ffb
8fe992b
eb31f6c
 
 
 
 
 
8c01ffb
 
 
 
 
 
eb31f6c
8fe992b
 
eb31f6c
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
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI


# --- Tools ---
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
    """A tool that changes your height from metric to imperial 
    Args:
        arg1: your name
        arg2: your height in metric system (centimeters)
    """
    afeet = 30.48        # cm per foot
    ainch = 2.54         # cm per inch

    # keep your logic, just truncate feet (no decimals)
    the_feet = int(arg2 // afeet)          # whole feet
    remainder = arg2 - the_feet * afeet    # leftover cm
    the_inch = remainder / ainch           # inches from leftover

    return f"Height of {arg1} in imperial units: {the_feet} ft {the_inch:.2f} in"

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

# --- Final answer tool required by the template ---
final_answer = FinalAnswerTool()

# --- Model (use this on HF Spaces; it reads HF_TOKEN automatically) ---
model = HfApiModel(
    model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
    max_tokens=2096,
    temperature=0.5,
    custom_role_conversions=None,
)

# Import tool from Hub (image generation) and set up web search
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

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

# --- Agent: register ALL the tools here ---
agent = CodeAgent(
    model=model,
    tools=[
        final_answer,              # do not remove
        my_custom_tool,            # your converter
        get_current_time_in_timezone,
        image_generation_tool,     # HF Hub tool
    ],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates,
)

GradioUI(agent).launch()