File size: 2,808 Bytes
9b5b26a
 
 
 
c19d193
6aae614
8ceaf72
9b5b26a
 
5df72d6
8ceaf72
4a0a9ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ceaf72
9b5b26a
8ceaf72
66f274d
 
9b5b26a
66f274d
9b5b26a
8ceaf72
 
 
24a2e0d
8ceaf72
 
9b5b26a
24a2e0d
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
 
6aae614
e121372
bf6d34c
 
4a0a9ea
 
fe328e0
13d500a
8c01ffb
 
9b5b26a
 
da5c0ef
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
8ceaf72
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
9b5b26a
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
86
87
88
89
90
91
92
93
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
import ephem
from Gradio_UI import GradioUI

# Below is an example of a tool that does nothing. Amaze us with your creativity !

def get_moon_phase_name(phase: float) -> str:
    """Converts moon phase degrees to a human-readable phase name."""
    if phase < 1 or phase > 29:
        return "New Moon"
    elif phase < 7.4:
        return "Waxing Crescent"
    elif phase < 14.8:
        return "First Quarter"
    elif phase < 22.1:
        return "Waxing Gibbous"
    elif phase < 29.5:
        return "Full Moon"
    elif phase < 36.9:
        return "Waning Gibbous"
    elif phase < 44.3:
        return "Last Quarter"
    else:
        return "Waning Crescent"


@tool
def get_moon_phase(date: str) -> str:
    """A tool that calculates the moon phase for a given date.
    
    Args:
        date: The date in 'YYYY-MM-DD' format.
    """
    try:
        parsed_date = ephem.Date(date)
        moon_phase = ephem.Moon(parsed_date).phase
        return f"The moon phase on {date} is approximately {moon_phase:.1f} degrees."
    except Exception as e:
        return f"Error calculating moon phase: {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:
        # Create timezone object
        tz = pytz.timezone(timezone)
        # Get current time in that 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 = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
    #'https://wxknx1kg971u7k1n.us-east-1.aws.endpoints.huggingface.cloud',# it is possible that this model may be overloaded
custom_role_conversions=None,
)


# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
#from tools.moon_phase_tool import get_moon_phase  # Import your custom tool

with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)
    
agent = CodeAgent(
    model=model,
    tools=[final_answer, get_moon_phase], ## add your tools here (don't remove final answer)
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)


GradioUI(agent).launch()