Spaces:
Sleeping
Sleeping
File size: 2,360 Bytes
3121027 9b5b26a c19d193 6aae614 3121027 ebaf70b 5591fd4 3121027 23f40a4 3121027 5591fd4 23f40a4 3121027 5591fd4 23f40a4 3121027 23f40a4 5591fd4 23f40a4 5591fd4 23f40a4 3121027 23f40a4 3121027 23f40a4 3121027 23f40a4 3121027 23f40a4 3121027 23f40a4 3121027 23f40a4 |
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 |
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
@tool
def calculator(operation: str) -> str:
"""A simple calculator tool that safely evaluates basic math expressions.
Args:
operation: The mathematical expression to evaluate (e.g., "2 + 2", "5 * 3").
Supports basic operations (+, -, *, /) and parentheses.
Returns:
str: The result of the calculation or an error message
"""
try:
allowed_chars = set("0123456789+-*/ .()")
if not all(c in allowed_chars for c in operation):
return "Error: Only basic math operations allowed"
result = eval(operation, {"__builtins__": {}})
return f"Result: {result}"
except Exception as e:
return f"Error calculating {operation}: {str(e)}"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""Get the current time in a specified timezone.
Args:
timezone: The name of the timezone to get time for (e.g., 'America/New_York',
'Asia/Tokyo', 'UTC'). Must be a valid timezone string.
Returns:
str: The current time in the specified timezone or an error message
"""
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)}"
# Initialize components
final_answer = FinalAnswerTool()
# Initialize the model
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# Load prompt templates
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# Initialize agent with all tools
agent = CodeAgent(
model=model,
tools=[
final_answer,
calculator,
get_current_time_in_timezone
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# Launch Gradio UI
if __name__ == "__main__":
GradioUI(agent).launch() |