SergeyO7's picture
Rename app1.py to app1.py1
cd8c7b6 verified
raw
history blame
4.03 kB
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
from skyfield.api import load, Topos
from skyfield.almanac import find_discrete, moon_phase_fraction
import gradio as gr
# Load astronomical data
planets = load('de421.bsp') # Downloaded from JPL Horizons
ts = load.timescale()
# Define Zodiac signs and their boundaries
ZODIAC_SIGNS = [
("Aries", 0, 30),
("Taurus", 30, 60),
("Gemini", 60, 90),
("Cancer", 90, 120),
("Leo", 120, 150),
("Virgo", 150, 180),
("Libra", 180, 210),
("Scorpio", 210, 240),
("Sagittarius", 240, 270),
("Capricorn", 270, 300),
("Aquarius", 300, 330),
("Pisces", 330, 360),
]
def get_moon_position():
"""Calculate the current Moon position in the Zodiac."""
now = datetime.datetime.now(pytz.utc)
t = ts.from_datetime(now)
# Get the geocentric position of the Moon
earth = planets['earth']
moon = planets['moon']
astrometric = earth.at(t).observe(moon)
ra, dec, distance = astrometric.radec()
# Convert RA to degrees
ra_in_degrees = ra._degrees
# Determine the Zodiac sign based on RA
for sign, start, end in ZODIAC_SIGNS:
if start <= ra_in_degrees < end:
return f"{sign} ({start}° - {end}°)"
return "Unknown"
def create_gradio_interface():
"""Create a Gradio interface for the Moon position tool."""
def predict():
moon_pos = get_moon_position()
return f"The Moon is currently in {moon_pos}."
iface = gr.Interface(
fn=predict,
inputs=None,
outputs="text",
title="Moon Position in Zodiac",
description="This tool calculates the current position of the Moon in the Zodiac.",
)
return iface
if __name__ == "__main__":
# Launch the Gradio interface
interface = create_gradio_interface()
interface.launch()
# Below is an example of a tool that does nothing. Amaze us with your creativity !
@tool
def my_custom_tool(arg1:str, arg2:int)-> str: #it's import to specify the return type
#Keep this format for the description / args / args description but feel free to modify the tool
"""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:
# 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()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# 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)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer], ## 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()