Spaces:
Sleeping
Sleeping
File size: 3,847 Bytes
4974ecd 9b5b26a c19d193 4974ecd 9b5b26a 4974ecd 9b5b26a 4974ecd 9b5b26a 4974ecd 9b5b26a 4974ecd 9b5b26a 4974ecd 9b5b26a 4974ecd 9b5b26a 4974ecd 9b5b26a 8c01ffb 6aae614 ae7a494 4974ecd e121372 4974ecd 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e 4974ecd 8c01ffb 8fe992b 4974ecd 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 94 95 96 97 98 |
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
# Updated with a useful function that provides information about a location
@tool
def my_custom_tool(location: str, details_required: str = "general") -> str:
"""A tool that fetches information about a specified location.
Args:
location: The name of the location to get information about
details_required: The type of information required (general, weather, population)
"""
try:
# This is a simple implementation - in a real scenario you might use an API
if details_required.lower() == "weather":
# Simulate a weather API call
weather_conditions = ["sunny", "cloudy", "rainy", "snowy", "windy"]
import random
condition = random.choice(weather_conditions)
temp = random.randint(0, 35) # Celsius
return f"Current weather in {location}: {condition}, {temp}°C"
elif details_required.lower() == "population":
# Simulate population data lookup
# In real implementation, you would fetch from a database or API
populations = {
"new york": "8.4 million",
"tokyo": "14 million",
"london": "9 million",
"paris": "2.1 million",
"sydney": "5.3 million"
}
location_lower = location.lower()
if location_lower in populations:
return f"The population of {location} is approximately {populations[location_lower]}."
else:
return f"Population data for {location} not found in the database."
else: # general information
return f"Here is general information about {location}. This is a placeholder - in a real implementation, this would fetch actual data about the location."
except Exception as e:
return f"Error fetching information for '{location}': {str(e)}"
@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='Qwen/Qwen2.5-Coder-32B-Instruct', # it is possible that this model may be overloaded
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, my_custom_tool, get_current_time_in_timezone, image_generation_tool], # add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch() |