File size: 1,768 Bytes
da904c3
9b5b26a
 
c19d193
da904c3
787c076
8fe992b
da904c3
 
9b5b26a
 
da904c3
9b5b26a
787c076
 
9b5b26a
787c076
9b5b26a
787c076
 
 
 
 
33f39df
 
9b5b26a
da904c3
9b5b26a
 
da904c3
9b5b26a
da904c3
9b5b26a
 
 
 
 
 
 
8c01ffb
db30d68
da904c3
 
 
 
 
 
 
 
6aae614
ae7a494
da904c3
861422e
da904c3
8c01ffb
8fe992b
da904c3
 
787c076
da904c3
 
8c01ffb
 
da904c3
8fe992b
 
da904c3
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
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
import uuid
import urllib.parse

from smolagents.agent_types import AgentImage
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI


@tool
def wikipedia_url(query: str) -> str:
    """A tool that provides the URL to the wikipedia article for a query.
    Args:
        query: Topic to search on Wikipedia.
    """
    try:
        q = query.strip()
        if not q:
            return "Please provide a non-empty query."
        return "https://en.wikipedia.org/wiki/Special:Search?search=" + urllib.parse.quote(q)
    except Exception as e:
        return f"Error fetching URL for query '{q}': {str(e)}"


@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """Fetch the current local time in a specified timezone.
    Args:
        timezone: A valid timezone string (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)}"


# Model
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
    custom_role_conversions=None,
)

final_answer = FinalAnswerTool()

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

agent = CodeAgent(
    model=model,
    tools=[
        final_answer,
        wikipedia_url,
        get_current_time_in_timezone,
    ],
    max_steps=6,
    verbosity_level=1,
    prompt_templates=prompt_templates,
)

GradioUI(agent).launch()