Spaces:
Running
Running
Added moon phase
Browse files- app.py +44 -10
- requirements.txt +1 -0
app.py
CHANGED
|
@@ -4,22 +4,55 @@ import requests
|
|
| 4 |
import pytz
|
| 5 |
import yaml
|
| 6 |
from tools.final_answer import FinalAnswerTool
|
| 7 |
-
|
|
|
|
| 8 |
from Gradio_UI import GradioUI
|
| 9 |
|
| 10 |
|
| 11 |
-
# Below is an example of a tool that does nothing. Amaze us with your creativity !
|
| 12 |
@tool
|
| 13 |
-
def
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
"""A tool that does nothing yet
|
| 18 |
Args:
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
| 21 |
"""
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
|
| 24 |
|
| 25 |
@tool
|
|
@@ -57,6 +90,7 @@ agent = CodeAgent(
|
|
| 57 |
model=model,
|
| 58 |
tools=[
|
| 59 |
final_answer,
|
|
|
|
| 60 |
get_current_time_in_timezone,
|
| 61 |
],
|
| 62 |
max_steps=6,
|
|
|
|
| 4 |
import pytz
|
| 5 |
import yaml
|
| 6 |
from tools.final_answer import FinalAnswerTool
|
| 7 |
+
import datetime
|
| 8 |
+
import ephem
|
| 9 |
from Gradio_UI import GradioUI
|
| 10 |
|
| 11 |
|
|
|
|
| 12 |
@tool
|
| 13 |
+
def get_moon_phase(date=None) -> str:
|
| 14 |
+
"""
|
| 15 |
+
Calculates and returns the current moon phase.
|
| 16 |
+
|
|
|
|
| 17 |
Args:
|
| 18 |
+
date (datetime.date, optional): The date for which to calculate the moon phase. Defaults to today.
|
| 19 |
+
|
| 20 |
+
Returns:
|
| 21 |
+
str: A string describing the moon phase.
|
| 22 |
"""
|
| 23 |
+
|
| 24 |
+
if date is None:
|
| 25 |
+
date = datetime.date.today()
|
| 26 |
+
|
| 27 |
+
observer = ephem.Observer()
|
| 28 |
+
observer.lat = "0"
|
| 29 |
+
observer.lon = "0"
|
| 30 |
+
observer.elevation = 0
|
| 31 |
+
observer.date = date
|
| 32 |
+
|
| 33 |
+
moon = ephem.Moon(observer)
|
| 34 |
+
phase = moon.phase
|
| 35 |
+
|
| 36 |
+
if 0 <= phase < 12.5:
|
| 37 |
+
phase_name = "New Moon"
|
| 38 |
+
elif 12.5 <= phase < 25:
|
| 39 |
+
phase_name = "Waxing Crescent"
|
| 40 |
+
elif 25 <= phase < 37.5:
|
| 41 |
+
phase_name = "First Quarter"
|
| 42 |
+
elif 37.5 <= phase < 50:
|
| 43 |
+
phase_name = "Waxing Gibbous"
|
| 44 |
+
elif 50 <= phase < 62.5:
|
| 45 |
+
phase_name = "Full Moon"
|
| 46 |
+
elif 62.5 <= phase < 75:
|
| 47 |
+
phase_name = "Waning Gibbous"
|
| 48 |
+
elif 75 <= phase < 87.5:
|
| 49 |
+
phase_name = "Third Quarter"
|
| 50 |
+
elif 87.5 <= phase <= 100:
|
| 51 |
+
phase_name = "Waning Crescent"
|
| 52 |
+
else:
|
| 53 |
+
phase_name = "Unknown"
|
| 54 |
+
|
| 55 |
+
return f"{phase_name} ({phase:.2f}%) on {date}"
|
| 56 |
|
| 57 |
|
| 58 |
@tool
|
|
|
|
| 90 |
model=model,
|
| 91 |
tools=[
|
| 92 |
final_answer,
|
| 93 |
+
get_moon_phase,
|
| 94 |
get_current_time_in_timezone,
|
| 95 |
],
|
| 96 |
max_steps=6,
|
requirements.txt
CHANGED
|
@@ -3,3 +3,4 @@ smolagents
|
|
| 3 |
requests
|
| 4 |
duckduckgo_search
|
| 5 |
pandas
|
|
|
|
|
|
| 3 |
requests
|
| 4 |
duckduckgo_search
|
| 5 |
pandas
|
| 6 |
+
ephem
|