File size: 2,673 Bytes
4bc2273
9b5b26a
 
 
4cf9510
6aae614
9b5b26a
5a8c72d
4bc2273
9b5b26a
5a8c72d
 
ceb8bcf
5a8c72d
 
ceb8bcf
5a8c72d
9b5b26a
 
 
ceb8bcf
 
5a8c72d
ceb8bcf
9b5b26a
 
 
 
 
 
8c01ffb
5a8c72d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
5a8c72d
e121372
4bc2273
 
4ac4f4a
4bc2273
13d500a
8c01ffb
5a8c72d
 
861422e
 
5a8c72d
8c01ffb
8fe992b
5a8c72d
8c01ffb
 
 
 
5a8c72d
 
861422e
8fe992b
 
8dbdcf2
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

@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
    """A custom tool that returns a creative message.
    Args:
        arg1: the first argument
        arg2: the second argument
    """
    return f"You've invoked the magic of {arg1} with power level {arg2}!"

@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """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)}"

@tool
def fetch_weather(city: str) -> str:
    """Fetches current weather data for a given city using OpenWeather API.
    Args:
        city: Name of the city to fetch weather for.
    """
    api_key = "6a0835d57c8fec8315d41ce605ba7b19"  # OpenWeather API Key
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
    try:
        response = requests.get(url)
        data = response.json()
        if response.status_code == 200:
            weather = data["weather"][0]["description"].capitalize()
            temp = data["main"]["temp"]
            return f"The weather in {city} is {weather} with a temperature of {temp}°C."
        else:
            return f"Could not retrieve weather data: {data.get('message', 'Unknown error')}"
    except Exception as e:
        return f"Error fetching weather data: {str(e)}"

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

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=[final_answer, my_custom_tool, get_current_time_in_timezone, fetch_weather, image_generation_tool],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name="Smol Custom Agent",
    description="An advanced AI agent with multiple utilities.",
    prompt_templates=prompt_templates
)

GradioUI(agent).launch()