File size: 2,102 Bytes
8a3a1b0
23f1de5
 
d21456e
 
 
 
 
23f1de5
e3a00e4
 
 
 
 
23f1de5
 
 
 
 
d21456e
 
 
e3a00e4
 
 
 
d21456e
 
 
 
 
 
 
23f1de5
 
 
 
 
 
 
 
 
 
 
 
 
d21456e
e121372
23f1de5
 
163c6a0
13d500a
8c01ffb
8b2aa52
 
 
 
0a2fec1
ffb4caa
8b2aa52
 
d21456e
 
23f1de5
8c01ffb
8fe992b
1e0b078
8c01ffb
1e0b078
d21456e
8fe992b
 
8c01ffb
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
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
import datetime
import pytz
import yaml

@tool
def is_prime(num: int) -> str:
    """A tool that determines if an input number is prime and returns a string result.
    Args:
        num: A int that is to be checked for being prime.
    """
    
    try:
        prime = check_prime(num)
        return f"The number {num} is {'Prime!!!' if prime else 'not Prime :('}"
    except Exception as e:
        return f"Error calculating primeness '{num}': {str(e)}"

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

def check_prime(n):
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    i = 5
    while i * i <= n:
        if n % i == 0 or n % (i + 2) == 0:
            return False
        i += 6
    return True

model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud/',
)

# Define tools list
tools = {
    "final_answer": FinalAnswerTool(),
    "is_prime": is_prime,
    "get_current_time_in_timezone": get_current_time_in_timezone,
    "image_generation_tool": load_tool("agents-course/text-to-image", trust_remote_code=True)
}

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

agent = CodeAgent(
    model=model,
    tools=list(tools.values()),
    max_steps=6,
    verbosity_level=2,
    prompt_templates=prompt_templates
)

GradioUI(agent).launch()