Spaces:
Sleeping
Sleeping
File size: 3,093 Bytes
17188a5 9b5b26a c19d193 6aae614 5a96d7e 9b5b26a f22423f 9b5b26a 17188a5 9b5b26a c29159c 5a96d7e 9b5b26a 4d29935 5a96d7e 9b5b26a 5a96d7e f22423f b7a4edb f22423f b7a4edb 5a96d7e 9b5b26a 17188a5 9b5b26a 8c01ffb 6aae614 e121372 17188a5 13d500a 8c01ffb 9b5b26a 8c01ffb 17188a5 861422e 17188a5 8c01ffb 8fe992b d3f16d6 5a96d7e fe4a180 d3f16d6 8c01ffb 17188a5 8fe992b 9b5b26a 17188a5 |
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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
import datetime
import ephem
from Gradio_UI import GradioUI
from datetime import timedelta
@tool
def get_moon_phase(date: datetime.date) -> str:
"""
Calculates and returns the current moon phase.
Args:
date: The date for which to calculate the moon phase. Defaults to today.
Returns:
str: A string describing the moon phase.
"""
if date is None:
date = datetime.date.today()
observer = ephem.Observer()
observer.lat = "0"
observer.lon = "0"
observer.elevation = 0
observer.date = date
moon = ephem.Moon(observer)
phase = moon.phase
observer.date = date - timedelta(days=1)
moon = ephem.Moon(observer)
yesterday_phase = moon.phase
if phase > yesterday_phase:
phase_trend = "Waxing"
else:
phase_trend = "Waning"
if 0 <= phase < 1:
phase_name = "New Moon 🌑"
elif 1 <= phase < 49:
if phase_trend == "Waxing":
phase_emoji = "🌒"
else:
phase_emoji = "🌘"
phase_name = f"{phase_trend} Crescent {phase_emoji}"
elif phase == 50:
if phase_trend == "Waxing":
phase_name = "First Quarter 🌓"
else:
phase_name = "Last Quarter 🌗"
elif 51 <= phase < 99:
if phase_trend == "Waxing":
phase_emoji = "🌔"
else:
phase_emoji = "🌖"
phase_name = f"{phase_trend} Gibbous {phase_emoji}"
elif phase == 100:
phase_name = "Full Moon 🌕"
return f"{phase_name} ({phase:.2f}%) on {date}"
@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",
custom_role_conversions=None,
)
# Import tool from Hub
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,
get_moon_phase,
get_current_time_in_timezone,
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates,
)
GradioUI(agent).launch()
|