File size: 2,714 Bytes
a5348a3
9b5b26a
 
 
c19d193
6aae614
9b5b26a
 
a5348a3
9b5b26a
a5348a3
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
a5348a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
6aae614
a5348a3
e121372
a5348a3
 
 
 
13d500a
8c01ffb
a5348a3
1603278
8c01ffb
861422e
 
9b5b26a
a5348a3
8c01ffb
8fe992b
6f3a5ed
8c01ffb
 
 
 
 
 
861422e
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
74
75
76
77
78
79
80
81
82
83
84
85
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

# Example tool that does nothing yet (you already had this)
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
    """A tool that does nothing yet 
    Args:
        arg1: the first argument
        arg2: the second argument
    """
    return "What magic will you build ?"

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

# Instantiate the pre-made DuckDuckGoSearchTool.
duck_search_tool = DuckDuckGoSearchTool()

# Define a new tool that retrieves the latest AI news and trends.
@tool
def get_latest_ai_news() -> str:
    """A tool to retrieve the latest AI news and trends.
    Returns:
        A string summarizing the latest AI news.
    """
    try:
        query = "latest AI news and trends"
        # Use the DuckDuckGoSearchTool's search method.
        results = duck_search_tool.search(query)
        # For demonstration, assume results is a list of dicts with a "title" key.
        if results:
            # Take the titles of the top 3 search results.
            titles = [result.get("title", "No Title") for result in results[:3]]
            summary = " | ".join(titles)
            return "Latest AI News: " + summary
        else:
            return "No recent AI news found."
    except Exception as e:
        return f"Error fetching AI news: {str(e)}"

final_answer = FinalAnswerTool()

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

# Import tool from Hub (example: text-to-image tool)
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)
    
# Update the agent's tools list to include multiple tools:
agent = CodeAgent(
    model=model,
    tools=[final_answer],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)

GradioUI(agent).launch()