Spaces:
Sleeping
Sleeping
File size: 3,395 Bytes
9b5b26a c19d193 6aae614 8fe992b 9b5b26a 5df72d6 9b5b26a 26001c8 d14c0a6 9b5b26a 26001c8 9b5b26a d14c0a6 26001c8 d14c0a6 26001c8 d14c0a6 26001c8 d14c0a6 26001c8 9b5b26a 8c01ffb 6aae614 ae7a494 e121372 f1ff56d 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b 6e67fed eddcd0e 6e67fed 8c01ffb 861422e 8fe992b 8c01ffb |
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 |
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
# Below is an example of a tool that does nothing. Amaze us with your creativity !
@tool
def animal_battle(arg1: str, arg2: str) -> str:
"""A tool that takes two animals and decides who would win in a fight and why
Args:
arg1: the first animal
arg2: the second animal
"""
animal_stats = {
"lion": {"power": 9, "special": "claws and teeth"},
"elephant": {"power": 10, "special": "size and strength"},
"gorilla": {"power": 8, "special": "strength and arms"},
"tiger": {"power": 9, "special": "speed and power"},
"bear": {"power": 9, "special": "claws and bulk"},
"wolf": {"power": 7, "special": "pack tactics"},
"eagle": {"power": 6, "special": "flight and talons"},
"komodo dragon": {"power": 7, "special": "venom and bite"}
}
arg1 = arg1.lower()
arg2 = arg2.lower()
if arg1 not in animal_stats or arg2 not in animal_stats:
return f"Sorry, I don't have information about one or both of these animals."
if animal_stats[arg1]["power"] > animal_stats[arg2]["power"]:
return f"The {arg1} would win with its {animal_stats[arg1]['special']}!"
elif animal_stats[arg2]["power"] > animal_stats[arg1]["power"]:
return f"The {arg2} would win with its {animal_stats[arg2]['special']}!"
else:
return f"It would be a close fight between the {arg1} and {arg2}!"
@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='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud', # Using the alternative endpoint
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, # Keep this
image_generation_tool, # Image generation
get_current_time_in_timezone, # Already has @tool decorator
animal_battle, # Already has @tool decorator
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch() |