File size: 2,673 Bytes
4bc2273 9b5b26a 4cf9510 6aae614 9b5b26a 5a8c72d 4bc2273 9b5b26a 5a8c72d ceb8bcf 5a8c72d ceb8bcf 5a8c72d 9b5b26a ceb8bcf 5a8c72d ceb8bcf 9b5b26a 8c01ffb 5a8c72d 8c01ffb 5a8c72d e121372 4bc2273 4ac4f4a 4bc2273 13d500a 8c01ffb 5a8c72d 861422e 5a8c72d 8c01ffb 8fe992b 5a8c72d 8c01ffb 5a8c72d 861422e 8fe992b 8dbdcf2 | 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 | 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
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
"""A custom tool that returns a creative message.
Args:
arg1: the first argument
arg2: the second argument
"""
return f"You've invoked the magic of {arg1} with power level {arg2}!"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""Fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
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)}"
@tool
def fetch_weather(city: str) -> str:
"""Fetches current weather data for a given city using OpenWeather API.
Args:
city: Name of the city to fetch weather for.
"""
api_key = "6a0835d57c8fec8315d41ce605ba7b19" # OpenWeather API Key
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
try:
response = requests.get(url)
data = response.json()
if response.status_code == 200:
weather = data["weather"][0]["description"].capitalize()
temp = data["main"]["temp"]
return f"The weather in {city} is {weather} with a temperature of {temp}°C."
else:
return f"Could not retrieve weather data: {data.get('message', 'Unknown error')}"
except Exception as e:
return f"Error fetching weather data: {str(e)}"
final_answer = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud',
custom_role_conversions=None,
)
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, my_custom_tool, get_current_time_in_timezone, fetch_weather, image_generation_tool],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name="Smol Custom Agent",
description="An advanced AI agent with multiple utilities.",
prompt_templates=prompt_templates
)
GradioUI(agent).launch()
|