Spaces:
Sleeping
Sleeping
File size: 3,122 Bytes
a9cfca4 9b5b26a c19d193 8fe992b a9cfca4 9b5b26a a9cfca4 9b5b26a a9cfca4 9b5b26a a9cfca4 9b5b26a a9cfca4 9b5b26a a9cfca4 9b5b26a a9cfca4 9b5b26a 8c01ffb a9cfca4 6aae614 ae7a494 a9cfca4 e121372 a9cfca4 13d500a 8c01ffb a9cfca4 8c01ffb a9cfca4 9b5b26a 8c01ffb a9cfca4 861422e a9cfca4 8c01ffb 8fe992b a9cfca4 8c01ffb a9cfca4 8fe992b a9cfca4 | 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 | from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
@tool
def smart_utility_tool(operation: str, value1: float, value2: float = 0) -> str:
"""
A smart utility tool that performs basic mathematical operations.
Args:
operation: The type of operation to perform.
Options: 'add', 'subtract', 'multiply', 'divide', 'power'
value1: The first numeric value
value2: The second numeric value (optional for some operations)
Returns:
A string containing the result of the operation.
"""
try:
if operation == "add":
result = value1 + value2
elif operation == "subtract":
result = value1 - value2
elif operation == "multiply":
result = value1 * value2
elif operation == "divide":
if value2 == 0:
return "Error: Cannot divide by zero."
result = value1 / value2
elif operation == "power":
result = value1 ** value2
else:
return (
f"Unsupported operation '{operation}'. "
"Choose from: add, subtract, multiply, divide, power."
)
return f"Result: {operation}({value1}, {value2}) = {result}"
except Exception as e:
return f"Error performing operation: {str(e)}"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""
Fetch current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
Returns:
A human-readable string with the current time in that timezone.
"""
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)}"
# --- Final answer tool (keep this) ---
final_answer = FinalAnswerTool()
# --- Model ---
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
custom_role_conversions=None,
)
# --- Pre-made tools ---
web_search = DuckDuckGoSearchTool()
# Tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# --- Load prompts ---
with open("prompts.yaml", "r", encoding="utf-8") as stream:
prompt_templates = yaml.safe_load(stream)
# --- Agent ---
agent = CodeAgent(
model=model,
tools=[
final_answer, # don't remove
web_search, # premade tool
image_generation_tool, # hub tool
get_current_time_in_timezone,
smart_utility_tool,
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates,
)
# --- UI ---
GradioUI(agent).launch()
|