Spaces:
Sleeping
Sleeping
File size: 3,007 Bytes
95fed7b 9b5b26a c19d193 6aae614 95fed7b 8fe992b 95fed7b 9b5b26a 95fed7b 9b5b26a 95fed7b 9b5b26a 95fed7b 9b5b26a 95fed7b 9b5b26a 95fed7b 9b5b26a 95fed7b 9b5b26a 8c01ffb 95fed7b 6aae614 ae7a494 95fed7b e121372 95fed7b 13d500a 8c01ffb 95fed7b 9b5b26a 8c01ffb 95fed7b 861422e 95fed7b 8c01ffb 8fe992b 95fed7b 8c01ffb 95fed7b 8fe992b 95fed7b | 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 | 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 # Ensure this exists in your project
# ✅ A creative motivational message tool
@tool
def my_custom_tool(name: str, mood_level: int) -> str:
"""
A tool that generates a motivational message based on the user's name and mood level.
Args:
name: The name of the person.
mood_level: An integer between 1 and 10 indicating the mood (1=low, 10=high).
"""
if not 1 <= mood_level <= 10:
return "Please enter a mood level between 1 and 10."
messages = {
"low": f"Hey {name}, every step you take matters. Keep going—you’ve got this. 🌱",
"medium": f"{name}, you’re doing great! Trust the process and stay consistent. 💪",
"high": f"🔥 {name}, you’re on fire today! Keep shining and inspiring others. 🚀"
}
if mood_level <= 3:
return messages["low"]
elif mood_level <= 7:
return messages["medium"]
else:
return messages["high"]
# ✅ A tool that returns the current time in any valid timezone
@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., 'Africa/Addis_Ababa').
"""
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)}"
# ✅ Required final answer tool
final_answer = FinalAnswerTool()
# ✅ Define the model (Qwen may be overloaded, switch if needed)
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# ✅ Load tool from smol-agents tool hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# ✅ Load system prompts from YAML
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# ✅ Create the code agent with tools
agent = CodeAgent(
model=model,
tools=[
final_answer, # Required final output handler
my_custom_tool, # Motivational tool
get_current_time_in_timezone, # Timezone-aware clock
image_generation_tool, # Optional image generation tool
DuckDuckGoSearchTool(), # Optional web search tool
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name="MotivatorAgent",
description="An agent that motivates, informs, and creates visuals.",
prompt_templates=prompt_templates,
)
# ✅ Launch the UI
GradioUI(agent).launch()
|